Troubleshooting
Seven problems cover nearly every support thread. Each section says what you're seeing, what it means, and what to do. If none fits, email team@ansvar.eu with the tool call and the exact error text.
The OAuth window never opens
Your client is blocking the popup, or your network blocks auth.ansvar.eu. Allow popups for the client, check outbound HTTPS to auth.ansvar.eu, and retry the connect. CLI clients (Claude Code /mcp, Gemini CLI /mcp auth ansvar) print the URL — open it by hand if the browser doesn't launch.
Works for a few minutes, then 401s
A pasted access token expired — gateway tokens live minutes by design. Don't paste tokens: connect via the client's OAuth flow (tokens then refresh silently), use the mcp-remote bridge, or a managed service credential for headless setups — see Clients without OAuth. If OAuth itself was working and a long session starts failing, your client may hold a stale token: reconnect (Gemini CLI needs v0.44.0+ for mid-session refresh — see Connect Gemini).
404 on connect
The MCP endpoint is https://gateway.ansvar.eu/mcp — the bare host without /mcp returns 404. Also restart the client after editing config; most MCP clients read it only at launch.
"Available on the … plan" refusals
The tool exists but not for your plan. Tier-gated tools are absent from tools/list; if your agent calls one anyway, the gateway returns a tool result with isError: true and a text such as "register_document is available on the Team plan and above; your plan is Premium, so the tool is not in your tools list. Tell the user; do not retry this call." followed by a link to compare plans. That example is the classic case: a document-plane tool called on Premium (the document plane is Team+). Two variants: the arch_* tools belong to the Ansvar architecture workspace, which runs on your own machine or plane and is not served by the hosted gateway on any plan (the refusal links to the workspace evaluation); a few tools are not open to customer accounts at present on any plan, and their refusal links to contact.
JSON-RPC -32601 ("Method not found") now means the gateway does not offer that name to you at all: usually a misspelt or invented tool name, or a stale tool list in your client. Refresh the client's tool list and use a name from tools/list.
start_workflow is on every tier, so a refusal there is usually a different shape: a workflow TYPE your plan cannot start (Free and Solo start the seven included types — threat model, gap analysis incl. its NIS2/DORA/CRA/AI-Act variants, and DPIA; the rest of the catalog starts at Premium), or the monthly run allowance already spent — both come back as a refusal naming the reason, not as a missing tool. It's a tier gate, not an outage. Check the tool reference for what each tier includes, or ask your agent to run describe_capabilities.
A tool can also lack a supported source for the scope you requested. get_changes now has a Dutch-law feed; that does not make history available for every jurisdiction. Read the refusal's supported_scopes and the live capability response. A corpus-local history API does not imply a gateway diff route: no gateway diff scope is available at this review (7 September 2026). For newly published acts, use search_regulatory_updates (Premium and above); to re-fetch a citation's current text, use validate_citation.
A third shape is client-side and never reaches the gateway: if your MCP client lets you enable a subset of the tools it discovers and the lookup tools were left off, an agent following a row's _citation.lookup hint has no get_provision, get_decision or get_preparatory_work to call, and says so in words that sound like a plan limit — see the tool reference.
"cap_exceeded" (JSON-RPC -32000)
A daily quota or concurrency cap. The error is structured — your agent can read it:
{ "code": -32000, "data": { "cause": "cap_exceeded", "...": "..." } }Daily search quotas: Free 100/day; Solo 750/day; Premium 5,000 per seat/day; Team 50,000 and Company 500,000 pooled per organization. Quotas reset daily; per-minute rate limits are separate and much higher. Run get_my_capabilities for your account's live numbers.
Zero results — but no error
The gateway fails closed: real failures come back as errors, so a clean empty result means no strict match for those terms. Four usual causes:
- No scope.
searchrequires at least one ofjurisdictions,frameworks,sectors, orsources. - Relaxed matches withheld. By default the gateway withholds broadened matches and tells you how many it held back. Retry with a synonym; if the response still reports withheld relaxed matches (
meta.broadening_availableis true, ormeta.messagesays so), the agent tells the user and offers a re-run withallow_broadening=true, and runs it only if they accept — returned rows are stampedmatch_mode: "broadened", so label them as relaxed matches. The full recovery ladder is in Instruct your agent. - Vocabulary matches already served. Rows labelled
match_mode: "bridged"use the corpus's controlled vocabulary and can appear with broadening off. Keep the label; they do not require a consent re-run. The separate"broadened"rows keep the consent rule above. - Compound query. Full-text search matches ALL terms — "incident reporting deadline financial entities DORA" easily matches nothing. Decompose into shorter queries ("incident reporting", scoped to the DORA framework) and combine results.
- Out of coverage. Check
list_coverage(jurisdiction)— a well-behaved agent reports "queried, zero results, not in coverage" rather than answering from memory.
A new tool or argument is missing
Call get_my_capabilities and inspect tool_surface. Its fingerprint identifies the tool roster; contract_fingerprint also covers descriptions, schemas and annotations. Read refresh_hint. Compare a fresh tools/list with the definitions your client exposes, using the same identity and client policy. A difference can come from cached metadata, a packaged integration, or deliberate tool filtering. If the metadata is stale, use your client's connector refresh or reconnection flow. The gateway cannot push a tool-list change notification over its stateless HTTP connection.
To discover task entry points without loading the full catalogue, call describe_capabilities(section="use_cases") and read available_to_caller before choosing a tool.
"All resolved MCP endpoints failed"
A downstream corpus was unreachable and the gateway refused to pretend otherwise (accuracy over availability — you get an error, never a silently thinner answer). It's usually transient; retry once. If it persists for a specific jurisdiction, report it — that error names a real outage, not a client problem.