Echo/Docs

CLI command

diagnostics

The integration failure log: every provider call Echo made through Stado's integration API, every Brama model call through the Stado model router and every Weles call that did not give it a result, with what Echo sent and what came back.

Invocation#

Shell
echo-cli diagnostics integrations --since <ISO instant> [--operation <operation>]

Inputs and output#

An indented JSON array of the failed calls since --since, newest first: id, occurred_at, domain (content, echo-paid-ads, brama for a model call, weles for a Weles call, preferences for a Preferences call, wikidata for a Wikidata entity read, umami for an Umami API call, landing-revalidation for a landing's revalidation hook), operation as Stado names it (for example resend.email.send or campaigns.create; chat.completions, embeddings or decisions for a model call; the Weles path for a Weles call, such as /run for an account action run, /records/accounts/update or /pages/snapshot; the method and path for a Preferences call, such as POST /api/submissions; Special:EntityData for a Wikidata read; the method and path for an Umami call, such as POST /api/auth/login, GET /api/websites or GET /api/websites/:websiteId/stats; POST revalidate for a revalidation hook), request (what Echo sent, which names the record it was acting on; for a model call the route, the names of the tools or questions it offered and how many messages or inputs, never the text or state; for a page read the page's url; for another Weles call the names of the fields it sent, never their values; for a Preferences call the method and path, never the body or its images; for a Wikidata read the entity id; for an Umami call the account's credential id, the website and range read or the page listed, and for a login the fields tried, never the password; for a revalidation the surface and slug), kind (unreachable: no answer came back; refused: Stado, Weles or the provider answered with an error status; invalid: the answer carried no result), http_status (null only when unreachable, and for an Umami login, whose every refusal is kept in response_body), response_body and error. --operation narrows the list to one operation.

State effect#

The command calls Echo Web's GET /api/diagnostics/integrations with ECHO_INTERNAL_BEARER at ECHO_WEB_BASE_URL; the Integrations tab of /diagnostics shows the same rows grouped by operation with how often and how each last failed, the Integration failures section of Echo Desktop's GEO screen shows them grouped by operation too, and echo-mcp reads them (echo_list_integration_failures). Every call through Stado's integration API that fails, every Brama model call the Stado model router could not be reached for or answered with an error status, every Weles call (account action runs, record reads and writes, rendered page reads) Weles could not be reached for, refused or answered without a result, every Preferences operator call (thumbnail and caption rankings), every Wikidata entity read (listings read from Wikidata), every Umami API call (a login refused under both the username and the email field, a website list, a website's stats or metrics read, a website created) and every landing revalidation hook call (after a blog post is published, edited, archived or restored) that could not reach the service, was refused or answered with a body that is not JSON, is written once, when it fails, and the error the caller sees names the operation, the status and the body; a call that worked writes nothing. When the log write itself fails, the caller's error names that beside the call's own. Direct fetches of operator-named pages (changelogs, webhooks, live pages a site audit reads), whose failures are kept with the record they belong to, are not in this log.

Refusals#

  • A wrong invocation is refused before anything is sent: "diagnostics takes integrations --since <ISO instant> [--operation <operation>]; got <word>", "diagnostics integrations does not take <flag>; it takes --since, --operation", "<flag> needs a value" and "diagnostics integrations needs --since <ISO instant>: the start of the window to read".
  • Echo Web's refusal is printed as "Echo Web refused GET /api/diagnostics/integrations… with HTTP <status>: <its answer>": a bad request with "since is required" or "since must be an ISO instant, got \"<value>\""; a read that failed with "the integration failures could not be read: <cause>".