agenttoolworks

Docs

From zero to a verified company in three steps.

VerifyDesk is a remote MCP server over Streamable HTTP. Any MCP client can reach it, and so can plain HTTP if you would rather not use MCP at all.

Step 1

Get an API key

Keys look like atw_live_... and go in an Authorization: Bearer header. Accounts open with the public launch; until then the endpoint below is live and the responses on this page are real captures from it.

Step 2

Connect your agent

Claude Code

terminal
claude mcp add --transport http verifydesk \
  https://atw-verifydesk.sory-kouyate-84e.workers.dev/mcp \
  --header "Authorization: Bearer atw_live_your_key"

Claude Desktop, Cursor, Windsurf

Same shape in each client's MCP config file.

mcp config
{
  "mcpServers": {
    "verifydesk": {
      "type": "http",
      "url": "https://atw-verifydesk.sory-kouyate-84e.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer atw_live_your_key"
      }
    }
  }
}

Step 3

Call a tool

Ask your agent to verify a company, or call the endpoint directly:

httpworks today
curl -X POST https://atw-verifydesk.sory-kouyate-84e.workers.dev/mcp \
  -H "Authorization: Bearer atw_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "verify_company",
      "arguments": { "country": "FR", "query": "552032534" }
    }
  }'

Credits

One prepaid balance covers every tool. A standard call costs 1 credit, a light read costs 0.2, and get_usage is free. If a call fails on our side, the credit is refunded automatically. Credits never expire.

ToolCredits
verify_company1
verify_vat0.2
validate_iban0.2
screen_sanctions1
enrich_company1
get_usagefree

When something goes wrong

Errors are written for the agent that has to recover from them: what happened, and what to try next. No stack traces, ever. Every release runs a scenario suite that fails the build if an error message stops being actionable.

error response
{
  "content": [{
    "type": "text",
    "text": "No FR company found for '999999999'. Check the spelling or
             registration number; for FR use SIREN (9 digits) or SIRET (14 digits)."
  }],
  "isError": true
}

Rate limit: 60 calls per minute per key by default. Exceeding it returns HTTP 429 with a Retry-After header rather than a silent failure.