Every refusal of the DEBYKO MCP server is a tool result with isError and a body of the API’s shape, {"errors": [{"code", "message", "next", "retry", "retry_after"?, "docs"?}]}: code is what a program branches on, message says what happened, next is what to do now — written for the person, with the exact URLs and button names, and the AI is asked to give it as it is —, retry says whether the same call can succeed if it is repeated unchanged (and retry_after in how many seconds), and docs names the resource or page that explains.
The next below is the one the server gives when the error comes without its own. Many come with their own, more precise one: a plan limit names your plan’s numbers, a refused venue lists the venues your plan includes, a Telegram link that is waiting gives the time it expires.
| Code |
What to do (next) |
Retry |
UNAUTHENTICATED |
1. Open https://studio.debyko.com/account/signin, enter your email and press Send the code, then enter the code from the email and press Sign in. The Free plan is free and needs no card. 2. A new account shows its API key once, on the page Your account is open: press Copy. For another key later, open https://studio.debyko.com/account and under API key press Issue a key (or Revoke and issue new on the key you have; the old one stops working within 30 seconds). 3. Put the key in your MCP client as the header Authorization: Bearer <key>, or instead add https://mcp.debyko.com/mcp as a connector and sign in with OAuth (no key to copy). |
no |
AUTH_REQUIRED |
1. Open https://studio.debyko.com/account/signin, enter your email and press Send the code, then enter the code from the email and press Sign in. The Free plan is free and needs no card. 2. A new account shows its API key once, on the page Your account is open: press Copy. For another key later, open https://studio.debyko.com/account and under API key press Issue a key (or Revoke and issue new on the key you have; the old one stops working within 30 seconds). 3. Put the key in your MCP client as the header Authorization: Bearer <key>, or instead add https://mcp.debyko.com/mcp as a connector and sign in with OAuth (no key to copy). (docs://getting-started) |
no |
AUTH_INVALID |
1. Open https://studio.debyko.com/account/signin, enter your email and press Send the code, then enter the code from the email and press Sign in. The Free plan is free and needs no card. 2. A new account shows its API key once, on the page Your account is open: press Copy. For another key later, open https://studio.debyko.com/account and under API key press Issue a key (or Revoke and issue new on the key you have; the old one stops working within 30 seconds). 3. Put the key in your MCP client as the header Authorization: Bearer <key>, or instead add https://mcp.debyko.com/mcp as a connector and sign in with OAuth (no key to copy). (docs://getting-started) |
no |
KEY_IN_URL |
Never put the key in a URL; it travels as a header, and a key that was in a URL should be replaced in the account. |
no |
ACCOUNT_REQUIRED |
1. Open https://studio.debyko.com/account/signin, enter your email and press Send the code, then enter the code from the email and press Sign in. The Free plan is free and needs no card. 2. A new account shows its API key once, on the page Your account is open: press Copy. For another key later, open https://studio.debyko.com/account and under API key press Issue a key (or Revoke and issue new on the key you have; the old one stops working within 30 seconds). 3. Put the key in your MCP client as the header Authorization: Bearer <key>, or instead add https://mcp.debyko.com/mcp as a connector and sign in with OAuth (no key to copy). (docs://getting-started) |
no |
| Code |
What to do (next) |
Retry |
PLAN_LIMIT |
Ask for a later instant or a smaller window inside what the plan reads (the account tool says how far back), or change plan under Subscription at https://studio.debyko.com/account. (docs://plans) |
no |
PLAN_VENUE_NOT_INCLUDED |
Use one of the venues in your plan (the message lists them, and the account tool does too), or change plan under Subscription at https://studio.debyko.com/account (the plans are in docs://plans). (docs://plans) |
no |
PAYMENT_REQUIRED |
This call needs a key or a payment: the body says what to pay, and with an API key it is not asked for. |
no |
PAYMENT_MALFORMED |
The payment sent is not a valid x402 payment: build it again, or use an API key. |
no |
RATE_LIMITED |
Wait retry_after seconds and call again; fewer calls, or a larger plan, raises the limit (the account tool shows the limits and what is left). (docs://plans) |
yes |
PLAN_RULE_LIMIT |
Pause or delete a rule you no longer need (agent_rule_set, agent_rule_delete, or https://agent.debyko.com), or change plan under Subscription at https://studio.debyko.com/account. (docs://plans) |
no |
PLAN_INTERVAL_TOO_SHORT |
Use a check interval at least as long as the plan’s shortest (docs://plans), or change plan under Subscription at https://studio.debyko.com/account. (docs://plans) |
no |
PLAN_CHECK_BUDGET |
Use a longer check interval or pause another rule, or change plan under Subscription at https://studio.debyko.com/account. (docs://plans) |
no |
PLAN_CHANNEL_LIMIT |
Remove a webhook or disconnect a Telegram chat at https://agent.debyko.com/channels, or change plan under Subscription at https://studio.debyko.com/account. (docs://plans) |
no |
PLAN_NOTIFICATION_LIMIT |
Wait until 00:00 UTC (retry_after seconds), when delivery resumes on its own; rules keep running meanwhile, or change plan under Subscription at https://studio.debyko.com/account. (docs://plans) |
yes |
| Code |
What to do (next) |
Retry |
AGENT_STOPPED |
Turn Agent on at https://agent.debyko.com (toggle ‘Agent is on’) or with agent_set_enabled when the user asks, and the rule runs. (docs://agent) |
no |
AGENT_UNAVAILABLE |
Try again in a few minutes, and write to support@debyko.com if it keeps failing. |
yes |
CHANNEL_REQUIRED |
Ask the user whether alerts should go to Telegram or to a webhook, then call agent_channel_connect with that kind. (docs://agent) |
no |
TELEGRAM_NOT_LINKED |
Call agent_channel_connect with kind telegram and give the user its steps, then call again once they pressed Start. (docs://agent) |
no |
TELEGRAM_LINK_PENDING |
Ask the user to open the link agent_channel_connect gave and press Start in Telegram, then call again. (docs://agent) |
yes |
TELEGRAM_UNAVAILABLE |
Try again in a few minutes, or use a webhook instead. |
yes |
CHANNEL_DISABLED |
For Telegram ask the user to unblock @debyko_bot and connect it again with agent_channel_connect; for a webhook fix the receiver and press Send test at https://agent.debyko.com/channels. (docs://agent) |
no |
CHANNEL_DAILY_LIMIT |
Use a channel the account already has (agent_channels lists them), or add the new one tomorrow. |
no |
LABEL_REQUIRED |
Ask the user for a short name for this alert, the first line of every notification, and call again with it as label. |
no |
RULE_PAUSED_BY_DEBYKO |
The rule resumes on its own once the reason in the message is gone; if the reason is the plan, change the rule or the plan (docs://plans). (docs://plans) |
no |
| Code |
What to do (next) |
Retry |
DQL_ARGUMENT |
Give the argument a value inside the range the message states and call again. (docs://dql) |
no |
DQL_AS_OF_RANGE |
Ask for an instant between the earliest retained data and now and call again. (docs://dql) |
no |
DQL_COMPLEXITY |
Simplify the query (fewer series calls, shorter windows) and call again. (docs://dql) |
no |
DQL_DUPLICATE_CLAUSE |
Give each clause once and call again. (docs://dql) |
no |
DQL_JSON_SCHEMA |
A field of the request is not the shape the tool takes: correct the field named in path or in the message, and call again. (docs://dql) |
no |
DQL_LIMIT |
Narrow the request as the hint says (a narrower where, fewer layers or a shorter interval) and call again. (docs://dql) |
no |
DQL_NESTING |
Flatten the query: a quantifier cannot sit inside another one. (docs://dql) |
no |
DQL_SCOPE |
Wrap the venue-scoped field in any(venues where …), all(…), count(…) or an aggregate, and call again. (docs://dql) |
no |
DQL_SYNTAX |
Correct the query at the given position (the message says what was expected there, and docs://dql has the grammar) and call again. (docs://dql) |
no |
DQL_TIMEFRAME_MISMATCH |
Read both series at the same period and call again. (docs://dql) |
no |
DQL_TIMEFRAME_REQUIRED |
Add timeframe 1h (or another period) to the query, or give the series function its own period, and call again. (docs://dql) |
no |
DQL_TIMEFRAME_UNSUPPORTED |
Use one of the periods the message lists and call again. (docs://dql) |
no |
DQL_TYPE |
Change the operation to one the types allow (the hint says which fields can be summed or compared) and call again. (docs://dql) |
no |
DQL_UNKNOWN_ASSET |
Write the base asset as the instruments tool shows it (BTC, not BITCOIN) and call again. (docs://dql) |
no |
DQL_UNKNOWN_CURRENCY |
Write the quote currency as the instruments tool shows it (for example USDT) and call again. (docs://dql) |
no |
DQL_UNKNOWN_FIELD |
Use a field the hint names or one listed in docs://dql, and call again. (docs://dql) |
no |
DQL_UNKNOWN_FUNCTION |
Use a function the hint names or one listed in docs://dql, and call again. (docs://dql) |
no |
DQL_UNKNOWN_INSTRUMENT |
Write the instrument as BTC-PERP, not BTC, taking it from the instruments tool, and call again. (docs://dql) |
no |
DQL_UNKNOWN_VENUE |
Write a venue code exactly as the venues tool lists it and call again; the code you sent is no venue at all. (docs://dql) |
no |
DQL_VERSION |
Leave dql out of the request, or send “1”, and call again. (docs://dql) |
no |
| Code |
What to do (next) |
Retry |
ANCHOR_CHANGED |
Do not repeat the call: history changed after the anchor, which is what the anchor is for, and the day’s root and the proofs made before still stand. |
no |
ANCHOR_NOT_FOUND |
Pick a day that is anchored (a day is anchored within 24 hours of its end) and a row that was stored; the message says which was missing. |
no |
ANCHOR_NOT_YET |
The day is not on the chain yet: ask about the first anchored day the message names, or about this day again once it is anchored. |
no |
NOT_FOUND |
There is nothing at this path: check the identifiers against what the listing tools return. |
no |
UNAVAILABLE |
Wait a few seconds and call again; nothing in the request needs to change. |
yes |
MCP_UNKNOWN_TOOL |
Call one of the tools this server lists. |
no |
MCP_TOOL_UNAVAILABLE |
This tool has no endpoint yet: use another tool. |
no |
MCP_UPSTREAM_UNREACHABLE |
The DEBYKO API could not be reached from here: wait a few seconds and call again. |
yes |
UNAUTHENTICATED is the HTTP 401 of the MCP endpoint itself (no key or access token, or one that is not accepted); a client that signs in with OAuth signs in again by itself.