Errors
Every refusal is JSON: {"error": "CODE", "message": "…", "hint": "…"}. The hint says what to do next. 84 codes, read from the running version.
| Code | HTTP | Example message |
|---|---|---|
ADDRESS_NOT_ALLOWED | 403 | … points to a local or internal host, which RFX does not fetch |
AGENT_NOT_PUBLISHED | 400 | … does not list an agent with the id "…" |
AGREEMENT_FAILED | 400 | The order form could not be produced from the agreed terms, so nothing was signed. |
ALREADY_CLAIMED | 400 | … is already claimed |
ALREADY_DECIDED | 400 | Break-out already … |
ALREADY_EXISTS | 400 | … already has an account… |
ALREADY_LISTED | 400 | … is already on RFX as … (…) |
ASSET_NOT_FOUND | 400 | … has no asset … |
AWAITING_HUMAN_APPROVAL | 400 | Terms still with a person at the vendor: … |
BAD_JSON | 400 | Body is not valid JSON |
BAD_REQUEST | 400 | Send JSON |
BREAKOUT_NOT_FOUND | 400 | No break-out … for … |
BUYER_REGISTRATION_REQUIRED | 401 | … requires a registered buyer. |
CAPABILITY_NOT_FOUND | 400 | "…" is not in the vocabulary |
CARD_DATA_REFUSED | 400 | RFX does not take card numbers. Nothing was done, and the number is not kept. |
CLAIM_EXPIRED | 410 | The claim for … ran out on … without being proved |
CLAIM_NOT_PROVEN | 403 | The claim for … is not proved yet |
CODE_WRONG | 400 | That is not the code that was sent |
CONNECTOR_REFUSED | 400 | The compliance platform did not accept that API key |
CONNECTOR_UNREACHABLE | 400 | The compliance platform could not be reached: … |
DEAL_CLOSED | 400 | Deal is … |
DEAL_NOT_FOUND | 400 | No deal … |
DNS_RECORD_NOT_FOUND | 400 | The TXT record at _rfx.… is not there yet |
ESIGN_REFUSED | 502 | The e-signature provider refused the request (HTTP …): … |
ESIGN_UNREACHABLE | 503 | The e-signature provider could not be reached: … |
FORBIDDEN | 403 | Only an admin of your company can invite people |
HUMAN_CONFIRMATION_REQUIRED | 400 | A payment is made by a person: pass their name and confirm: true |
IDENTITY_REQUIRED | 403 | Before an NDA, your agent must prove which company it acts for…. |
INCOMPLETE_TERMS | 400 | The latest version has no price yet. |
INTEGRITY | 500 | The stored document does not match the hash recorded when it was kept |
INVALID_ARGS | 400 | expires_days must be a whole number from 1 to 730 |
ISSUER_NOT_PUBLISHED | 400 | … does not name … as its identity provider |
KEY_FILE_UNREADABLE | 400 | Could not read …: … |
KEY_IN_USE | 400 | That key is already used for something else |
L3_APPROVAL_REQUIRED | 403 | L3 evidence for … requires approval by a human at the vendor. |
LAST_ADMIN | 400 | This is the company's only admin. Make someone else admin first. |
MANIFEST_INVALID | 400 | rfx.json needs vendor.slug and catalog |
MANIFEST_MISSING | 400 | No rfx.json at … |
MODEL_UNAVAILABLE | 503 | The language-model reader is not set up on this marketplace |
NDA_AND_APPROVAL_REQUIRED | 400 | Pricing and the deal room open only after a signed NDA and approval by a person at the vendor. |
NDA_NOT_OPEN | 400 | This NDA is … |
NDA_REQUIRED | 403 | Level 2 (RFP answers, evidence, capability detail) opens when the NDA with this vendor is signed by both sides. |
NO_CHALLENGE | 400 | There is no open challenge, or it has expired |
NO_CODE | 400 | There is no open code, or it has expired |
NO_CONTEXT | 400 | No system connected yet |
NO_NDA | 400 | No NDA yet |
NO_PERIMETER | 400 | Set the company's terms first; a product's own terms then replace them for that product |
NO_QUOTE_AVAILABLE | 400 | … has not set up pricing on RFX yet. |
NO_REQUIREMENTS | 400 | Send requirements with the RFP |
NOT_FOUND | 404 | No such person |
NOT_READY | 400 | RFX does not take payments through Stripe here, so it cannot use a shared payment token |
OWN_PROPOSAL | 400 | You cannot accept your own proposal; wait for the counterparty |
PAYMENT_AUTHORITY_REQUIRED | 403 | Your agent may not pay the buyer plan (…): …. |
PAYMENT_DECLINED | 402 | The payment was declined: … |
PAYMENT_METHOD_REQUIRED | 402 | … has saved no payment method, and no shared payment token was given. |
PAYMENT_REQUIRED | 402 | The introduction fee of … for … is due before you can open negotiation with it |
PAYMENT_TOKEN_UNUSABLE | 402 | The shared payment token cannot pay …: …. |
PAYMENTS_REFUSED | 502 | Stripe refused the request (HTTP …): … |
PAYMENTS_UNREACHABLE | 503 | Stripe could not be reached: … |
PDF_NO_TEXT | 400 | … has no text layer. Scanned PDFs and images need OCR, which is not built yet. |
PERSON_REQUIRED | 403 | Only a person can approve the standard NDA in advance for the company. |
PRICING_APPLIED | 400 | Pricing v… has been applied, so it no longer changes |
PRICING_CHECK_FAILED | 400 | Pricing v… does not clear the bar: ${e.checks.filter((c) => !c.ok).map((c) => |
PRICING_SIGNED | 400 | … signed its vendor agreement with pricing v…; its fees change only with a new signed agreement |
RATE_LIMITED | 429 | Too many claims are waiting for … |
REPO_NOT_REACHABLE | 400 | GitHub could not be reached: … |
REPO_UNREADABLE | 400 | The archive could not be unpacked: … |
REQUEST_NOT_FOUND | 404 | No request … for … |
SIGN_IN_REQUIRED | 400 | The sign-in to this MCP server has run out and could not be renewed |
SIGNATURE_INVALID | 400 | The signature does not match the key the company publishes for this agent |
SIGNIN_EXPIRED | 401 | This sign-in link has expired or was already used |
SIGNIN_TOO_OLD | 401 | To close the account, sign in again: your sign-in is older than 10 minutes |
STALE_VERSION | 400 | Latest is v… |
STORAGE_REFUSED | 502 | Document storage refused the request (HTTP …): … |
STORAGE_UNREACHABLE | 503 | Document storage could not be reached: … |
TOKEN_INVALID | 400 | token must be a signed JWT from your identity provider |
TOO_LARGE | 400 | … is larger than 5 MB; images up to 5 MB can be read |
TOO_MANY_TRIES | 400 | Too many sign-in attempts for this address today |
UNAUTHORIZED | 401 | Invalid or missing x-vendor-key |
UNKNOWN_TOOL | 404 | No tool '…' |
VENDOR_NOT_CLAIMED | 400 | … is listed at L1 only. Its claim is being checked by RFX. |
VENDOR_NOT_FOUND | 404 | Unknown vendor '…' |
VENDOR_NOT_VERIFIED | 403 | Prove the company first: the agreement is with the company of your domain |
VENDOR_PAUSED | 409 | … is not taking new requests at the moment |