{"data":{"schemaVersion":"1","contract":{"authentication":"Bearer API key (Authorization: Bearer krabs_sk_...)","envelope":{"successKey":"data","errorKey":"error"},"idempotencyHeader":"Idempotency-Key","intentHeader":"X-Agent-Intent","dryRunQueryParam":"dry_run","errorCodes":["VALIDATION_FAILED","IDEMPOTENCY_CONFLICT","UNAUTHENTICATED","INVALID_API_KEY","NOT_FOUND","CONFLICT","RATE_LIMITED","INTERNAL"]},"operations":[{"operation":"contact.create","description":"Create a new contact. Attaches email/phone Identities automatically.","inputSchema":{"$ref":"#/definitions/ContactCreateInput","definitions":{"ContactCreateInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"email":{"type":"string","format":"email"},"phone":{"type":"string","minLength":3,"maxLength":50},"status":{"type":"string","enum":["lead","prospect","customer","archived"],"default":"lead"},"customFields":{"type":"object","additionalProperties":{}}},"required":["name"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"contact.get","description":"Fetch a contact and its identities by id.","inputSchema":{"$ref":"#/definitions/ContactGetInput","definitions":{"ContactGetInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"contact.list","description":"List contacts with cursor pagination, filters (status, q, updatedSince).","inputSchema":{"$ref":"#/definitions/ContactListInput","definitions":{"ContactListInput":{"type":"object","properties":{"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":200},"status":{"type":"string","enum":["lead","prospect","customer","archived"]},"q":{"type":"string","minLength":1},"updatedSince":{"type":"string","format":"date-time"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"contact.update","description":"Partially update a contact. Changing primaryEmail/primaryPhone attaches a new Identity.","inputSchema":{"$ref":"#/definitions/ContactUpdateInput","definitions":{"ContactUpdateInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"patch":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"primaryEmail":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}]},"primaryPhone":{"anyOf":[{"type":"string","minLength":3,"maxLength":50},{"type":"null"}]},"status":{"type":"string","enum":["lead","prospect","customer","archived"]},"customFields":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"null"}]}},"additionalProperties":false}},"required":["id","patch"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"contact.delete","description":"Hard-delete a contact (cascade to identities). Snapshot stored in the agent action's metadata.","inputSchema":{"$ref":"#/definitions/ContactDeleteInput","definitions":{"ContactDeleteInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"contact.merge","description":"Merge mergeId into keepId. Migrates non-conflicting identities, then deletes the merge source.","inputSchema":{"$ref":"#/definitions/ContactMergeInput","definitions":{"ContactMergeInput":{"type":"object","properties":{"keepId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"mergeId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["keepId","mergeId"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"one-way"},{"operation":"account.update","description":"Update the current account's name or email.","inputSchema":{"$ref":"#/definitions/AccountUpdateInput","definitions":{"AccountUpdateInput":{"type":"object","properties":{"name":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"email":{"type":"string","format":"email"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"api_key.create","description":"Issue a new API key. Plaintext token is returned exactly once.","inputSchema":{"$ref":"#/definitions/ApiKeyCreateInput","definitions":{"ApiKeyCreateInput":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100}},"required":["label"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"api_key.list","description":"List API keys for the current account.","inputSchema":{"$ref":"#/definitions/ApiKeyListInput","definitions":{"ApiKeyListInput":{"type":"object","properties":{"includeRevoked":{"type":"boolean"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"api_key.revoke","description":"Revoke an API key. The owning agent loses access on next request.","inputSchema":{"$ref":"#/definitions/ApiKeyRevokeInput","definitions":{"ApiKeyRevokeInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^key_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"action.list","description":"Read the agent audit log: who did what, when, with what intent.","inputSchema":{"$ref":"#/definitions/ActionListInput","definitions":{"ActionListInput":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":200},"apiKeyId":{"type":"string"},"targetKind":{"type":"string"},"targetId":{"type":"string"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"identity.add","description":"Attach an additional channel identity (email, phone, telegram, whatsapp, linkedin, etc.) to a contact. The same value cannot belong to two contacts; merge first if needed.","inputSchema":{"$ref":"#/definitions/IdentityAddInput","definitions":{"IdentityAddInput":{"type":"object","properties":{"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"kind":{"type":"string","enum":["email","phone","whatsapp","telegram","linkedin","twitter","instagram","other"]},"value":{"type":"string","minLength":1,"maxLength":500},"confidence":{"type":"integer","minimum":0,"maximum":100}},"required":["contactId","kind","value"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"identity.remove","description":"Detach an identity from its contact. The contact itself is preserved.","inputSchema":{"$ref":"#/definitions/IdentityRemoveInput","definitions":{"IdentityRemoveInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^idy_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"identity.list","description":"List identities, optionally filtered by contact or kind.","inputSchema":{"$ref":"#/definitions/IdentityListInput","definitions":{"IdentityListInput":{"type":"object","properties":{"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"kind":{"type":"string"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"contact.find_by_identity","description":"Look up a single contact by one of its identities (email, phone, telegram, etc.). Returns the contact and the matched identity, or 404 if no match.","inputSchema":{"$ref":"#/definitions/ContactFindInput","definitions":{"ContactFindInput":{"type":"object","properties":{"kind":{"type":"string","enum":["email","phone","whatsapp","telegram","linkedin","twitter","instagram","other"]},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["kind","value"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"interaction.create","description":"Manually create an Interaction (call, meeting, note, message, etc.).","inputSchema":{"$ref":"#/definitions/InteractionCreateInput","definitions":{"InteractionCreateInput":{"type":"object","properties":{"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"kind":{"type":"string","enum":["email_in","email_out","call","meeting","message","note","agent_log","custom"]},"direction":{"type":"string","enum":["inbound","outbound","internal"]},"source":{"type":"string","minLength":1,"maxLength":200},"subject":{"type":"string","maxLength":1000},"body":{"type":"string","maxLength":100000},"metadata":{"type":"object","additionalProperties":{}},"occurredAt":{"type":"string","format":"date-time"}},"required":["kind"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"interaction.list","description":"List interactions with cursor pagination and filters (contactId, kind, since).","inputSchema":{"$ref":"#/definitions/InteractionListInput","definitions":{"InteractionListInput":{"type":"object","properties":{"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":200},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"kind":{"type":"string","enum":["email_in","email_out","call","meeting","message","note","agent_log","custom"]},"since":{"type":"string","format":"date-time"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"interaction.ingest_email","description":"Ingest a parsed email: finds the contact by sender email (or creates one), inserts an email Interaction, and returns everything linked. Pass createContactIfMissing:false to require an existing match.","inputSchema":{"$ref":"#/definitions/EmailIngestInput","definitions":{"EmailIngestInput":{"type":"object","properties":{"from":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"email":{"type":"string","format":"email"}},"required":["email"],"additionalProperties":false},"to":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"}},"required":["email"],"additionalProperties":false}},"subject":{"type":"string","maxLength":1000},"body":{"type":"string","maxLength":500000},"receivedAt":{"type":"string","format":"date-time"},"messageId":{"type":"string","maxLength":500},"direction":{"type":"string","enum":["inbound","outbound","internal"]},"source":{"type":"string","maxLength":200},"createContactIfMissing":{"type":"boolean"}},"required":["from"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"interaction.delete","description":"Hard-delete an interaction. Snapshot kept in the audit log for undo.","inputSchema":{"$ref":"#/definitions/InteractionDeleteInput","definitions":{"InteractionDeleteInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^int_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"action.get","description":"Fetch a single audit action by id, including its full metadata (snapshots).","inputSchema":{"$ref":"#/definitions/ActionGetInput","definitions":{"ActionGetInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^act_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"action.undo","description":"Reverse a previously-recorded action using the snapshot stored in its metadata. Works on operations marked reversibility:'reversible'. Returns CONFLICT for one-way operations (like contact.merge) or for action.undo itself.","inputSchema":{"$ref":"#/definitions/ActionUndoInput","definitions":{"ActionUndoInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^act_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"one-way"},{"operation":"deal.create","description":"Create a new deal (revenue opportunity). Optionally tied to a contact.","inputSchema":{"$ref":"#/definitions/DealCreateInput","definitions":{"DealCreateInput":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"stage":{"type":"string","minLength":1,"maxLength":50},"status":{"type":"string","enum":["open","won","lost"]},"value":{"type":"integer","minimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"expectedCloseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"customFields":{"type":"object","additionalProperties":{}}},"required":["title"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"deal.get","description":"Fetch a deal by id.","inputSchema":{"$ref":"#/definitions/DealGetInput","definitions":{"DealGetInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"deal.list","description":"List deals with cursor pagination and filters (contactId, stage, status).","inputSchema":{"$ref":"#/definitions/DealListInput","definitions":{"DealListInput":{"type":"object","properties":{"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":200},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"stage":{"type":"string"},"status":{"type":"string","enum":["open","won","lost"]}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"deal.update","description":"Partially update a deal (title, stage, status, value, currency, expectedCloseDate, contact link).","inputSchema":{"$ref":"#/definitions/DealUpdateInput","definitions":{"DealUpdateInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"},"patch":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"contactId":{"anyOf":[{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},{"type":"null"}]},"stage":{"type":"string","minLength":1,"maxLength":50},"status":{"type":"string","enum":["open","won","lost"]},"value":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"currency":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}]},"expectedCloseDate":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"customFields":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"null"}]}},"additionalProperties":false}},"required":["id","patch"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"deal.delete","description":"Hard-delete a deal. Full row captured in audit log for undo.","inputSchema":{"$ref":"#/definitions/DealDeleteInput","definitions":{"DealDeleteInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"task.create","description":"Create a task. Setting status=done auto-stamps completedAt. Tied to a contact and/or deal optionally.","inputSchema":{"$ref":"#/definitions/TaskCreateInput","definitions":{"TaskCreateInput":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":10000},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"dealId":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"},"status":{"type":"string","enum":["open","in_progress","done","cancelled"]},"priority":{"type":"string","enum":["low","normal","high"]},"dueAt":{"type":"string","format":"date-time"}},"required":["title"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"task.get","description":"Fetch a task by id.","inputSchema":{"$ref":"#/definitions/TaskGetInput","definitions":{"TaskGetInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^tsk_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"task.list","description":"List tasks with filters (contactId, dealId, status, priority, dueBefore).","inputSchema":{"$ref":"#/definitions/TaskListInput","definitions":{"TaskListInput":{"type":"object","properties":{"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":200},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"dealId":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"},"status":{"type":"string","enum":["open","in_progress","done","cancelled"]},"priority":{"type":"string","enum":["low","normal","high"]},"dueBefore":{"type":"string","format":"date-time"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"task.update","description":"Partially update a task. Transitioning status to/from 'done' auto-manages completedAt.","inputSchema":{"$ref":"#/definitions/TaskUpdateInput","definitions":{"TaskUpdateInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^tsk_[0-9A-HJKMNP-TV-Z]{26}$"},"patch":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"contactId":{"anyOf":[{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},{"type":"null"}]},"dealId":{"anyOf":[{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"},{"type":"null"}]},"status":{"type":"string","enum":["open","in_progress","done","cancelled"]},"priority":{"type":"string","enum":["low","normal","high"]},"dueAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"additionalProperties":false}},"required":["id","patch"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"task.delete","description":"Hard-delete a task.","inputSchema":{"$ref":"#/definitions/TaskDeleteInput","definitions":{"TaskDeleteInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^tsk_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"note.create","description":"Create a note. Optionally attached to a contact, a deal, or standalone.","inputSchema":{"$ref":"#/definitions/NoteCreateInput","definitions":{"NoteCreateInput":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":500000},"title":{"type":"string","maxLength":500},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"dealId":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["body"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"note.get","description":"Fetch a note by id.","inputSchema":{"$ref":"#/definitions/NoteGetInput","definitions":{"NoteGetInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^not_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"note.list","description":"List notes filtered by contact or deal.","inputSchema":{"$ref":"#/definitions/NoteListInput","definitions":{"NoteListInput":{"type":"object","properties":{"cursor":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":200},"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"dealId":{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"note.update","description":"Partially update a note (body, title, link to contact or deal).","inputSchema":{"$ref":"#/definitions/NoteUpdateInput","definitions":{"NoteUpdateInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^not_[0-9A-HJKMNP-TV-Z]{26}$"},"patch":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":500000},"title":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"contactId":{"anyOf":[{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},{"type":"null"}]},"dealId":{"anyOf":[{"type":"string","pattern":"^dl_[0-9A-HJKMNP-TV-Z]{26}$"},{"type":"null"}]}},"additionalProperties":false}},"required":["id","patch"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"note.delete","description":"Hard-delete a note.","inputSchema":{"$ref":"#/definitions/NoteDeleteInput","definitions":{"NoteDeleteInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^not_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"tag.create","description":"Create a tag (unique name per account, optional hex color).","inputSchema":{"$ref":"#/definitions/TagCreateInput","definitions":{"TagCreateInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"required":["name"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"tag.list","description":"List all tags for the account.","inputSchema":{"$ref":"#/definitions/TagListInput","definitions":{"TagListInput":{"type":"object","properties":{},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"tag.update","description":"Rename a tag or change its color.","inputSchema":{"$ref":"#/definitions/TagUpdateInput","definitions":{"TagUpdateInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^tag_[0-9A-HJKMNP-TV-Z]{26}$"},"patch":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50},"color":{"anyOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},{"type":"null"}]}},"additionalProperties":false}},"required":["id","patch"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"tag.delete","description":"Hard-delete a tag. Cascade-detaches from all contacts. Undo re-creates the tag AND re-attaches it to all previously linked contacts.","inputSchema":{"$ref":"#/definitions/TagDeleteInput","definitions":{"TagDeleteInput":{"type":"object","properties":{"id":{"type":"string","pattern":"^tag_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["id"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":true,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"tag.attach","description":"Attach a tag to a contact. If already attached, returns a no-op with alreadyAttached:true.","inputSchema":{"$ref":"#/definitions/TagAttachInput","definitions":{"TagAttachInput":{"type":"object","properties":{"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"tagId":{"type":"string","pattern":"^tag_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["contactId","tagId"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"tag.detach","description":"Detach a tag from a contact.","inputSchema":{"$ref":"#/definitions/TagDetachInput","definitions":{"TagDetachInput":{"type":"object","properties":{"contactId":{"type":"string","pattern":"^cnt_[0-9A-HJKMNP-TV-Z]{26}$"},"tagId":{"type":"string","pattern":"^tag_[0-9A-HJKMNP-TV-Z]{26}$"}},"required":["contactId","tagId"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"contact.import_csv","description":"Bulk-import contacts from a CSV. Auto-detects name/email/phone columns or use an explicit columnMap. onConflict:'skip' (default) leaves duplicates out, 'link' attaches the row's other identities to the existing contact. ONE AgentAction is emitted with the list of created ids; undoing it bulk-deletes everything created by the import.","inputSchema":{"$ref":"#/definitions/ContactImportCsvInput","definitions":{"ContactImportCsvInput":{"type":"object","properties":{"csv":{"type":"string","minLength":1,"maxLength":20000000},"columnMap":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"status":{"type":"string"}},"additionalProperties":false},"defaultStatus":{"type":"string","enum":["lead","prospect","customer","archived"]},"onConflict":{"type":"string","enum":["skip","link"]}},"required":["csv"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"contact.ingest_vcard","description":"Ingest a vCard. Looks up the contact by any of its EMAIL/TEL identities; creates one if missing (toggleable). Adds any new channel identities (linkedin, telegram, etc.) and returns everything linked. Reversible.","inputSchema":{"$ref":"#/definitions/VCardIngestInput","definitions":{"VCardIngestInput":{"type":"object","properties":{"vcard":{"type":"string","minLength":1,"maxLength":1000000},"createContactIfMissing":{"type":"boolean"}},"required":["vcard"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":true,"supportsIntent":true,"reversibility":"reversible"},{"operation":"account.export","description":"Full or incremental JSON export of the account: contacts, identities, interactions, deals, tasks, notes, tags, links, and (optionally) the audit log. Pass since=ISO to export only rows modified after that timestamp.","inputSchema":{"$ref":"#/definitions/AccountExportInput","definitions":{"AccountExportInput":{"type":"object","properties":{"since":{"type":"string","format":"date-time"},"includeActions":{"type":"boolean"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"},{"operation":"contact.export_csv","description":"Export contacts as CSV (id, name, primary_email, primary_phone, status, timestamps, identities concat).","inputSchema":{"$ref":"#/definitions/ContactExportCsvInput","definitions":{"ContactExportCsvInput":{"type":"object","properties":{"status":{"type":"string"},"since":{"type":"string","format":"date-time"}},"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"destructive":false,"idempotent":true,"supportsDryRun":false,"supportsIntent":false,"reversibility":"one-way"}],"reversibilityValues":["reversible","one-way","read-only"]},"_schema_version":"1"}