{"openapi":"3.1.0","info":{"title":"SLOE OS Substrate API","version":"0.1.0+8bf142be","description":"The SLOE OS ability layer. Each ability is one operation: send its input, get its result. Calls are validated against the ability's schema, attributed to the tenant your credential belongs to, and audited. 79 abilities.","contact":{"name":"SLOE Labs","email":"ops@sloelabs.com"}},"servers":[{"url":"https://substrate.sloelabs.com"}],"externalDocs":{"url":"https://substrate.sloelabs.com/docs","description":"Your key's own page: the abilities it may call, MCP setup, limits."},"security":[{"bearerAuth":[]}],"tags":[{"name":"meta","description":"Discovery, health, and the generic execute envelope."},{"name":"capability"},{"name":"connection"},{"name":"contact"},{"name":"decision"},{"name":"document"},{"name":"email"},{"name":"event"},{"name":"file"},{"name":"guide"},{"name":"integration"},{"name":"key"},{"name":"lead"},{"name":"lesson"},{"name":"memory"},{"name":"message"},{"name":"payment"},{"name":"payout"},{"name":"plan"},{"name":"qa"},{"name":"research"},{"name":"sim"},{"name":"skill"},{"name":"task"},{"name":"trust"},{"name":"vertical"},{"name":"web"},{"name":"workflow"},{"name":"workspace"}],"paths":{"/v1/abilities/capability.discover":{"post":{"operationId":"capabilityDiscover","summary":"Search the live scoped capability registry before claiming a capability is absent.","description":"Search the live scoped capability registry before claiming a capability is absent.","tags":["capability"],"x-fern-sdk-group-name":"capability","x-fern-sdk-method-name":"discover","x-sloe-ability":"capability.discover","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/CapabilityDiscoverInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/connection.authorize":{"post":{"operationId":"connectionAuthorize","summary":"Start or complete actor-bound consent, revoke an account, or manage an explicit expiring share.","description":"Start or complete actor-bound consent, revoke an account, or manage an explicit expiring share.","tags":["connection"],"x-fern-sdk-group-name":"connection","x-fern-sdk-method-name":"authorize","x-sloe-ability":"connection.authorize","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ConnectionAuthorizeInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/connection.get":{"post":{"operationId":"connectionGet","summary":"Get one connection for your tenant by service (tenant-scoped read-back).","description":"Get one connection for your tenant by service (tenant-scoped read-back). Auth-required.","tags":["connection"],"x-fern-sdk-group-name":"connection","x-fern-sdk-method-name":"get","x-sloe-ability":"connection.get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ConnectionGetInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/connection.list":{"post":{"operationId":"connectionList","summary":"List the external-account connections wired for your tenant (Phase D).","description":"List the external-account connections wired for your tenant (Phase D). Each row shows a service (stripe|email|whatsapp…), its status (pending|connected|revoked), and the external ref (e.g. a Stripe acct_…). No connection for a service means abilities fall back to the SLOE platform account. Auth-required; tenant-scoped.","tags":["connection"],"x-fern-sdk-group-name":"connection","x-fern-sdk-method-name":"list","x-sloe-ability":"connection.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ConnectionListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/connection.revoke":{"post":{"operationId":"connectionRevoke","summary":"Revoke your tenant's connection for a service.","description":"Revoke your tenant's connection for a service. After revoke, the affected abilities (payment.*/message.send) fall back to the SLOE platform account. Auth-required; tenant-scoped.","tags":["connection"],"x-fern-sdk-group-name":"connection","x-fern-sdk-method-name":"revoke","x-sloe-ability":"connection.revoke","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ConnectionRevokeInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/contact.create":{"post":{"operationId":"contactCreate","summary":"Create a new contact (person or company)","description":"Create a new contact (person or company)","tags":["contact"],"x-fern-sdk-group-name":"contact","x-fern-sdk-method-name":"create","x-sloe-ability":"contact.create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ContactCreateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/contact.get":{"post":{"operationId":"contactGet","summary":"Get a single contact by id (tenant-scoped)","description":"Get a single contact by id (tenant-scoped)","tags":["contact"],"x-fern-sdk-group-name":"contact","x-fern-sdk-method-name":"get","x-sloe-ability":"contact.get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ContactGetInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/contact.list":{"post":{"operationId":"contactList","summary":"List contacts for the current tenant (tenant-scoped read-back)","description":"List contacts for the current tenant (tenant-scoped read-back)","tags":["contact"],"x-fern-sdk-group-name":"contact","x-fern-sdk-method-name":"list","x-sloe-ability":"contact.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ContactListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/contact.update":{"post":{"operationId":"contactUpdate","summary":"Update an existing contact","description":"Update an existing contact","tags":["contact"],"x-fern-sdk-group-name":"contact","x-fern-sdk-method-name":"update","x-sloe-ability":"contact.update","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ContactUpdateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/decision.list":{"post":{"operationId":"decisionList","summary":"List/search the tenant decision log (semantic).","description":"List/search the tenant decision log (semantic). A settled decision outranks any agent recommendation — consult before proposing changes to established behavior.","tags":["decision"],"x-fern-sdk-group-name":"decision","x-fern-sdk-method-name":"list","x-sloe-ability":"decision.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/DecisionListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/decision.record":{"post":{"operationId":"decisionRecord","summary":"Record a settled decision with its WHY (and optional supersedes: D-NNN).","description":"Record a settled decision with its WHY (and optional supersedes: D-NNN). Returns a citable per-tenant id (D-001…). Agents should record decisions the OPERATOR has settled — never their own preferences — and cite ids instead of re-litigating.","tags":["decision"],"x-fern-sdk-group-name":"decision","x-fern-sdk-method-name":"record","x-sloe-ability":"decision.record","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/DecisionRecordInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/document.generate":{"post":{"operationId":"documentGenerate","summary":"Generate a document from a template","description":"Generate a document from a template","tags":["document"],"x-fern-sdk-group-name":"document","x-fern-sdk-method-name":"generate","x-sloe-ability":"document.generate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/DocumentGenerateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/document.summarize":{"post":{"operationId":"documentSummarize","summary":"Summarize a document or text","description":"Summarize a document or text","tags":["document"],"x-fern-sdk-group-name":"document","x-fern-sdk-method-name":"summarize","x-sloe-ability":"document.summarize","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/DocumentSummarizeInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/email.render":{"post":{"operationId":"emailRender","summary":"Render a polished, on-brand HTML + plain-text email from a spec against the shared email vocabulary (templates: notic...","description":"Render a polished, on-brand HTML + plain-text email from a spec against the shared email vocabulary (templates: notice, invoice, receipt). Deterministic — no LLM, no send. Pass a per-tenant theme (brand colours, logo URL, firmName, tagline, siteUrl) so output is on-brand for any vertical. An agent composes the spec; compose with message.send to deliver.","tags":["email"],"x-fern-sdk-group-name":"email","x-fern-sdk-method-name":"render","x-sloe-ability":"email.render","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/EmailRenderInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/event.emit":{"post":{"operationId":"eventEmit","summary":"Emit a substrate event for other systems to react to","description":"Emit a substrate event for other systems to react to","tags":["event"],"x-fern-sdk-group-name":"event","x-fern-sdk-method-name":"emit","x-sloe-ability":"event.emit","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/EventEmitInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/file.store":{"post":{"operationId":"fileStore","summary":"Store a file in R2 storage","description":"Store a file in R2 storage","tags":["file"],"x-fern-sdk-group-name":"file","x-fern-sdk-method-name":"store","x-sloe-ability":"file.store","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/FileStoreInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/guide.list":{"post":{"operationId":"guideList","summary":"List the guides currently live on a product's help centre (reads its guides.json manifest) — the corpus the in-app He...","description":"List the guides currently live on a product's help centre (reads its guides.json manifest) — the corpus the in-app Help page and AI support assistant use.","tags":["guide"],"x-fern-sdk-group-name":"guide","x-fern-sdk-method-name":"list","x-sloe-ability":"guide.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/GuideListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/guide.publish":{"post":{"operationId":"guidePublish","summary":"Publish a user guide to a product's help centre (Cloudflare Pages) and return its public URL.","description":"Publish a user guide to a product's help centre (Cloudflare Pages) and return its public URL. Writes markdown into the product's tenant guides dir and runs the Guide Center build and deploy. The key's guideProducts allow-list decides which products it may publish to (fail-closed). Guide syntax: the Guide Center Markdown format.","tags":["guide"],"x-fern-sdk-group-name":"guide","x-fern-sdk-method-name":"publish","x-sloe-ability":"guide.publish","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/GuidePublishInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.app.connect":{"post":{"operationId":"integrationAppConnect","summary":"SloeIntegrations: start a sign-in (returns the consent URL), finish it after consent, connect with the firm's own key...","description":"SloeIntegrations: start a sign-in (returns the consent URL), finish it after consent, connect with the firm's own key, or revoke a connection.","tags":["integration"],"x-fern-sdk-group-name":"integration.app","x-fern-sdk-method-name":"connect","x-sloe-ability":"integration.app.connect","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationAppConnectInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.app.connections":{"post":{"operationId":"integrationAppConnections","summary":"SloeIntegrations: list the firm's connected accounts, and which apps' Connect will succeed (null = see toolkits).","description":"SloeIntegrations: list the firm's connected accounts, and which apps' Connect will succeed (null = see toolkits).","tags":["integration"],"x-fern-sdk-group-name":"integration.app","x-fern-sdk-method-name":"connections","x-sloe-ability":"integration.app.connections","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationAppConnectionsInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.app.execute":{"post":{"operationId":"integrationAppExecute","summary":"SloeIntegrations: run a tool on one of the firm's connections for the named signed-in user.","description":"SloeIntegrations: run a tool on one of the firm's connections for the named signed-in user. Writes need an idempotency key; destructive tools need confirmed: true.","tags":["integration"],"x-fern-sdk-group-name":"integration.app","x-fern-sdk-method-name":"execute","x-sloe-ability":"integration.app.execute","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationAppExecuteInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.app.toolkits":{"post":{"operationId":"integrationAppToolkits","summary":"SloeIntegrations: search the apps a firm can connect, and how each signs in (signIn.oauth / signIn.key); with {toolki...","description":"SloeIntegrations: search the apps a firm can connect, and how each signs in (signIn.oauth / signIn.key); with {toolkit}, the fields its key sign-in asks for.","tags":["integration"],"x-fern-sdk-group-name":"integration.app","x-fern-sdk-method-name":"toolkits","x-sloe-ability":"integration.app.toolkits","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationAppToolkitsInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.app.tools":{"post":{"operationId":"integrationAppTools","summary":"SloeIntegrations: list the tools of one of the firm's connections, classed read / write / destructive.","description":"SloeIntegrations: list the tools of one of the firm's connections, classed read / write / destructive.","tags":["integration"],"x-fern-sdk-group-name":"integration.app","x-fern-sdk-method-name":"tools","x-sloe-ability":"integration.app.tools","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationAppToolsInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.execute":{"post":{"operationId":"integrationExecute","summary":"Execute one version-pinned tool using an explicit owned or shared connection and server policy.","description":"Execute one version-pinned tool using an explicit owned or shared connection and server policy.","tags":["integration"],"x-fern-sdk-group-name":"integration","x-fern-sdk-method-name":"execute","x-sloe-ability":"integration.execute","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationExecuteInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/integration.search":{"post":{"operationId":"integrationSearch","summary":"Discover approved tools or list the authenticated principal connections.","description":"Discover approved tools or list the authenticated principal connections.","tags":["integration"],"x-fern-sdk-group-name":"integration","x-fern-sdk-method-name":"search","x-sloe-ability":"integration.search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/IntegrationSearchInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/key.inspect":{"post":{"operationId":"keyInspect","summary":"What can THIS key do — tenant, the abilities it may call (expanded), collections, sub-tenant flag, admin, and — once ...","description":"What can THIS key do — tenant, the abilities it may call (expanded), collections, sub-tenant flag, admin, and — once it resolves through the keys table — id/prefix/created/expires/last used. What an MCP host or a generated docs page renders from. Auth-required; no admin needed.","tags":["key"],"x-fern-sdk-group-name":"key","x-fern-sdk-method-name":"inspect","x-sloe-ability":"key.inspect","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/KeyInspectInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/key.issue":{"post":{"operationId":"keyIssue","summary":"Mint a new API key for a tenant.","description":"Mint a new API key for a tenant. Returns the raw key ONCE (only a sha256 is stored). Admin keys may issue for any tenant; a tenant key may issue only for its own tenant and never wider than itself (abilities/collections must be a subset). Auth-required.","tags":["key"],"x-fern-sdk-group-name":"key","x-fern-sdk-method-name":"issue","x-sloe-ability":"key.issue","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/KeyIssueInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/key.list":{"post":{"operationId":"keyList","summary":"List API keys — never the secrets.","description":"List API keys — never the secrets. Tenant · name · prefix · status · scopes · created · last used · expires. Admin keys see every tenant (optionally filtered) plus how many requests still authenticate through the legacy env blob; a tenant key sees only its own. Auth-required.","tags":["key"],"x-fern-sdk-group-name":"key","x-fern-sdk-method-name":"list","x-sloe-ability":"key.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/KeyListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/key.revoke":{"post":{"operationId":"keyRevoke","summary":"Revoke a key immediately (takes effect within the 30s auth cache).","description":"Revoke a key immediately (takes effect within the 30s auth cache). Admin, or the key's own tenant. Revoking the key you are calling with needs confirmSelf:true. Auth-required.","tags":["key"],"x-fern-sdk-group-name":"key","x-fern-sdk-method-name":"revoke","x-sloe-ability":"key.revoke","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/KeyRevokeInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/key.rotate":{"post":{"operationId":"keyRotate","summary":"Rotate a key: mints a successor with the same tenant/name/scopes (raw key returned ONCE) and gives the old key an exp...","description":"Rotate a key: mints a successor with the same tenant/name/scopes (raw key returned ONCE) and gives the old key an expiry — default 24h overlap — so consumers can be moved without an outage. Admin, or the key's own tenant. Auth-required.","tags":["key"],"x-fern-sdk-group-name":"key","x-fern-sdk-method-name":"rotate","x-sloe-ability":"key.rotate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/KeyRotateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/lead.create":{"post":{"operationId":"leadCreate","summary":"Create a new lead in the pipeline","description":"Create a new lead in the pipeline","tags":["lead"],"x-fern-sdk-group-name":"lead","x-fern-sdk-method-name":"create","x-sloe-ability":"lead.create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/LeadCreateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/lead.get":{"post":{"operationId":"leadGet","summary":"Get one lead by id, scoped to your tenant","description":"Get one lead by id, scoped to your tenant","tags":["lead"],"x-fern-sdk-group-name":"lead","x-fern-sdk-method-name":"get","x-sloe-ability":"lead.get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/LeadGetInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/lead.list":{"post":{"operationId":"leadList","summary":"List leads for your tenant, optionally filtered by status","description":"List leads for your tenant, optionally filtered by status","tags":["lead"],"x-fern-sdk-group-name":"lead","x-fern-sdk-method-name":"list","x-sloe-ability":"lead.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/LeadListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/lead.update_status":{"post":{"operationId":"leadUpdateStatus","summary":"Update a lead status (new, qualified, won, lost)","description":"Update a lead status (new, qualified, won, lost)","tags":["lead"],"x-fern-sdk-group-name":"lead","x-fern-sdk-method-name":"updateStatus","x-sloe-ability":"lead.update_status","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/LeadUpdateStatusInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/lesson.record":{"post":{"operationId":"lessonRecord","summary":"Append a lesson to the SLOE OS lessons inbox for the consolidator pipeline (dedupe -> skills regen -> guardrail promo...","description":"Append a lesson to the SLOE OS lessons inbox for the consolidator pipeline (dedupe -> skills regen -> guardrail promotion). Append-only; does NOT write lessons.json/skills/guardrails directly. Auth-required.","tags":["lesson"],"x-fern-sdk-group-name":"lesson","x-fern-sdk-method-name":"record","x-sloe-ability":"lesson.record","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/LessonRecordInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/memory.forget":{"post":{"operationId":"memoryForget","summary":"Delete points from a scoped collection by id list or payload filter.","description":"Delete points from a scoped collection by id list or payload filter. Auth-required.","tags":["memory"],"x-fern-sdk-group-name":"memory","x-fern-sdk-method-name":"forget","x-sloe-ability":"memory.forget","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/MemoryForgetInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/memory.recall":{"post":{"operationId":"memoryRecall","summary":"Search a scoped collection and return the top matches formatted as a ready-to-inject context block.","description":"Search a scoped collection and return the top matches formatted as a ready-to-inject context block. Auth-required.","tags":["memory"],"x-fern-sdk-group-name":"memory","x-fern-sdk-method-name":"recall","x-sloe-ability":"memory.recall","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/MemoryRecallInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/memory.save":{"post":{"operationId":"memorySave","summary":"Embed and store a text memory into a scoped collection (gemini-embedding-001@768, stamped with embedder id + timestam...","description":"Embed and store a text memory into a scoped collection (gemini-embedding-001@768, stamped with embedder id + timestamp; collection auto-created). Auth-required; collection must be in the caller key's scope.","tags":["memory"],"x-fern-sdk-group-name":"memory","x-fern-sdk-method-name":"save","x-sloe-ability":"memory.save","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/MemorySaveInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/memory.search":{"post":{"operationId":"memorySearch","summary":"Semantic search over a scoped memory collection.","description":"Semantic search over a scoped memory collection. Sends TEXT; the substrate embeds server-side (gemini-embedding-001@768), cosine-ranks, applies recency decay, returns top matches. Auth-required; the collection must be in the caller key's scope.","tags":["memory"],"x-fern-sdk-group-name":"memory","x-fern-sdk-method-name":"search","x-sloe-ability":"memory.search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/MemorySearchInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/message.send":{"post":{"operationId":"messageSend","summary":"Send a message through any channel","description":"Send a message through any channel","tags":["message"],"x-fern-sdk-group-name":"message","x-fern-sdk-method-name":"send","x-sloe-ability":"message.send","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/MessageSendInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/message.send_markdown":{"post":{"operationId":"messageSendMarkdown","summary":"Send an email rendered from markdown to styled HTML.","description":"Send an email rendered from markdown to styled HTML. Use for runbooks, handoffs, incident reports, ops emails — anywhere markdown is the natural source-of-truth.","tags":["message"],"x-fern-sdk-group-name":"message","x-fern-sdk-method-name":"sendMarkdown","x-sloe-ability":"message.send_markdown","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/MessageSendMarkdownInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payment.initiate":{"post":{"operationId":"paymentInitiate","summary":"Initiate a payment, invoice, or charge.","description":"Initiate a payment, invoice, or charge. provider 'stripe' (default) creates a Stripe Payment Link (Connect direct-charge + application_fee when the tenant is connected); provider 'paystack' creates a Paystack checkout SPLIT charge on SLOE's platform account routed to the tenant's collections subaccount (requires customerEmail).","tags":["payment"],"x-fern-sdk-group-name":"payment","x-fern-sdk-method-name":"initiate","x-sloe-ability":"payment.initiate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PaymentInitiateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payment.list":{"post":{"operationId":"paymentList","summary":"List payments for the current tenant (tenant-scoped)","description":"List payments for the current tenant (tenant-scoped)","tags":["payment"],"x-fern-sdk-group-name":"payment","x-fern-sdk-method-name":"list","x-sloe-ability":"payment.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PaymentListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payment.status":{"post":{"operationId":"paymentStatus","summary":"Get a payment's current status (tenant-scoped read-back)","description":"Get a payment's current status (tenant-scoped read-back)","tags":["payment"],"x-fern-sdk-group-name":"payment","x-fern-sdk-method-name":"status","x-sloe-ability":"payment.status","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PaymentStatusInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payout.balance":{"post":{"operationId":"payoutBalance","summary":"Get the tenant's payout provider balance / financial-account balance (feeds a float widget).","description":"Get the tenant's payout provider balance / financial-account balance (feeds a float widget). Auth-required; tenant-scoped.","tags":["payout"],"x-fern-sdk-group-name":"payout","x-fern-sdk-method-name":"balance","x-sloe-ability":"payout.balance","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PayoutBalanceInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payout.batch":{"post":{"operationId":"payoutBatch","summary":"Disburse many payments in one run (e.g.","description":"Disburse many payments in one run (e.g. a full payroll). Paystack uses a native bulk transfer (requires OTP disabled on the tenant's account); Stripe loops. amounts are minor units. Auth-required; tenant-scoped.","tags":["payout"],"x-fern-sdk-group-name":"payout","x-fern-sdk-method-name":"batch","x-sloe-ability":"payout.batch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PayoutBatchInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payout.list":{"post":{"operationId":"payoutList","summary":"List payouts for the current tenant (tenant-scoped).","description":"List payouts for the current tenant (tenant-scoped).","tags":["payout"],"x-fern-sdk-group-name":"payout","x-fern-sdk-method-name":"list","x-sloe-ability":"payout.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PayoutListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payout.send":{"post":{"operationId":"payoutSend","summary":"Disburse a single payment (e.g.","description":"Disburse a single payment (e.g. an employee salary) to a bank account, on the tenant's OWN connected payout provider (paystack | stripe). amount is INTEGER MINOR UNITS (cents). Refuses if the tenant has no payout connection. Auth-required; tenant-scoped.","tags":["payout"],"x-fern-sdk-group-name":"payout","x-fern-sdk-method-name":"send","x-sloe-ability":"payout.send","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PayoutSendInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payout.status":{"post":{"operationId":"payoutStatus","summary":"Get a payout's current status (tenant-scoped read-back).","description":"Get a payout's current status (tenant-scoped read-back).","tags":["payout"],"x-fern-sdk-group-name":"payout","x-fern-sdk-method-name":"status","x-sloe-ability":"payout.status","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PayoutStatusInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/payout.verify_account":{"post":{"operationId":"payoutVerifyAccount","summary":"Validate a beneficiary bank account (AVS) on the tenant's payout provider before paying.","description":"Validate a beneficiary bank account (AVS) on the tenant's payout provider before paying. Paystack /bank/validate (costs the tenant a small fee per check). Auth-required; tenant-scoped.","tags":["payout"],"x-fern-sdk-group-name":"payout","x-fern-sdk-method-name":"verifyAccount","x-sloe-ability":"payout.verify_account","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PayoutVerifyAccountInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/plan.create":{"post":{"operationId":"planCreate","summary":"Create an execution plan from a goal — breaks into phases with dependencies, checks templates and lessons","description":"Create an execution plan from a goal — breaks into phases with dependencies, checks templates and lessons","tags":["plan"],"x-fern-sdk-group-name":"plan","x-fern-sdk-method-name":"create","x-sloe-ability":"plan.create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PlanCreateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/plan.execute":{"post":{"operationId":"planExecute","summary":"Execute a specific phase of a plan — runs the ability chain for that phase","description":"Execute a specific phase of a plan — runs the ability chain for that phase","tags":["plan"],"x-fern-sdk-group-name":"plan","x-fern-sdk-method-name":"execute","x-sloe-ability":"plan.execute","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PlanExecuteInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/plan.learn":{"post":{"operationId":"planLearn","summary":"Extract lessons from a completed plan — saves template for reuse, feeds learning engine","description":"Extract lessons from a completed plan — saves template for reuse, feeds learning engine","tags":["plan"],"x-fern-sdk-group-name":"plan","x-fern-sdk-method-name":"learn","x-sloe-ability":"plan.learn","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PlanLearnInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/plan.verify":{"post":{"operationId":"planVerify","summary":"Verify a phase completed successfully — checks all ability results","description":"Verify a phase completed successfully — checks all ability results","tags":["plan"],"x-fern-sdk-group-name":"plan","x-fern-sdk-method-name":"verify","x-sloe-ability":"plan.verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/PlanVerifyInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/qa.browser_check":{"post":{"operationId":"qaBrowserCheck","summary":"Headless real-browser QA pass against a public URL: loads it in Chromium, returns HTTP status, title, console errors,...","description":"Headless real-browser QA pass against a public URL: loads it in Chromium, returns HTTP status, title, console errors, failed requests (>=400), a pass boolean, and a stored R2 screenshot. Use after deploys and for client-site smoke checks. Internal/private hosts refused.","tags":["qa"],"x-fern-sdk-group-name":"qa","x-fern-sdk-method-name":"browserCheck","x-sloe-ability":"qa.browser_check","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/QaBrowserCheckInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/qa.checklist.create":{"post":{"operationId":"qaChecklistCreate","summary":"Generate a branded, hosted QA checklist for any Sloe Labs product.","description":"Generate a branded, hosted QA checklist for any Sloe Labs product. Substrate hosts it at /qa/<id>; non-technical testers run plain-language checks, submit in-page, and the substrate stores results + emits a substrate event (default qa.results.received) so UAT pipelines pick them up automatically.","tags":["qa"],"x-fern-sdk-group-name":"qa.checklist","x-fern-sdk-method-name":"create","x-sloe-ability":"qa.checklist.create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/QaChecklistCreateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/research.verify":{"post":{"operationId":"researchVerify","summary":"Search current web sources and capture registered official pages.","description":"Search current web sources and capture registered official pages. Returns observations, not automatic truth.","tags":["research"],"x-fern-sdk-group-name":"research","x-fern-sdk-method-name":"verify","x-sloe-ability":"research.verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/ResearchVerifyInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/sim.generate":{"post":{"operationId":"simGenerate","summary":"Generate a playable case study from a GitHub PR and publish it to sims.sloelabs.com.","description":"Generate a playable case study from a GitHub PR and publish it to sims.sloelabs.com. Fetches the PR description + diff, has Claude write an interactive sim against the sim-kit contract, syntax-checks it, then builds + deploys the sims site and returns the public URL. Fail-closed: the key must carry simGenerate:true. Spends real model tokens; hand-crafted repo sims always win over generated ones on slug clash.","tags":["sim"],"x-fern-sdk-group-name":"sim","x-fern-sdk-method-name":"generate","x-sloe-ability":"sim.generate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/SimGenerateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/sim.list":{"post":{"operationId":"simList","summary":"List the playable case studies live on sims.sloelabs.com (reads the site's sims.json manifest).","description":"List the playable case studies live on sims.sloelabs.com (reads the site's sims.json manifest).","tags":["sim"],"x-fern-sdk-group-name":"sim","x-fern-sdk-method-name":"list","x-sloe-ability":"sim.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/SimListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/skill.list":{"post":{"operationId":"skillList","summary":"List the available skill/knowledge packs (auto-generated from lessons) with one-line descriptions.","description":"List the available skill/knowledge packs (auto-generated from lessons) with one-line descriptions. Auth-required.","tags":["skill"],"x-fern-sdk-group-name":"skill","x-fern-sdk-method-name":"list","x-sloe-ability":"skill.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/SkillListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/skill.load":{"post":{"operationId":"skillLoad","summary":"Load a skill/knowledge pack by name (e.g.","description":"Load a skill/knowledge pack by name (e.g. engineering, ops, security, architecture-gaps, tools) and return its content for injection. Pass name 'guardrails' for the hard behavioural rules. Auth-required.","tags":["skill"],"x-fern-sdk-group-name":"skill","x-fern-sdk-method-name":"load","x-sloe-ability":"skill.load","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/SkillLoadInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/task.create":{"post":{"operationId":"taskCreate","summary":"Create a task for a human or agent","description":"Create a task for a human or agent","tags":["task"],"x-fern-sdk-group-name":"task","x-fern-sdk-method-name":"create","x-sloe-ability":"task.create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TaskCreateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/task.get":{"post":{"operationId":"taskGet","summary":"Get one task by id, scoped to your tenant","description":"Get one task by id, scoped to your tenant","tags":["task"],"x-fern-sdk-group-name":"task","x-fern-sdk-method-name":"get","x-sloe-ability":"task.get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TaskGetInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/task.list":{"post":{"operationId":"taskList","summary":"List tasks for your tenant, optionally filtered by status","description":"List tasks for your tenant, optionally filtered by status","tags":["task"],"x-fern-sdk-group-name":"task","x-fern-sdk-method-name":"list","x-sloe-ability":"task.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TaskListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/task.update_status":{"post":{"operationId":"taskUpdateStatus","summary":"Update a task status (pending, in_progress, done, cancelled)","description":"Update a task status (pending, in_progress, done, cancelled)","tags":["task"],"x-fern-sdk-group-name":"task","x-fern-sdk-method-name":"updateStatus","x-sloe-ability":"task.update_status","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TaskUpdateStatusInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/trust.preflight":{"post":{"operationId":"trustPreflight","summary":"Create a time-bounded run and single-use permits for exact actions.","description":"Create a time-bounded run and single-use permits for exact actions. Attach fresh server receipts for consequential claims.","tags":["trust"],"x-fern-sdk-group-name":"trust","x-fern-sdk-method-name":"preflight","x-sloe-ability":"trust.preflight","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TrustPreflightInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/trust.publish":{"post":{"operationId":"trustPublish","summary":"Publish a structured answer with observed, inference, or unverified labels.","description":"Publish a structured answer with observed, inference, or unverified labels. Outcome verification is not inferred from retrieval.","tags":["trust"],"x-fern-sdk-group-name":"trust","x-fern-sdk-method-name":"publish","x-sloe-ability":"trust.publish","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TrustPublishInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/trust.status":{"post":{"operationId":"trustStatus","summary":"Read a run, its block reasons, deadline and action outcomes.","description":"Read a run, its block reasons, deadline and action outcomes.","tags":["trust"],"x-fern-sdk-group-name":"trust","x-fern-sdk-method-name":"status","x-sloe-ability":"trust.status","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/TrustStatusInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/vertical.list":{"post":{"operationId":"verticalList","summary":"List the verticals the substrate serves (from each vertical's manifest): id, name, version, whether a SURFACE manifes...","description":"List the verticals the substrate serves (from each vertical's manifest): id, name, version, whether a SURFACE manifest exists, its screen ids. A vertical is a manifest, not a fork.","tags":["vertical"],"x-fern-sdk-group-name":"vertical","x-fern-sdk-method-name":"list","x-sloe-ability":"vertical.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/VerticalListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/vertical.manifest_get":{"post":{"operationId":"verticalManifestGet","summary":"Get a vertical's SURFACE manifest — the runtime half: nouns, screens as gen-UI node types with bindings, capture type...","description":"Get a vertical's SURFACE manifest — the runtime half: nouns, screens as gen-UI node types with bindings, capture types (Step 2), signals (Step 3), and actions that are a substrate ability or a guarded host endpoint, never SQL. Runs manifest-lint on every serve and REFUSES a surface that fails it (findings by path). section='all' returns the whole manifest (provisioning keys included). No tenant data, no secrets; any authenticated key may read.","tags":["vertical"],"x-fern-sdk-group-name":"vertical","x-fern-sdk-method-name":"manifestGet","x-sloe-ability":"vertical.manifest_get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/VerticalManifestGetInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/web.browse":{"post":{"operationId":"webBrowse","summary":"Do a task on the web with a real browser (hosted, off SLOE's network): the agent looks at the page and clicks, types,...","description":"Do a task on the web with a real browser (hosted, off SLOE's network): the agent looks at the page and clicks, types, scrolls and navigates until it can answer. Returns status done|held|stopped|error, the answer, every step taken, and a final screenshot. It never types passwords, card numbers or codes, and it stops with status 'held' before submitting any form that sends, buys, books or logs in, so a person can decide. Private and SLOE-internal addresses are never visited.","tags":["web"],"x-fern-sdk-group-name":"web","x-fern-sdk-method-name":"browse","x-sloe-ability":"web.browse","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WebBrowseInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/web.research":{"post":{"operationId":"webResearch","summary":"Answer a question from the open web: searches, reads the top pages, and writes an answer where every claim cites its ...","description":"Answer a question from the open web: searches, reads the top pages, and writes an answer where every claim cites its source [n]. Returns the answer, the sources (url, title, whether read, whether cited) and a grounded flag. Read-only: it never clicks, types or submits. Private and SLOE-internal addresses are never read.","tags":["web"],"x-fern-sdk-group-name":"web","x-fern-sdk-method-name":"research","x-sloe-ability":"web.research","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WebResearchInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workflow.trigger":{"post":{"operationId":"workflowTrigger","summary":"Trigger an n8n workflow or multi-step process","description":"Trigger an n8n workflow or multi-step process","tags":["workflow"],"x-fern-sdk-group-name":"workflow","x-fern-sdk-method-name":"trigger","x-sloe-ability":"workflow.trigger","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkflowTriggerInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workspace.doc.close":{"post":{"operationId":"workspaceDocClose","summary":"Freeze a hosted document as a record.","description":"Freeze a hosted document as a record. Further patches need force:true. Emits workspace.doc.closed carrying the final markdown, which is what a git-sync subscriber commits.","tags":["workspace"],"x-fern-sdk-group-name":"workspace.doc","x-fern-sdk-method-name":"close","x-sloe-ability":"workspace.doc.close","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkspaceDocCloseInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workspace.doc.comment":{"post":{"operationId":"workspaceDocComment","summary":"Comment on a hosted document, optionally anchored to one block and threaded under a parent comment.","description":"Comment on a hosted document, optionally anchored to one block and threaded under a parent comment. Emits workspace.doc.commented.","tags":["workspace"],"x-fern-sdk-group-name":"workspace.doc","x-fern-sdk-method-name":"comment","x-sloe-ability":"workspace.doc.comment","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkspaceDocCommentInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workspace.doc.create":{"post":{"operationId":"workspaceDocCreate","summary":"Create a hosted, block-addressed working document.","description":"Create a hosted, block-addressed working document. Substrate serves it at /doc/<id> behind a signed expiring link; humans read and edit it in a browser (phone included) while agents patch it by block, and every change emits a substrate event so git-sync / Telegram / UAT pipelines pick it up. Create the SKELETON FIRST — title plus one `pending` block per section — then fill each with workspace.doc.patch, so the reader watches it fill and a second agent can claim a different section.","tags":["workspace"],"x-fern-sdk-group-name":"workspace.doc","x-fern-sdk-method-name":"create","x-sloe-ability":"workspace.doc.create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkspaceDocCreateInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workspace.doc.list":{"post":{"operationId":"workspaceDocList","summary":"List this tenant's hosted documents, newest first, with how many sections are still pending.","description":"List this tenant's hosted documents, newest first, with how many sections are still pending.","tags":["workspace"],"x-fern-sdk-group-name":"workspace.doc","x-fern-sdk-method-name":"list","x-sloe-ability":"workspace.doc.list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkspaceDocListInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workspace.doc.patch":{"post":{"operationId":"workspaceDocPatch","summary":"Change a hosted document by block.","description":"Change a hosted document by block. ALL-OR-NOTHING: if any op fails nothing is written. Two optional concurrency guards — `if_revision` (whole doc) and per-op `if_block_rev` (one block); a mismatch returns conflict:true and changes nothing, so re-read and retry. `claim` marks a block as yours for 15 minutes and blocks other actors' writes to it — this is how two agents work one document at once without a merge.","tags":["workspace"],"x-fern-sdk-group-name":"workspace.doc","x-fern-sdk-method-name":"patch","x-sloe-ability":"workspace.doc.patch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkspaceDocPatchInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/v1/abilities/workspace.doc.read":{"post":{"operationId":"workspaceDocRead","summary":"Read a hosted document: every block with its id and rev, plus its share links.","description":"Read a hosted document: every block with its id and rev, plus its share links. Read before patching — the revs you get back are what if_block_rev guards against.","tags":["workspace"],"x-fern-sdk-group-name":"workspace.doc","x-fern-sdk-method-name":"read","x-sloe-ability":"workspace.doc.read","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"$ref":"#/components/schemas/WorkspaceDocReadInput"},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/abilities/execute":{"post":{"operationId":"execute","summary":"Run any ability by id","description":"The original envelope: the same as POST /v1/abilities/{id}, with the ability named in the body.","tags":["meta"],"x-fern-sdk-group-name":"meta","x-fern-sdk-method-name":"execute","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ability","input"],"properties":{"ability":{"type":"string","enum":["capability.discover","connection.authorize","connection.get","connection.list","connection.revoke","contact.create","contact.get","contact.list","contact.update","decision.list","decision.record","document.generate","document.summarize","email.render","event.emit","file.store","guide.list","guide.publish","integration.app.connect","integration.app.connections","integration.app.execute","integration.app.toolkits","integration.app.tools","integration.execute","integration.search","key.inspect","key.issue","key.list","key.revoke","key.rotate","lead.create","lead.get","lead.list","lead.update_status","lesson.record","memory.forget","memory.recall","memory.save","memory.search","message.send","message.send_markdown","payment.initiate","payment.list","payment.status","payout.balance","payout.batch","payout.list","payout.send","payout.status","payout.verify_account","plan.create","plan.execute","plan.learn","plan.verify","qa.browser_check","qa.checklist.create","research.verify","sim.generate","sim.list","skill.list","skill.load","task.create","task.get","task.list","task.update_status","trust.preflight","trust.publish","trust.status","vertical.list","vertical.manifest_get","web.browse","web.research","workflow.trigger","workspace.doc.close","workspace.doc.comment","workspace.doc.create","workspace.doc.list","workspace.doc.patch","workspace.doc.read"]},"input":{"type":"object","description":"Matches the named ability's input schema."},"context":{"$ref":"#/components/schemas/CallContext"}}}}}},"responses":{"200":{"description":"The ability ran.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbilityResult"}}}},"400":{"description":"Missing or unknown ability, or input that fails its schema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"501":{"$ref":"#/components/responses/NotImplemented"},"default":{"$ref":"#/components/responses/Error"}}}},"/abilities":{"get":{"operationId":"listAbilities","summary":"List the abilities","tags":["meta"],"security":[],"x-fern-sdk-group-name":"meta","x-fern-sdk-method-name":"listAbilities","responses":{"200":{"description":"Every ability, with its description.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"description":{"type":"string"}}}}}}}}}},"/health":{"get":{"operationId":"health","summary":"Health check","tags":["meta"],"security":[],"x-fern-sdk-group-name":"meta","x-fern-sdk-method-name":"health","responses":{"200":{"description":"The substrate is up.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"abilities":{"type":"integer"}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A substrate API key, or a SloeAuth access token."}},"schemas":{"CallContext":{"type":"object","description":"Optional call context. The tenant always comes from the credential: `tenantId` is honoured only by a credential allowed to address sub-tenants, and then nests under the credential's own tenant.","properties":{"tenantId":{"type":"string","description":"Sub-tenant to act for (sub-tenant credentials only)."},"runId":{"type":"string","description":"The trust run (from trust.preflight) this call executes under."},"verticalId":{"type":"string","description":"Vertical to attribute created records to."}}},"AbilityResult":{"type":"object","required":["ok","ability","result","duration"],"properties":{"ok":{"type":"boolean","const":true},"ability":{"type":"string","description":"The ability that ran."},"result":{"description":"The ability's return value. Its shape depends on the ability."},"duration":{"type":"integer","description":"Server-side execution time, in milliseconds."}}},"ErrorResponse":{"type":"object","required":["ok","error"],"properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"ability":{"type":"string"},"reason":{"type":"string"},"details":{"type":"array","items":{"type":"object"},"description":"JSON Schema validation errors."},"code":{"description":"A machine-readable error code, when the ability sets one."},"retryAfterMs":{"type":"integer"}}},"CapabilityDiscoverInput":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","minLength":1,"maxLength":200}},"required":[]},"ConnectionAuthorizeInput":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"action":{"const":"authorize"},"service":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"returnUrl":{"type":"string","maxLength":2048}},"required":["service"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"callback"},"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"sessionUri":{"type":"string","minLength":1,"maxLength":4096}},"required":["action","connectionId","state","sessionUri"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"revoke"},"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"}},"required":["action","connectionId"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"share"},"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"principalId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"toolIds":{"type":"array","uniqueItems":true,"maxItems":100,"items":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"}},"expiresAt":{"type":"string","maxLength":40}},"required":["action","connectionId","principalId","toolIds"]}]},"ConnectionGetInput":{"type":"object","required":["service"],"properties":{"service":{"type":"string","description":"Service key, e.g. stripe | email | whatsapp"}}},"ConnectionListInput":{"type":"object","properties":{}},"ConnectionRevokeInput":{"type":"object","required":["service"],"properties":{"service":{"type":"string","description":"Service key to revoke, e.g. stripe"}}},"ContactCreateInput":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"company":{"type":"string"},"metadata":{"type":"object"},"idempotencyKey":{"type":"string"}}},"ContactGetInput":{"type":"object","required":["contactId"],"properties":{"contactId":{"type":"string"}}},"ContactListInput":{"type":"object","required":[],"properties":{"status":{"type":"string"},"limit":{"type":"number"}}},"ContactUpdateInput":{"type":"object","required":["contactId","fields"],"properties":{"contactId":{"type":"string"},"fields":{"type":"object"}}},"DecisionListInput":{"type":"object","properties":{"query":{"type":"string","description":"What are you about to re-litigate?"},"limit":{"type":"integer","description":"max rows (default 10, cap 50)"}}},"DecisionRecordInput":{"type":"object","required":["title","why"],"properties":{"title":{"type":"string","description":"The decision, one line"},"why":{"type":"string","description":"The reasoning — a decision without its why is unmaintainable"},"supersedes":{"type":"string","description":"Optional D-NNN this replaces"}}},"DocumentGenerateInput":{"type":"object","required":["template","data"],"properties":{"template":{"type":"string"},"data":{"type":"object"},"format":{"type":"string","enum":["pdf","docx","md"],"default":"pdf"}}},"DocumentSummarizeInput":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"length":{"type":"string","enum":["short","medium","long"],"default":"medium"}}},"EmailRenderInput":{"type":"object","required":["spec"],"properties":{"spec":{"type":"object","required":["template","subject","props"],"properties":{"template":{"type":"string","enum":["notice","invoice","receipt"]},"subject":{"type":"string"},"props":{"type":"object"}}},"theme":{"type":"object"}}},"EventEmitInput":{"type":"object","required":["event"],"properties":{"event":{"type":"string"},"payload":{"type":"object"}}},"FileStoreInput":{"type":"object","required":["filename","content"],"properties":{"filename":{"type":"string"},"content":{"type":"string"},"contentType":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}},"GuideListInput":{"type":"object","required":["product"],"properties":{"product":{"type":"string"},"locale":{"type":"string"},"publicUrl":{"type":"string","description":"override the help-centre base URL"}}},"GuidePublishInput":{"type":"object","required":["product","slug","title","area","markdown"],"properties":{"product":{"type":"string","description":"recipe name, e.g. sebenza"},"slug":{"type":"string","description":"kebab-case; becomes the URL path"},"locale":{"type":"string","default":"en"},"title":{"type":"string"},"area":{"type":"string","description":"index section, e.g. Get paid / People / Start"},"summary":{"type":"string"},"time":{"type":"string","description":"e.g. 5 min"},"cost":{"type":"string","description":"e.g. R10"},"route":{"type":"string","description":"in-app route the guide explains"},"order":{"type":"number"},"markdown":{"type":"string","description":"guide body in the guide syntax (steps, `labels`, > ! callouts, slip blocks)"},"deploy":{"type":"boolean","default":true,"description":"false = write only, no build/deploy"}}},"IntegrationAppConnectInput":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"action":{"const":"start"},"toolkit":{"type":"string","pattern":"^[a-z0-9][a-z0-9_]{0,63}$"},"callbackUrl":{"type":"string","maxLength":2048}},"required":["action","toolkit","callbackUrl"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"key"},"toolkit":{"type":"string","pattern":"^[a-z0-9][a-z0-9_]{0,63}$"},"fields":{"type":"object","description":"Field name → value, as listed by integration.app.toolkits {toolkit}."}},"required":["action","toolkit","fields"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"finish"},"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"connectedAccountId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,200}$"},"sessionUri":{"type":"string","minLength":1,"maxLength":4096}},"required":["action","connectionId","state"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"revoke"},"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"}},"required":["action","connectionId"]}]},"IntegrationAppConnectionsInput":{"type":"object","additionalProperties":false,"properties":{},"required":[]},"IntegrationAppExecuteInput":{"type":"object","additionalProperties":false,"properties":{"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"tool":{"type":"string","pattern":"^[A-Z][A-Z0-9_]{1,159}$"},"arguments":{"type":"object","maxProperties":100},"actor":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"confirmed":{"type":"boolean"}},"required":["connectionId","tool","arguments","actor"]},"IntegrationAppToolkitsInput":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":50},"toolkit":{"type":"string","pattern":"^[a-z0-9][a-z0-9_]{0,63}$"}},"required":[]},"IntegrationAppToolsInput":{"type":"object","additionalProperties":false,"properties":{"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"query":{"type":"string","maxLength":200}},"required":["connectionId"]},"IntegrationExecuteInput":{"type":"object","additionalProperties":false,"properties":{"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"toolId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"arguments":{"type":"object","maxProperties":100},"idempotencyKey":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"}},"required":["connectionId","toolId","arguments"]},"IntegrationSearchInput":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"action":{"const":"connections"}},"required":["action"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"tools"},"connectionId":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"query":{"type":"string","maxLength":1000}},"required":["connectionId"]}]},"KeyInspectInput":{"type":"object","properties":{}},"KeyIssueInput":{"type":"object","required":["abilities"],"properties":{"tenant":{"type":"string","description":"Tenant id the key belongs to (^[a-z0-9][a-z0-9_-]{1,63}$). Default: the caller's tenant."},"name":{"type":"string","description":"Human label, e.g. \"console\", \"sebenza prod\". Default: the tenant."},"abilities":{"description":"\"*\" or an explicit list of ability ids. REQUIRED — a key with no stated scope is refused.","anyOf":[{"type":"string","enum":["*"]},{"type":"array","items":{"type":"string"}}]},"collections":{"type":"array","items":{"type":"string"},"description":"Memory collections this key may read/write (Qdrant). Default none."},"allowSubTenant":{"type":"boolean","description":"May scope calls to <tenant>__<sub> (one key, many orgs). Default false."},"persona":{"type":"string","description":"Optional per-key voice for /agent (max 4000 chars)."},"components":{"description":"gen-UI component scope: \"*\", a tier (basic|pro|enterprise) or an explicit list.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"guideProducts":{"type":"array","items":{"type":"string"},"description":"Help-centre products this key may publish to."},"simGenerate":{"type":"boolean","description":"May generate playable case studies."},"admin":{"type":"boolean","description":"Mint an ADMIN key (manage keys for any tenant). Admin callers only."},"expiresInDays":{"type":"number","description":"Optional expiry, 1..3650 days."}}},"KeyListInput":{"type":"object","properties":{"tenant":{"type":"string","description":"Filter to one tenant (admin only; ignored for tenant keys)."},"includeRevoked":{"type":"boolean","description":"Include revoked keys. Default false."}}},"KeyRevokeInput":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Key id (key_…) from key.list."},"reason":{"type":"string","description":"Why (logged to the key's event trail)."},"confirmSelf":{"type":"boolean","description":"Required to revoke the calling key itself."}}},"KeyRotateInput":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Key id (key_…) from key.list."},"overlapHours":{"type":"number","description":"How long the OLD key keeps working. 0..336, default 24."}}},"LeadCreateInput":{"type":"object","required":["contactId"],"properties":{"contactId":{"type":"string"},"source":{"type":"string"},"vertical":{"type":"string"},"notes":{"type":"string"},"idempotencyKey":{"type":"string","description":"optional key so retries do not create duplicates"}}},"LeadGetInput":{"type":"object","required":["leadId"],"properties":{"leadId":{"type":"string"}}},"LeadListInput":{"type":"object","properties":{"status":{"type":"string"},"limit":{"type":"number"}}},"LeadUpdateStatusInput":{"type":"object","required":["leadId","status"],"properties":{"leadId":{"type":"string"},"status":{"type":"string","enum":["new","qualified","proposal","won","lost"]}}},"LessonRecordInput":{"type":"object","required":["title","category","lesson"],"properties":{"title":{"type":"string"},"category":{"type":"string","enum":["engineering","ops","business","architecture","security"]},"triggers":{"type":"array","items":{"type":"string"},"description":"Keywords that should surface this lesson later"},"severity":{"type":"string","enum":["critical","high","medium","low"]},"context":{"type":"string","description":"What you were doing when this happened"},"lesson":{"type":"string","description":"The non-obvious insight"},"fix":{"type":"string","description":"The specific fix or action to take"},"tags":{"type":"array","items":{"type":"string"}},"reusable":{"type":"boolean"}}},"MemoryForgetInput":{"type":"object","properties":{"collection":{"type":"string"},"ids":{"type":"array","items":{},"description":"Point ids to delete"},"filter":{"type":"object","description":"Qdrant payload filter (alternative to ids)"}}},"MemoryRecallInput":{"type":"object","required":["query"],"properties":{"query":{"type":"string"},"collection":{"type":"string"},"k":{"type":"integer","minimum":1,"maximum":20,"description":"How many memories to include (default 5)"}}},"MemorySaveInput":{"type":"object","required":["content"],"properties":{"content":{"type":"string","description":"The memory text (<= 8000 chars)"},"collection":{"type":"string","description":"Target collection (must be in the key's scope; defaults to the key's first)"},"category":{"type":"string","description":"e.g. semantic | episodic | procedural"},"metadata":{"type":"object","description":"Extra payload fields stored alongside the memory"}}},"MemorySearchInput":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Natural-language query"},"collection":{"type":"string","description":"Qdrant collection (must be in the key's scope; defaults to the key's first scoped collection)"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max hits (default 5)"},"filter":{"type":"object","description":"Optional Qdrant payload filter"}}},"MessageSendInput":{"type":"object","required":["to","channel","message"],"properties":{"to":{"type":"string"},"channel":{"type":"string","enum":["whatsapp","telegram","sms","email"]},"message":{"type":"string"},"attachments":{"type":"array","items":{"type":"string"}}}},"MessageSendMarkdownInput":{"type":"object","required":["to","subject","markdown"],"properties":{"to":{"oneOf":[{"type":"string","description":"Single recipient email"},{"type":"array","items":{"type":"string"},"description":"Multiple recipients"}]},"subject":{"type":"string"},"markdown":{"type":"string","description":"Markdown source — headings, lists, tables, code blocks, links all render with styled HTML"},"from":{"type":"string","description":"Sender (default: \"Sebenza Ops <noreply@sebenzas.com>\")"},"replyTo":{"type":"string"},"brand":{"type":"string","description":"Brand color hex (default #1e3a5f Sebenza navy)"}}},"PaymentInitiateInput":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"number"},"currency":{"type":"string"},"provider":{"type":"string","enum":["stripe","paystack"]},"customerEmail":{"type":"string"},"callbackUrl":{"type":"string"},"recipientId":{"type":"string"},"description":{"type":"string"},"contactId":{"type":"string"},"leadId":{"type":"string"},"idempotencyKey":{"type":"string"}}},"PaymentListInput":{"type":"object","required":[],"properties":{"status":{"type":"string"},"limit":{"type":"number"}}},"PaymentStatusInput":{"type":"object","required":[],"properties":{"paymentId":{"type":"string"},"providerRef":{"type":"string"}}},"PayoutBalanceInput":{"type":"object","properties":{}},"PayoutBatchInput":{"type":"object","required":["transfers"],"properties":{"currency":{"type":"string"},"transfers":{"type":"array","minItems":1,"items":{"type":"object","required":["amount","beneficiary"],"properties":{"amount":{"type":"integer","minimum":1},"beneficiary":{"type":"object"},"reason":{"type":"string"},"idempotencyKey":{"type":"string"},"employeeRef":{"type":"string"}}}}}},"PayoutListInput":{"type":"object","properties":{"status":{"type":"string"},"limit":{"type":"number"}}},"PayoutSendInput":{"type":"object","required":["amount","beneficiary"],"properties":{"amount":{"type":"integer","minimum":1,"description":"Amount in minor units (cents)"},"currency":{"type":"string","description":"ISO currency (default ZAR)"},"beneficiary":{"type":"object","required":["name","accountNumber"],"properties":{"name":{"type":"string"},"accountNumber":{"type":"string"},"bankCode":{"type":"string","description":"Provider bank code (Paystack)"},"email":{"type":"string"},"country":{"type":"string"},"businessType":{"type":"string"},"payoutMethod":{"type":"string"}}},"reason":{"type":"string"},"idempotencyKey":{"type":"string","description":"Retry-safe key; also the payout id"},"employeeRef":{"type":"string"}}},"PayoutStatusInput":{"type":"object","properties":{"payoutId":{"type":"string"},"providerRef":{"type":"string"}}},"PayoutVerifyAccountInput":{"type":"object","properties":{"accountName":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string"},"bankCode":{"type":"string"},"countryCode":{"type":"string"},"documentType":{"type":"string"},"documentNumber":{"type":"string"},"recipient":{"type":"string"}}},"PlanCreateInput":{"type":"object","required":["goal"],"properties":{"goal":{"type":"string"},"constraints":{"type":"array","items":{"type":"string"}},"vertical":{"type":"string"},"type":{"type":"string"}}},"PlanExecuteInput":{"type":"object","required":["planId"],"properties":{"planId":{"type":"string"},"phase":{"type":"number"}}},"PlanLearnInput":{"type":"object","required":["planId"],"properties":{"planId":{"type":"string"}}},"PlanVerifyInput":{"type":"object","required":["planId"],"properties":{"planId":{"type":"string"},"phase":{"type":"number"}}},"QaBrowserCheckInput":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"public http(s) URL to check"},"viewportWidth":{"type":"number","description":"default 1280"},"viewportHeight":{"type":"number","description":"default 800"},"waitMs":{"type":"number","description":"settle time after load; default 2500, max 10000"},"fullPage":{"type":"boolean","description":"full-page screenshot; default false"},"screenshot":{"type":"boolean","description":"capture + store screenshot; default true"}}},"QaChecklistCreateInput":{"type":"object","required":["product","tests"],"properties":{"product":{"type":"string","description":"Product name shown in the header (e.g. \"Sebenza\")"},"phase":{"type":"string","description":"Optional phase / release label (e.g. \"Phase 08 — Sales & Billing\")"},"context":{"type":"string","description":"Optional one-paragraph context shown above the checks"},"prepared_by":{"type":"string","description":"Who prepared the checklist (default: authed tenant or \"Sloe Labs\")"},"result_event":{"type":"string","description":"Substrate event name emitted on each submission (default \"qa.results.received\")"},"tests":{"type":"array","minItems":1,"description":"The checks a tester runs, in order","items":{"type":"object","required":["title","expected_good"],"properties":{"title":{"type":"string","description":"Short check name"},"steps":{"type":"array","items":{"type":"string"},"description":"Plain-language steps the tester performs"},"expected_good":{"type":"string","description":"What a passing result looks like"},"expected_bad":{"type":"string","description":"What a failing result looks like"},"where":{"type":"string","description":"Where in the product to run this check"}}}}}},"ResearchVerifyInput":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","minLength":1,"maxLength":500},"claim":{"type":"string","minLength":1,"maxLength":2000},"urls":{"type":"array","items":{"type":"string","minLength":1,"maxLength":2000},"maxItems":3}},"required":[],"anyOf":[{"required":["query"]},{"required":["urls"]}]},"SimGenerateInput":{"type":"object","required":["prUrl"],"properties":{"prUrl":{"type":"string","description":"https://github.com/owner/repo/pull/N"},"slug":{"type":"string","description":"kebab-case URL path; derived from the PR title if omitted"},"notes":{"type":"string","description":"operator guidance for the sim author (what to emphasise)"},"overwrite":{"type":"boolean","description":"replace an existing GENERATED sim with the same slug"}}},"SimListInput":{"type":"object","properties":{}},"SkillListInput":{"type":"object","properties":{"domain":{"type":"string","description":"Optional filter by domain-name substring"}}},"SkillLoadInput":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Skill domain name (stem of memory/skills/<name>.md) or 'guardrails'"}}},"TaskCreateInput":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"assignedTo":{"type":"string"},"dueInHours":{"type":"number"},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"vertical":{"type":"string"},"idempotencyKey":{"type":"string","description":"optional key so retries do not create duplicates"}}},"TaskGetInput":{"type":"object","required":["taskId"],"properties":{"taskId":{"type":"string"}}},"TaskListInput":{"type":"object","properties":{"status":{"type":"string"},"limit":{"type":"number"}}},"TaskUpdateStatusInput":{"type":"object","required":["taskId","status"],"properties":{"taskId":{"type":"string"},"status":{"type":"string","enum":["pending","in_progress","done","cancelled"]}}},"TrustPreflightInput":{"type":"object","additionalProperties":false,"properties":{"task":{"type":"string","minLength":1,"maxLength":4000},"actions":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"properties":{"ability":{"type":"string","minLength":1,"maxLength":100},"input":{"type":"object"}},"required":["ability","input"]}},"claims":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"receiptIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":20,"uniqueItems":true}},"required":["text","receiptIds"]}}},"required":["task"]},"TrustPublishInput":{"type":"object","additionalProperties":false,"properties":{"claims":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"status":{"type":"string","enum":["observed","inference","unverified"]},"receiptIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":20,"uniqueItems":true}},"required":["text","status"]}}},"required":["claims"]},"TrustStatusInput":{"type":"object","additionalProperties":false,"properties":{"runId":{"type":"string","minLength":1,"maxLength":80}},"required":["runId"]},"VerticalListInput":{"type":"object","properties":{}},"VerticalManifestGetInput":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"vertical slug, e.g. 'sebenza'"},"section":{"type":"string","enum":["surface","all"],"description":"default 'surface'"}}},"WebBrowseInput":{"type":"object","required":["task"],"properties":{"task":{"type":"string","description":"what to do and what to report back (max 2000 chars)"},"startUrl":{"type":"string","description":"page to start on; default a search engine"},"allowedHosts":{"type":"array","items":{"type":"string"},"description":"only visit these hosts (exact or *.suffix)"},"maxSteps":{"type":"integer","minimum":1,"maximum":30,"description":"default 15"},"maxSeconds":{"type":"integer","minimum":20,"maximum":300,"description":"wall-clock budget; default 120"}}},"WebResearchInput":{"type":"object","required":["question"],"properties":{"question":{"type":"string","description":"what to find out (max 1000 chars)"},"maxSources":{"type":"integer","minimum":1,"maximum":8,"description":"pages to read; default 5"},"freshness":{"type":"string","enum":["pd","pw","pm","py"],"description":"only results from the past day/week/month/year"},"allowedHosts":{"type":"array","items":{"type":"string"},"description":"restrict sources to these hosts (exact or *.suffix)"}}},"WorkflowTriggerInput":{"type":"object","required":["workflow"],"properties":{"workflow":{"type":"string"},"input":{"type":"object"}}},"WorkspaceDocCloseInput":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"disposition":{"type":"string","description":"how it ended, e.g. \"shipped as Phase 21\""}}},"WorkspaceDocCommentInput":{"type":"object","required":["id","body"],"properties":{"id":{"type":"string"},"block_id":{"type":"string","description":"anchor the comment to one section"},"parent":{"type":"string","description":"comment_id this replies to"},"author":{"type":"string"},"body":{"type":"string"}}},"WorkspaceDocCreateInput":{"type":"object","required":["title","blocks"],"properties":{"title":{"type":"string","description":"document title, shown in the header"},"product":{"type":"string","description":"recipe name, e.g. sebenza — scopes listing"},"kind":{"type":"string","enum":["plan","handoff","research","report","brief","uat","note"],"default":"note"},"owner":{"type":"string","description":"who the document is FOR (the human), shown in the header"},"edit_event":{"type":"string","default":"workspace.doc.edited","description":"substrate event emitted on every change"},"blocks":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"object","required":["type"],"description":"One addressable section. `pending` = a placeholder with a written intent (create the skeleton FIRST, then fill each one — the human watches it fill and a second agent can claim a different section). `markdown` = prose. `ui` = a UIPrimitive from the ui__render vocabulary, validated against the same per-key component scope as a chat render. `decision` = a question with options a human taps. `checks` = QA-style checks a tester runs.","properties":{"type":{"type":"string","enum":["pending","markdown","ui","decision","checks"]},"id":{"type":"string","description":"stable address, e.g. \"goals\" — auto-assigned (b1, b2…) if omitted. Patches target this."},"intent":{"type":"string","description":"pending: what this section will contain. A contract the filling agent is held to."},"content":{"type":"string","description":"markdown: the body"},"node":{"type":"object","description":"ui: a UIPrimitive (chart / datagrid / stat / table / grid / card / list / text)"},"question":{"type":"string","description":"decision: what is being decided"},"options":{"type":"array","description":"decision: 2-8 options, string or {label,value,description}"},"chosen":{"type":["string","null"],"description":"decision: the selected value"},"tests":{"type":"array","description":"checks: [{title, steps[], expected_good, expected_bad, where}]"}}}}}},"WorkspaceDocListInput":{"type":"object","properties":{"product":{"type":"string"},"kind":{"type":"string"},"owner":{"type":"string"},"status":{"type":"string","enum":["open","closed"]},"limit":{"type":"number","default":50,"maximum":200}}},"WorkspaceDocPatchInput":{"type":"object","required":["id","ops"],"properties":{"id":{"type":"string"},"if_revision":{"type":"number","description":"doc-level optimistic guard; 409 on mismatch"},"actor":{"type":"string","description":"who is writing (defaults to the key's tenant). Claims are per-actor."},"force":{"type":"boolean","description":"amend a closed document"},"ops":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["op"],"properties":{"op":{"type":"string","enum":["replace","insert_after","insert_before","delete","claim","release"]},"block_id":{"type":"string","description":"target (or anchor, for inserts)"},"block":{"type":"object","description":"the new block, for replace / insert_*"},"if_block_rev":{"type":"number","description":"block-level optimistic guard; 409 on mismatch"},"force":{"type":"boolean","description":"override another actor's live claim"}}}}}},"WorkspaceDocReadInput":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"include_comments":{"type":"boolean","default":false},"include_history":{"type":"boolean","default":false}}}},"responses":{"BadRequest":{"description":"The body is missing `input`, or `input` fails the ability's schema (`details` holds the validation errors).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"No bearer credential, or one the substrate does not recognise.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"The credential is valid, but its scope does not include this ability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"No ability has this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Too many requests for this credential. `retryAfterMs` says when to retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotImplemented":{"description":"The ability is declared but no handler is wired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Error":{"description":"The ability failed. The message is sanitized; a 5xx may be a transient upstream failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}