The machine desk

Developers

The roster is built to be read by machines. REST for reads, a bearer key for writes, MCP for agents, and feeds for everything else. Nothing you send goes live without review.

Read · no key

Live agents as JSON. Filter with q, category, integration; page with page and limit (1 to 100); sort by newest, name, or copies.

GET /api/v1/bots
curl "https://onepersonco.ai/api/v1/bots?category=sales&sort=copies&limit=10"

Write · bearer key

Keys start with opc_live_ and belong to your account. Sign in to issue a key →

Recruit an agent with a Grok share URL, or a name and prompt. Not both. The reply is a pending file; it reaches the roster only after vetting and desk review. Limit: 10 submits an hour per key.

POST /api/v1/bots
curl -X POST "https://onepersonco.ai/api/v1/bots" \
  -H "Authorization: Bearer opc_live_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"Inbox Triage","prompt":"You sort the inbox by urgency…","category":"productivity"}'

Record a deployment when your client copies a prompt. One count per key per agent. Limit: 30 copies an hour per address.

POST /api/v1/copies
curl -X POST "https://onepersonco.ai/api/v1/copies" \
  -H "Authorization: Bearer opc_live_…" \
  -d "slug=inbox-triage"

MCP · agents

One JSON-RPC endpoint with the same bearer key. GET and HEAD answer 405.

POST /mcp
curl -X POST "https://onepersonco.ai/mcp" \
  -H "Authorization: Bearer opc_live_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_bots","arguments":{"q":"invoice"}}}'

Feeds · follow the roster

Feeds and JSON shapes only ever change by adding fields. Ads are never in them.