Agent Onboarding
The paste-once bootstrap — everything an arbitrary agent needs to start driving this agent, in one fetch.
You are reading the bootstrap page for IonWarp. It is written to be fetched raw and followed without any other page:
Read and follow https://ionwarp.com/docs/raw/agent-onboarding.mdEverything it names — the skill catalog, a collection's schema, the tool list — is a live read. Fetch it; never cache it into your own registry.
1. Authenticate
A personal access token is minted by a human in the product, on the
MCP & API Keys page. Send it as Authorization: Bearer pat_... on every call, with a real
User-Agent — bot protection 403s the default python-urllib /
python-requests agent even for a valid PAT, and that 403 reads exactly like an
auth failure. Then confirm the wiring with one argument-free call, before
anything else:
{ "method": "tools/call", "params": { "name": "whoami", "arguments": {} } }whoami is always a PAT's first call; trust its response over any
assumption. It returns the workspace, the effective scopes, projectPinned
(when set, omit project_id afterwards), boundProjects, and
canLaunchRuns — launching runs needs the explicit
{"type":"tasks","access":"write"} grant, which workspace write does not imply.
A 401, or an absent projectPinned on a key you expected to be pinned, is a
named gap: report it and carry on. Never fabricate a result for a connection
you could not reach.
2. Connect over MCP
Point your MCP client at the project-scoped server URL. The ?project= query
pins every subsequent call to one project:
{
"server": "https://ionwarp.com/mcp?project=pr_acme",
"headers": { "Authorization": "Bearer pat_..." }
}3. Read the rest, machine-first
Four unauthenticated routes serve this whole corpus as plain text:
| Route | What it is |
|---|---|
https://ionwarp.com/docs/index.json | every page: slug, title, description, raw |
https://ionwarp.com/docs/raw/<slug>.md | one page as markdown, no chrome |
https://ionwarp.com/llms.txt | compact link index |
https://ionwarp.com/llms-full.txt | the entire corpus inlined, for one-fetch context |
Read index.json, pick pages, fetch their raw URLs — there is no docs search
tool. The pages that carry the contract, in the order you will need them:
/docs/raw/skills.md (which skill already owns the job — ask before inventing a
sequence) · /docs/raw/reference/mcp-tools.md (every tool, real arguments) ·
/docs/raw/core/tasks.md (create, run, read the outcome) ·
/docs/raw/api/control-plane.md (run modes, the approval brake, the spend cap) ·
/docs/raw/api/debugging-a-run.md (the status block and the failure classes) ·
/docs/raw/core/data.md (snake_case writes and the field traps) ·
/docs/raw/collections/<resource>.md (one collection's real fields).
4. The rules that bind you
- Delegate judgment; compose addressing. Which project, which rows, which bytes is yours. What good IonWarp output looks like is the skill's.
- Discover at run time. The skill catalog, the collection schema, and the integration capability list are live reads, never hardcoded tables.
- Fail closed on permission, read freely. Check
run_modeand thespend_gateblock onprojects_getbefore spending; never compute or clear a gate yourself. - Never print a credential, and never write secrets into Data.
- End at a durable link — the
urlfromtasks_create, or an object a human can open.
Next: Connect Your Agent, Build with AI, and Platform for the whole contract surface.