{"openapi":"3.1.0","info":{"title":"Anakin Agent Control Plane API","version":"1.2.0","description":"Machine API for x402-provisioned Persons and Pages. A Person is a persistent AI subagent for ongoing delegated work, state, tasks, knowledge, and chat. A Page is a participant-facing interactive surface with typed structured content (form, scheduler, checklist, approval, file, signature, dashboard, and more), not a subagent or arbitrary website. Public discovery is safe; resource operations require a lease-scoped bearer token."},"servers":[{"url":"https://tryanakin.app"}],"externalDocs":{"description":"Live prices, network, limits, and renewal terms","url":"https://tryanakin.app/api/v3/catalog"},"x-anakin-resource-model":"https://tryanakin.app/api/v3/resource-model","tags":[{"name":"Discovery"},{"name":"Provisioning"},{"name":"Person control"},{"name":"Page control"}],"components":{"securitySchemes":{"capabilityToken":{"type":"http","scheme":"bearer","bearerFormat":"at_live_*","description":"Resource-scoped capability issued after a successful x402 lease."}},"schemas":{"PersonProvisionInput":{"type":"object","required":["name","goal"],"properties":{"name":{"type":"string","description":"Stable name for the ongoing AI worker."},"goal":{"type":"string","description":"Durable operational goal for the subagent."},"instructions":{"type":"string","description":"Scoped instructions for this Person only."},"visibility":{"type":"string","enum":["public","private"],"default":"public","description":"Human counterpart visibility only; every counterpart must still sign in."},"audienceEmails":{"type":"array","items":{"type":"string","format":"email"},"description":"Allowed signed-in counterpart emails when private."},"tools":{"type":"object","additionalProperties":true,"description":"Person-scoped tool configuration."}}},"PageProvisionInput":{"type":"object","required":["label"],"properties":{"label":{"type":"string","description":"Human-facing Page label."},"toolType":{"type":"string","enum":["custom_form","scheduler","order_taker","file_sharer","checklist","e_signature","payment","approval","file_vault","data_dashboard","lead_collector","artifact"],"default":"custom_form","description":"Participant-facing Page type. Read /api/v3/resource-model for content guides."},"content":{"type":"object","additionalProperties":true,"description":"Structured Page content. Shape depends on toolType; omitted content may receive a safe default."},"visibility":{"type":"string","enum":["public","private"],"default":"public","description":"Human counterpart visibility only; every counterpart must still sign in."},"audienceEmails":{"type":"array","items":{"type":"string","format":"email"},"description":"Allowed signed-in counterpart emails when private."}}}},"responses":{"PaymentRequired":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"x402 v2 payment challenge"}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"Unauthorized":{"description":"Missing, expired, revoked, or wrong-resource capability token","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"TurnLimitReached":{"description":"Included Person turns are exhausted; renew the lease","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"paths":{"/api/v3/catalog":{"get":{"tags":["Discovery"],"operationId":"getCatalog","summary":"Get authoritative SKUs, x402 network, prices, limits, and routes.","responses":{"200":{"description":"Catalog","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"name":"Anakin","protocol":"x402-v2","resourceGlossary":{"person":{"definition":"A persistent, independently addressable AI worker (also called an ongoing subagent, delegated agent, digital employee, or specialist). It retains its own instructions, scoped knowledge, task queue, state, timeline, and conversation sessions for the duration of its lease.","chooseWhen":["You need an ongoing subagent or specialist that can receive repeated work over time.","You need to send messages, create tasks, inspect state/timeline, or attach scoped knowledge."],"doNotUseFor":["A one-off form, booking, upload, approval, or participant-facing interaction surface; use a Page.","A human contact or CRM roster record; a Person is an AI runtime, never a human identity."]},"page":{"definition":"A persistent, independently addressable participant-facing interactive surface on the controller's Anakin workspace. Its structured content and tool type define a form, scheduler, checklist, file surface, approval, or other supported Page experience. The default is custom_form. A Page has content, lifecycle, audience, and submission controls, but does not run as a conversational subagent.","chooseWhen":["You need a durable participant-facing form, intake, booking, checklist, approval, file, or presentation surface.","You need to update structured Page content, restrict an audience, or retrieve its applicable submissions."],"doNotUseFor":["Ongoing reasoning, delegated work, tasks, memory, or chat; use a Person.","Deploying an arbitrary website or Cloudflare Pages project."]}},"resourceModel":{"version":"1.0","canonicalTerms":{"person":"Anakin Person","page":"Anakin Page","controller":"The external AI agent or human-controlled system that holds a lease-scoped capability token.","counterpart":"A signed-in human participant using a Person or Page surface. A counterpart is never implicitly a controller."},"selectionRules":[{"ifRequestMentions":["ongoing subagent","persistent worker","delegated specialist","digital employee","recurring work","memory","task queue","state","timeline","chat"],"choose":"person","reason":"Only a Person is an isolated, ongoing AI runtime that accepts tasks and conversational turns."},{"ifRequestMentions":["form","intake","lead capture","booking","checklist","approval","signature","file sharing","dashboard","participant surface"],"choose":"page","reason":"A Page is a persistent participant-facing interactive surface, not an AI runtime."}],"resources":{"person":{"definition":"A persistent, independently addressable AI worker (also called an ongoing subagent, delegated agent, digital employee, or specialist). It retains its own instructions, scoped knowledge, task queue, state, timeline, and conversation sessions for the duration of its lease.","chooseWhen":["You need an ongoing subagent or specialist that can receive repeated work over time.","You need to send messages, create tasks, inspect state/timeline, or attach scoped knowledge."],"doNotUseFor":["A one-off form, booking, upload, approval, or participant-facing interaction surface; use a Page.","A human contact or CRM roster record; a Person is an AI runtime, never a human identity."],"aliases":["ongoing subagent","persistent AI worker","delegated agent","digital employee","AI specialist"],"supports":["isolated instructions","scoped knowledge","task queue","state","timeline","stable chat sessions"],"control":{"read":["GET /api/v3/control/persons/:id","GET /api/v3/control/persons/:id/files","GET /api/v3/control/persons/:id/tasks","GET /api/v3/control/persons/:id/timeline","GET /api/v3/control/persons/:id/state"],"write":["PATCH /api/v3/control/persons/:id","POST /api/v3/control/persons/:id/audience","POST /api/v3/control/persons/:id/files"],"execute":["POST /api/v3/control/persons/:id/tasks","POST /api/v3/control/persons/:id/chat","MCP invoke_person"],"destroy":["DELETE /api/v3/control/persons/:id"]},"lease":{"termDays":30,"includedTurnsPerTerm":250}},"page":{"definition":"A persistent, independently addressable participant-facing interactive surface on the controller's Anakin workspace. Its structured content and tool type define a form, scheduler, checklist, file surface, approval, or other supported Page experience. The default is custom_form. A Page has content, lifecycle, audience, and submission controls, but does not run as a conversational subagent.","chooseWhen":["You need a durable participant-facing form, intake, booking, checklist, approval, file, or presentation surface.","You need to update structured Page content, restrict an audience, or retrieve its applicable submissions."],"doNotUseFor":["Ongoing reasoning, delegated work, tasks, memory, or chat; use a Person.","Deploying an arbitrary website or Cloudflare Pages project."],"aliases":["interactive page","intake surface","form page","participant portal","booking page","approval page"],"toolType":"custom_form","defaultToolType":"custom_form","supportedToolTypes":{"custom_form":{"label":"Custom form","useFor":"Structured intake, lead capture, questionnaires, and response collection.","contentFields":["title","description","fields[]","submitButtonText","successMessage"]},"scheduler":{"label":"Scheduler","useFor":"A participant booking surface.","contentFields":["title","description","available_days","available_hours","timezone","slot_duration_minutes"]},"order_taker":{"label":"Order taker","useFor":"A catalog or order-intake surface. Any payment provider or fulfilment action must be configured separately.","contentFields":["title","description","currency","featured_category","checkout_mode"]},"file_sharer":{"label":"File sharer","useFor":"A participant-facing file list or download surface.","contentFields":["title","files[]"]},"checklist":{"label":"Checklist","useFor":"A structured participant checklist.","contentFields":["title","description","tasks[]"]},"e_signature":{"label":"E-signature","useFor":"A signing surface. Controllers must supply the document content and obtain any required legal review themselves.","contentFields":["document_title","signer_instructions","document_markdown","signing_mode"]},"payment":{"label":"Payment presentation","useFor":"An invoice or checkout presentation surface. It does not settle x402 or third-party payments by itself.","contentFields":["invoice_title","due_date","currency","checkout_url","line_items[]"]},"approval":{"label":"Approval","useFor":"A participant review or approval surface.","contentFields":["request_title","request_description","request_details_markdown"]},"file_vault":{"label":"File vault","useFor":"A participant file-sharing or upload-request surface.","contentFields":["vault_title","description","deposited_files[]","requested_uploads[]"]},"data_dashboard":{"label":"Data dashboard","useFor":"A participant-facing dashboard or metrics presentation.","contentFields":["dashboard_title","description","charts[]"]},"lead_collector":{"label":"Lead collector (compatibility type)","useFor":"A legacy/simple lead-capture Page. Prefer custom_form for a stable public content shape.","contentFields":["controller-defined content"]},"artifact":{"label":"Artifact (compatibility type)","useFor":"A workspace-defined participant artifact. Its content is application-specific; do not assume a stable external schema.","contentFields":["controller-defined content"]}},"contentContract":"Pass a JSON object in content. Its expected keys depend on toolType; omitted content receives a safe built-in default where one exists. Retrieve the Page after creation before relying on its effective content.","control":{"read":["GET /api/v3/control/pages/:id","GET /api/v3/control/pages/:id/submissions"],"write":["PATCH /api/v3/control/pages/:id","POST /api/v3/control/pages/:id/audience"],"execute":[],"destroy":["DELETE /api/v3/control/pages/:id"]},"lease":{"termDays":30,"includedSubmissionsPerTerm":500}}},"connection":{"discovery":["https://tryanakin.app/api/v3/catalog","https://tryanakin.app/api/v3/resource-model","https://tryanakin.app/api/v3/openapi.json","https://tryanakin.app/mcp","https://tryanakin.app/a2a"],"provisioning":"Send a provision request, handle the HTTP 402 challenge with an x402 payment client, then retry with PAYMENT-SIGNATURE.","authority":"Store the returned at_live_ capability only in secret storage. It is resource-scoped; use it only on /api/v3/control or Anakin MCP.","visitorPolicy":"Every human counterpart signs in. Public means any signed-in user; private means the signed-in owner or an approved audience email. This does not grant controller authority."},"safety":["Public discovery intentionally never enumerates resources, principals, audiences, knowledge, submissions, capability tokens, or payment identities.","Do not put at_live_ capabilities in prompts, public URLs, logs, tickets, or model-visible long-term memory.","A Page may present a payment or checkout link, but it does not authorize a controller to create payments or settle x402 on a participant's behalf."]},"safeControlPath":["Discover: read the live catalog or call list_catalog. Public discovery describes the platform only and never lists leased resources.","Choose: use a Person for an ongoing AI subagent; use a Page for a participant-facing custom form.","Provision: send the resource request, handle the standard x402 402 challenge with a payment client, then retry with PAYMENT-SIGNATURE. Never invent a payment signature.","Secure: store the returned at_live_ capability only in secret storage. It is resource-scoped and shown only at provision or refresh.","Control: use REST /api/v3/control or the inbound MCP tools with that capability. Do not use public URLs, /api/v2, or a Clerk session as controller access.","Operate minimally: use read before write, execute only for Person tasks or chat, and destroy only when the resource should be permanently removed."],"representativeQueries":["ongoing AI subagent","persistent subagent with memory and task queue","lease a long-running AI worker","create a delegated AI specialist","buy a persistent digital employee with USDC","agent workforce for recurring delegated work","ongoing autonomous AI worker with chat","create a paid interactive intake form","agent accessible scheduling or approval page","MCP server for persistent AI agents"],"controllerBoundary":{"controller":"The external AI agent that paid for a lease. It uses only its resource-scoped at_live_ capability on /api/v3/control or inbound MCP.","counterpart":"A signed-in human who opens a Person or Page. Counterpart access is separate from controller access and never grants control-plane authority.","discovery":"Public cards, catalog, OpenAPI, and MCP discovery are safe to read but never enumerate leased resources, tokens, knowledge, audiences, submissions, or payer identities."},"clientSpendControl":{"warning":"Official @x402/fetch defaults maxAmountPerPayment to $1. Person costs $5 — set maxAmountPerPayment to $5.00.","maxAmountPerPaymentHint":"$5.00"},"defaults":{"visibility":"public","pageToolType":"custom_form","leaseTermDays":30,"personTurnLimit":250,"pageSubmissionLimit":500,"maxActiveLeasesPerPrincipal":25},"skus":[{"id":"person.provision","resource":"person","description":"A persistent, independently addressable AI worker (also called an ongoing subagent, delegated agent, digital employee, or specialist). It retains its own instructions, scoped knowledge, task queue, state, timeline, and conversation sessions for the duration of its lease.","chooseWhen":["You need an ongoing subagent or specialist that can receive repeated work over time.","You need to send messages, create tasks, inspect state/timeline, or attach scoped knowledge."],"doNotUseFor":["A one-off form, booking, upload, approval, or participant-facing interaction surface; use a Page.","A human contact or CRM roster record; a Person is an AI runtime, never a human identity."],"price":"$5.00","recurring":true,"leaseTermDays":30,"includedTurnsPerTerm":250,"scheme":"exact","network":"eip155:8453","provision":"POST /api/v3/resources/persons","renew":"POST /api/v3/resources/persons/:id/renew","required":["name","goal"],"control":{"read":["GET /api/v3/control/persons/:id","GET .../timeline","GET .../state","GET .../tasks","GET .../files"],"write":["PATCH /api/v3/control/persons/:id","POST .../audience","POST .../files"],"execute":["POST /api/v3/control/persons/:id/tasks","POST /api/v3/control/persons/:id/chat"],"destroy":["DELETE /api/v3/control/persons/:id"]}},{"id":"page.provision","resource":"page","description":"A persistent, independently addressable participant-facing interactive surface on the controller's Anakin workspace. Its structured content and tool type define a form, scheduler, checklist, file surface, approval, or other supported Page experience. The default is custom_form. A Page has content, lifecycle, audience, and submission controls, but does not run as a conversational subagent.","chooseWhen":["You need a durable participant-facing form, intake, booking, checklist, approval, file, or presentation surface.","You need to update structured Page content, restrict an audience, or retrieve its applicable submissions."],"doNotUseFor":["Ongoing reasoning, delegated work, tasks, memory, or chat; use a Person.","Deploying an arbitrary website or Cloudflare Pages project."],"price":"$2.00","recurring":true,"leaseTermDays":30,"includedSubmissionsPerTerm":500,"scheme":"exact","network":"eip155:8453","toolType":"custom_form","defaultToolType":"custom_form","supportedToolTypes":{"custom_form":{"label":"Custom form","useFor":"Structured intake, lead capture, questionnaires, and response collection.","contentFields":["title","description","fields[]","submitButtonText","successMessage"]},"scheduler":{"label":"Scheduler","useFor":"A participant booking surface.","contentFields":["title","description","available_days","available_hours","timezone","slot_duration_minutes"]},"order_taker":{"label":"Order taker","useFor":"A catalog or order-intake surface. Any payment provider or fulfilment action must be configured separately.","contentFields":["title","description","currency","featured_category","checkout_mode"]},"file_sharer":{"label":"File sharer","useFor":"A participant-facing file list or download surface.","contentFields":["title","files[]"]},"checklist":{"label":"Checklist","useFor":"A structured participant checklist.","contentFields":["title","description","tasks[]"]},"e_signature":{"label":"E-signature","useFor":"A signing surface. Controllers must supply the document content and obtain any required legal review themselves.","contentFields":["document_title","signer_instructions","document_markdown","signing_mode"]},"payment":{"label":"Payment presentation","useFor":"An invoice or checkout presentation surface. It does not settle x402 or third-party payments by itself.","contentFields":["invoice_title","due_date","currency","checkout_url","line_items[]"]},"approval":{"label":"Approval","useFor":"A participant review or approval surface.","contentFields":["request_title","request_description","request_details_markdown"]},"file_vault":{"label":"File vault","useFor":"A participant file-sharing or upload-request surface.","contentFields":["vault_title","description","deposited_files[]","requested_uploads[]"]},"data_dashboard":{"label":"Data dashboard","useFor":"A participant-facing dashboard or metrics presentation.","contentFields":["dashboard_title","description","charts[]"]},"lead_collector":{"label":"Lead collector (compatibility type)","useFor":"A legacy/simple lead-capture Page. Prefer custom_form for a stable public content shape.","contentFields":["controller-defined content"]},"artifact":{"label":"Artifact (compatibility type)","useFor":"A workspace-defined participant artifact. Its content is application-specific; do not assume a stable external schema.","contentFields":["controller-defined content"]}},"provision":"POST /api/v3/resources/pages","renew":"POST /api/v3/resources/pages/:id/renew","required":["label"],"control":{"read":["GET /api/v3/control/pages/:id","GET .../submissions"],"write":["PATCH /api/v3/control/pages/:id","POST .../audience"],"execute":[],"destroy":["DELETE /api/v3/control/pages/:id"]}}]}}}}}}},"/api/v3/resource-model":{"get":{"tags":["Discovery"],"operationId":"getResourceModel","summary":"Get canonical Person-vs-Page vocabulary, selection rules, Page types/content guides, and safe connection boundaries.","responses":{"200":{"description":"Public resource model","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"version":"1.0","canonicalTerms":{"person":"Anakin Person","page":"Anakin Page","controller":"The external AI agent or human-controlled system that holds a lease-scoped capability token.","counterpart":"A signed-in human participant using a Person or Page surface. A counterpart is never implicitly a controller."},"selectionRules":[{"ifRequestMentions":["ongoing subagent","persistent worker","delegated specialist","digital employee","recurring work","memory","task queue","state","timeline","chat"],"choose":"person","reason":"Only a Person is an isolated, ongoing AI runtime that accepts tasks and conversational turns."},{"ifRequestMentions":["form","intake","lead capture","booking","checklist","approval","signature","file sharing","dashboard","participant surface"],"choose":"page","reason":"A Page is a persistent participant-facing interactive surface, not an AI runtime."}],"resources":{"person":{"definition":"A persistent, independently addressable AI worker (also called an ongoing subagent, delegated agent, digital employee, or specialist). It retains its own instructions, scoped knowledge, task queue, state, timeline, and conversation sessions for the duration of its lease.","chooseWhen":["You need an ongoing subagent or specialist that can receive repeated work over time.","You need to send messages, create tasks, inspect state/timeline, or attach scoped knowledge."],"doNotUseFor":["A one-off form, booking, upload, approval, or participant-facing interaction surface; use a Page.","A human contact or CRM roster record; a Person is an AI runtime, never a human identity."],"aliases":["ongoing subagent","persistent AI worker","delegated agent","digital employee","AI specialist"],"supports":["isolated instructions","scoped knowledge","task queue","state","timeline","stable chat sessions"],"control":{"read":["GET /api/v3/control/persons/:id","GET /api/v3/control/persons/:id/files","GET /api/v3/control/persons/:id/tasks","GET /api/v3/control/persons/:id/timeline","GET /api/v3/control/persons/:id/state"],"write":["PATCH /api/v3/control/persons/:id","POST /api/v3/control/persons/:id/audience","POST /api/v3/control/persons/:id/files"],"execute":["POST /api/v3/control/persons/:id/tasks","POST /api/v3/control/persons/:id/chat","MCP invoke_person"],"destroy":["DELETE /api/v3/control/persons/:id"]},"lease":{"termDays":30,"includedTurnsPerTerm":250}},"page":{"definition":"A persistent, independently addressable participant-facing interactive surface on the controller's Anakin workspace. Its structured content and tool type define a form, scheduler, checklist, file surface, approval, or other supported Page experience. The default is custom_form. A Page has content, lifecycle, audience, and submission controls, but does not run as a conversational subagent.","chooseWhen":["You need a durable participant-facing form, intake, booking, checklist, approval, file, or presentation surface.","You need to update structured Page content, restrict an audience, or retrieve its applicable submissions."],"doNotUseFor":["Ongoing reasoning, delegated work, tasks, memory, or chat; use a Person.","Deploying an arbitrary website or Cloudflare Pages project."],"aliases":["interactive page","intake surface","form page","participant portal","booking page","approval page"],"toolType":"custom_form","defaultToolType":"custom_form","supportedToolTypes":{"custom_form":{"label":"Custom form","useFor":"Structured intake, lead capture, questionnaires, and response collection.","contentFields":["title","description","fields[]","submitButtonText","successMessage"]},"scheduler":{"label":"Scheduler","useFor":"A participant booking surface.","contentFields":["title","description","available_days","available_hours","timezone","slot_duration_minutes"]},"order_taker":{"label":"Order taker","useFor":"A catalog or order-intake surface. Any payment provider or fulfilment action must be configured separately.","contentFields":["title","description","currency","featured_category","checkout_mode"]},"file_sharer":{"label":"File sharer","useFor":"A participant-facing file list or download surface.","contentFields":["title","files[]"]},"checklist":{"label":"Checklist","useFor":"A structured participant checklist.","contentFields":["title","description","tasks[]"]},"e_signature":{"label":"E-signature","useFor":"A signing surface. Controllers must supply the document content and obtain any required legal review themselves.","contentFields":["document_title","signer_instructions","document_markdown","signing_mode"]},"payment":{"label":"Payment presentation","useFor":"An invoice or checkout presentation surface. It does not settle x402 or third-party payments by itself.","contentFields":["invoice_title","due_date","currency","checkout_url","line_items[]"]},"approval":{"label":"Approval","useFor":"A participant review or approval surface.","contentFields":["request_title","request_description","request_details_markdown"]},"file_vault":{"label":"File vault","useFor":"A participant file-sharing or upload-request surface.","contentFields":["vault_title","description","deposited_files[]","requested_uploads[]"]},"data_dashboard":{"label":"Data dashboard","useFor":"A participant-facing dashboard or metrics presentation.","contentFields":["dashboard_title","description","charts[]"]},"lead_collector":{"label":"Lead collector (compatibility type)","useFor":"A legacy/simple lead-capture Page. Prefer custom_form for a stable public content shape.","contentFields":["controller-defined content"]},"artifact":{"label":"Artifact (compatibility type)","useFor":"A workspace-defined participant artifact. Its content is application-specific; do not assume a stable external schema.","contentFields":["controller-defined content"]}},"contentContract":"Pass a JSON object in content. Its expected keys depend on toolType; omitted content receives a safe built-in default where one exists. Retrieve the Page after creation before relying on its effective content.","control":{"read":["GET /api/v3/control/pages/:id","GET /api/v3/control/pages/:id/submissions"],"write":["PATCH /api/v3/control/pages/:id","POST /api/v3/control/pages/:id/audience"],"execute":[],"destroy":["DELETE /api/v3/control/pages/:id"]},"lease":{"termDays":30,"includedSubmissionsPerTerm":500}}},"connection":{"discovery":["https://tryanakin.app/api/v3/catalog","https://tryanakin.app/api/v3/resource-model","https://tryanakin.app/api/v3/openapi.json","https://tryanakin.app/mcp","https://tryanakin.app/a2a"],"provisioning":"Send a provision request, handle the HTTP 402 challenge with an x402 payment client, then retry with PAYMENT-SIGNATURE.","authority":"Store the returned at_live_ capability only in secret storage. It is resource-scoped; use it only on /api/v3/control or Anakin MCP.","visitorPolicy":"Every human counterpart signs in. Public means any signed-in user; private means the signed-in owner or an approved audience email. This does not grant controller authority."},"safety":["Public discovery intentionally never enumerates resources, principals, audiences, knowledge, submissions, capability tokens, or payment identities.","Do not put at_live_ capabilities in prompts, public URLs, logs, tickets, or model-visible long-term memory.","A Page may present a payment or checkout link, but it does not authorize a controller to create payments or settle x402 on a participant's behalf."]}}}}}}},"/api/v3/agent-card":{"get":{"tags":["Discovery"],"operationId":"getAgentCard","summary":"Get the live A2A-shaped Anakin platform card.","responses":{"200":{"description":"Agent card","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/v3/resources/persons":{"post":{"tags":["Provisioning"],"operationId":"provisionPerson","summary":"Pay x402 then create a persistent, ongoing AI subagent Person lease.","description":"Choose this for recurring delegated work, memory, tasks, scoped knowledge, timeline/state, or conversational execution. Do not use it for a human roster record or a Page.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"},"description":"Required after receiving the 402 challenge."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonProvisionInput"}}}},"responses":{"201":{"description":"Provisioned Person and one-time plaintext capability token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"402":{"$ref":"#/components/responses/PaymentRequired"}}}},"/api/v3/resources/pages":{"post":{"tags":["Provisioning"],"operationId":"provisionPage","summary":"Pay x402 then create a participant-facing interactive Page lease.","description":"Choose this for a form, intake, booking, checklist, approval, file, signature, dashboard, or other supported participant surface. It does not run delegated tasks, retain subagent state, or provide chat; use a Person for those needs. Read /api/v3/resource-model before choosing a non-default toolType.","parameters":[{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageProvisionInput"}}}},"responses":{"201":{"description":"Provisioned Page and one-time plaintext capability token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"402":{"$ref":"#/components/responses/PaymentRequired"}}}},"/api/v3/resources/{type}/{id}/renew":{"post":{"tags":["Provisioning"],"operationId":"renewResource","summary":"Pay x402 to renew an existing Person or Page lease.","parameters":[{"in":"path","name":"type","required":true,"schema":{"type":"string","enum":["person","page"]}},{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"header","name":"PAYMENT-SIGNATURE","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Renewed lease","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"402":{"$ref":"#/components/responses/PaymentRequired"}}}},"/api/v3/tokens/refresh":{"post":{"tags":["Person control","Page control"],"operationId":"refreshCapabilityToken","security":[{"capabilityToken":[]}],"summary":"Rotate a still-valid or grace-period capability token for an active lease.","responses":{"200":{"description":"Replacement token","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/persons/{id}":{"get":{"tags":["Person control"],"operationId":"getPerson","security":[{"capabilityToken":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Person","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"patch":{"tags":["Person control"],"operationId":"updatePerson","security":[{"capabilityToken":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated Person","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"delete":{"tags":["Person control"],"operationId":"destroyPerson","security":[{"capabilityToken":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Destroyed Person","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/persons/{id}/audience":{"post":{"tags":["Person control"],"operationId":"setPersonAudience","security":[{"capabilityToken":[]}],"summary":"Set the signed-in human counterpart audience for a Person.","description":"This changes counterpart visibility only; it never grants controller authority. Controller access remains the resource-scoped bearer capability.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated Person access","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/persons/{id}/files":{"get":{"tags":["Person control"],"operationId":"listPersonKnowledge","security":[{"capabilityToken":[]}],"summary":"List this Person's scoped knowledge files.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private scoped knowledge list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"post":{"tags":["Person control"],"operationId":"addPersonKnowledge","security":[{"capabilityToken":[]}],"summary":"Add a text knowledge file scoped to one Person.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"name":{"type":"string"},"content":{"type":"string"},"mimeType":{"type":"string"}}}}}},"responses":{"201":{"description":"Knowledge granted","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/persons/{id}/tasks":{"get":{"tags":["Person control"],"operationId":"listPersonTasks","security":[{"capabilityToken":[]}],"summary":"Read tasks for an ongoing Person.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task list","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"post":{"tags":["Person control"],"operationId":"createPersonTask","security":[{"capabilityToken":[]}],"summary":"Assign bounded work to a Person.","description":"Pages do not support task execution.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"201":{"description":"Task created","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/persons/{id}/chat":{"post":{"tags":["Person control"],"operationId":"invokePerson","security":[{"capabilityToken":[]}],"summary":"Send a turn to a leased Person. Consumes one included turn and returns SSE.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string"},"message":{"type":"string"},"messages":{"type":"array","items":{"type":"object","additionalProperties":true}}},"anyOf":[{"required":["message"]},{"required":["messages"]}]}}}},"responses":{"200":{"description":"Person response stream","content":{"text/event-stream":{"schema":{"type":"string"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Lease expired; renew with x402"},"429":{"$ref":"#/components/responses/TurnLimitReached"}}}},"/api/v3/control/persons/{id}/timeline":{"get":{"tags":["Person control"],"operationId":"getPersonTimeline","security":[{"capabilityToken":[]}],"summary":"Read the isolated timeline for an ongoing Person.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Timeline events","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/persons/{id}/state":{"get":{"tags":["Person control"],"operationId":"getPersonState","security":[{"capabilityToken":[]}],"summary":"Read current derived state for an ongoing Person.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"scopeId","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Person state","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/pages/{id}":{"get":{"tags":["Page control"],"operationId":"getPage","security":[{"capabilityToken":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"patch":{"tags":["Page control"],"operationId":"updatePage","security":[{"capabilityToken":[]}],"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated Page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}},"delete":{"tags":["Page control"],"operationId":"destroyPage","security":[{"capabilityToken":[]}],"summary":"Permanently delete a Page and its submissions.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Destroyed Page","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/pages/{id}/audience":{"post":{"tags":["Page control"],"operationId":"setPageAudience","security":[{"capabilityToken":[]}],"summary":"Set the signed-in human counterpart audience for a Page.","description":"This does not grant controller authority.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Updated Page access","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v3/control/pages/{id}/submissions":{"get":{"tags":["Page control"],"operationId":"getPageSubmissions","security":[{"capabilityToken":[]}],"summary":"List private submissions for one controlled custom form Page.","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private form submissions","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}}}