REST + MCP, one contract
Same wire format for curl scripts and Claude-style agent sessions: initialize, tools/list, tools/call.
Everything the web UI does is available over JSON: create invoices, filter them, and get back server-rendered PDFs. AI agents speak the same surface through a Model Context Protocol endpoint — which is why this site ships llms.txt and a published agent skill.
Same wire format for curl scripts and Claude-style agent sessions: initialize, tools/list, tools/call.
Bearer tokens map to an account; agents only ever see that account's invoices.
GET /api/v1/invoices/:id.pdf renders server-side — identical output to what humans download.
Send Authorization: Bearer <api_token>. Agents should ask their user for the token; it can be regenerated anytime.
No SDK needed — plain JSON over HTTPS. The agent SKILL.md documents ready-to-paste curl flows.
API: 120 requests/minute per IP. MCP: 60/minute. Sign-in and password reset: 10/minute.
Yes — POST the invoice, then GET /api/v1/invoices/:id.pdf with the returned id.