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
Give an email address on the signup page and you get a working key plus 100 free credits. No password and no card. Keys look like atw_live_... and go in an Authorization: Bearer header.
The key is shown once, because we store only a hash of it. One key covers VerifyDesk, JobsRadar and InvoiceForge on one shared credit balance.
Step 2
Connect your agent
Claude Code
claude mcp add --transport http verifydesk \ https://verifydesk.agenttoolworks.com/mcp \ --header "Authorization: Bearer atw_live_your_key"
Claude Desktop, Cursor, Windsurf
Same shape in each client's MCP config file.
{
"mcpServers": {
"verifydesk": {
"type": "http",
"url": "https://verifydesk.agenttoolworks.com/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:
curl -X POST https://verifydesk.agenttoolworks.com/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" }
}
}'All three endpoints
One key works on all of them against one credit balance, so adding a second server costs nothing but a line of config. The walkthrough above uses VerifyDesk; substitute the URL and the local name and everything else is identical.
| Server | Endpoint |
|---|---|
| verifydesk | https://verifydesk.agenttoolworks.com/mcp |
| jobsradar | https://jobsradar.agenttoolworks.com/mcp |
| invoiceforge | https://invoiceforge.agenttoolworks.com/mcp |
The older *.workers.dev hostnames still answer and will keep answering, so anything already configured against one keeps working. New setups should use these.
Credits
One prepaid balance covers every tool, on every server. A standard call costs 1 credit, a light read costs 0.2, and get_usage is free. Credits never expire.
Billing settles after the call, not before, so a call that fails on our side costs you nothing. There is no charge to reverse and therefore no reversal that can go wrong. The failed call still appears in your usage with a cost of zero, so you can see it happened.
| Tool | Credits |
|---|---|
| verify_company | 1 |
| verify_vat | 0.2 |
| validate_iban | 0.2 |
| screen_sanctions | 1 |
| enrich_company | 1 |
| get_usage | free |
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.
{
"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.