POST https://api.middesk.com/v1/businesses with body {name, addresses:[{address_line1, city, state, postal_code}], tin, people:[{name, title}]} and Authorization: Bearer YOUR_TOKEN
Receive synchronous response with business.id and status: 'pending'; store id for correlation
Register a webhook endpoint via Middesk dashboard or POST https://api.middesk.com/v1/webhooks with {url, events:['business.updated']}
On receipt of POST from Middesk, parse event.type=='business.updated' and event.data.status; map 'approved', 'in_review', or 'rejected' to your workflow state
If status is 'in_review', poll GET https://api.middesk.com/v1/businesses/{id} at intervals until terminal status or analyst resolution
Extract event.data.watchlist.hit, event.data.registration.status, and event.data.tin.tin_type fields to build compliance record
Known gotchas
Middesk is asynchronous by design — some verifications require analyst review and can take minutes to hours; never block a user flow waiting synchronously
Webhook delivery is not guaranteed to arrive in order; always re-fetch the full business object on status changes rather than relying solely on webhook payload diffs
The tin field expects the raw EIN digits (nine characters, no hyphens) but Middesk may return tin_type as 'EIN' or 'SSN' depending on sole-proprietor records
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp