Documentation
The agent rail, documented.
Everything an AI assistant needs to work real M&A deal flow on AMIVA: live mandates over MCP, a connect-once OAuth flow for standing access, and drafting tools that always terminate in a human signature. Machines read, reason, and draft. Humans sign.
01
Quickstart
The rail speaks MCP (streamable HTTP). Point any MCP client at the endpoint — no key needed for the public tier:
https://deal-ai.net/api/agent/mcpA first session, end to end:
1. search_mandates { "industry": "healthcare", "min_ebitda": 500000 }
2. get_mandate { "slug": "<from results>" }
3. request_nda_access { "slug": "<slug>" }
→ returns an NDA link for YOUR PRINCIPAL to sign (agents never sign)
4. After the human executes the NDA, connect with credentials (below)
and the room's tools unlock: get_deal_facts, ask_question, draft_ioi…Claude / ChatGPT connector setup: add a custom connector with the endpoint above. For standing authenticated access use the desk endpoint — it runs the OAuth flow in the browser at connect time.
02
Connection modes
Anonymous
/api/agent/mcpNo auth. Public tier only: search, fact sheets, the NDA checkpoint. Start here.
Connect once (OAuth)
https://deal-ai.net/api/agent/deskThe connector surface for claude.ai / ChatGPT. Dynamic client registration, authorization-code + PKCE, refresh rotation. The grant carries your principal's identity; every session resolves their live rooms.
Room key
amiva_ak_…A scoped key your principal mints from their deal room ("Your AI assistant" card), shown once. Bearer on the mcp endpoint. Revocable any time; dies with the room.
03
Tool catalogue
Tools gate at call time by your credential — a public session sees the credentialed tools listed but gets a friendly checkpoint, never data. * = required.
search_mandatespublicSearch live, advisor-run sell-side mandates (lower middle market, ~$3–30M enterprise value). Returns teaser-tier facts: industry, geography, revenue, EBITDA with earnings basis, highlights. Every mandate is a real, current engagement — not a scraped listing.
industryKeyword, e.g. 'healthcare', 'HVAC', 'advertising'geographyRegion keywordmin_revenue / max_revenueUSD boundsmin_ebitda / max_ebitdaUSD boundsget_mandatepublicOne mandate's full teaser-tier fact sheet by slug.
slug*Mandate slug from search_mandatesrequest_nda_accesspublicThe human-in-the-loop checkpoint. Returns the NDA link for your PRINCIPAL to review and sign — agents never sign. Once the human executes the NDA, the room unlocks and credentialed tools light up.
slug*Mandate slugget_my_accesscredentialedYour room's current access tier and what unlocks the next one.
get_deal_factscredentialedThe tier-matched fact sheet for your principal's room. Documents themselves are never served over the rail — your principal reads those in the deal room, watermarked.
get_questionscredentialedYour room's diligence Q&A thread (the shared lane).
ask_questioncredentialedPost a diligence question to the advisor on your principal's behalf.
question*The question (plain text)categoryfinancials | operations | legal | technology | market | otherflag_mandatecredentialedNudge your principal: this mandate looks relevant. Lands as a card in their deal room.
slug*Mandate slugreason*Why it fits their thesis (shown to the human)draft_ioicredentialedDraft an Indication of Interest for your principal to review and submit — THE AGENT NEVER SUBMITS. Returns an approval_url where the human signs in, reviews every number, and submits through the standard flow.
value_low / value_high*Enterprise-value range, USDfinancing*Array: CASH, SBA_LOAN, BANK_DEBT, SELLER_NOTE, INVESTOR_EQUITY, EARNOUTstructureASSET_PURCHASE | STOCK_PURCHASE | MERGER | FLEXIBLEcontingenciese.g. 'Financing', 'Quality of earnings'timeline_daysDays to close, 14–365 (default 60)notesContext for the advisor (≤2000 chars)One active draft per mandate; calling again replaces it. 5 calls/day.
04
REST API (public tier)
Prefer plain JSON? The public tier mirrors over REST — same shapes as the MCP tools:
GET https://deal-ai.net/api/agent/v1/mandates
GET https://deal-ai.net/api/agent/v1/mandates?industry=hvac&min_ebitda=500000
GET https://deal-ai.net/api/agent/v1/mandates/{slug}
curl -s https://deal-ai.net/api/agent/v1/mandates | jq '.mandates[] | {slug, industry, ebitda}'05
Errors & limits
Every failure is structured and self-explaining — key off error_code, and read human_action for what your principal should do:
{
"error": {
"error_code": "TIER_TOO_LOW", // KEY_INVALID · RATE_LIMITED · NOT_FOUND ·
"message": "…", // VALIDATION · INVALID_INPUT · WRONG_RAIL · …
"human_action": "Your principal can unlock this by …"
}
}Rate limits are per-credential and generous for real workflows (drafting tools are tighter: draft_ioi is 5/day). On RATE_LIMITED, wait and retry once — don't hammer.
06
Rules of the rail
Humans sign everything binding.
NDAs, IOIs, LOIs — the rail's drafting tools terminate in an approval URL where a human reviews and executes. An agent that tries to skip the human hits a checkpoint, not a loophole.
No documents over the rail.
Fact sheets are tier-matched summaries. Actual deal documents live in the watermarked deal room, for humans.
Confidentiality is structural.
Your credential scopes you to your principal's rooms. Cross-room probes read as not-found — there is nothing to enumerate.
Every mandate is real.
These are live, advisor-run engagements — treat inquiry as if you were emailing the banker, because functionally you are.