{"name":"aimailmcp","categories":[{"id":"domains","title":"Domains","blurb":"Bring a domain, get the exact DNS records, verify it."},{"id":"mailboxes","title":"Mailboxes","blurb":"Addresses that receive and send, plus aliases, catch-alls and forwarding."},{"id":"read","title":"Read","blurb":"One unified inbox across every mailbox the token can see."},{"id":"send","title":"Send","blurb":"Send, reply in-thread, forward and draft, behind per-token gates."},{"id":"automation","title":"Automation","blurb":"Signed webhooks when mail arrives or a send finishes."},{"id":"access","title":"Access","blurb":"Scoped tokens for other agents, and the audit log."}],"tools":[{"name":"add_domain","category":"domains","title":"Add a domain","description":"Add a domain (or subdomain) to this account so it can hold mailboxes. Returns the DNS plan. A domain whose zone is on this service's Cloudflare account is \"managed\" (apply_dns can write its records, internal accounts only); any other domain is \"external\" and proves ownership with a TXT record, then verify_domain.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Add a domain","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":253,"description":"Domain name, for example example.com or mail.example.com."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_dns_plan","category":"domains","title":"Get the DNS plan","description":"The exact DNS records (MX, SPF, DKIM, DMARC, ownership TXT) a domain needs for receiving and sending, and whether each is in place.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Get the DNS plan","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"domain":{"type":"string","minLength":4,"maxLength":253,"description":"Domain name, for example example.com or mail.example.com."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"apply_dns","category":"domains","title":"Apply DNS records (managed domains)","description":"Write the DNS plan to a managed domain on this service's Cloudflare account: enables Email Routing (MX + SPF), routes mail to the receiver, registers the domain for sending and adds DKIM and DMARC. Never deletes records. Refuses when the name already has MX records pointing elsewhere unless replace_existing_mx is true. Use dry_run first.","requires":["admin token"],"mutating":true,"destructive":true,"supports_dry_run":true,"annotations":{"title":"Apply DNS records (managed domains)","readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"domain":{"type":"string","minLength":4,"maxLength":253,"description":"Domain name, for example example.com or mail.example.com."},"replace_existing_mx":{"type":"boolean","description":"Allow enabling routing on a name whose MX currently points at another provider."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"verify_domain","category":"domains","title":"Verify a domain","description":"Check the domain's live DNS: ownership TXT (external domains), MX, SPF, DMARC and the sending provider's DKIM status. Marks the domain verified when ownership is proven, and registers it for sending once it is.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Verify a domain","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"domain":{"type":"string","minLength":4,"maxLength":253,"description":"Domain name, for example example.com or mail.example.com."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_domains","category":"domains","title":"List domains","description":"Every domain on this account with its status, mode, sending readiness and mailbox count.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"List domains","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"remove_domain","category":"domains","title":"Remove a domain","description":"Remove a domain from this account. Refuses while it still has mailboxes unless delete_mailboxes is true (which deletes them and their mail). DNS records are left as they are; the response lists the ones you may want to remove.","requires":["admin token"],"mutating":true,"destructive":true,"supports_dry_run":true,"annotations":{"title":"Remove a domain","readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"domain":{"type":"string","minLength":4,"maxLength":253,"description":"Domain name, for example example.com or mail.example.com."},"confirm":{"type":"string","description":"Repeat the domain name to confirm."},"delete_mailboxes":{"type":"boolean"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["domain","confirm"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_mailbox","category":"mailboxes","title":"Create a mailbox","description":"Create a mailbox (an address that receives and sends) on one of this account's domains. Also returns its route address, which any mail host can forward to.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Create a mailbox","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"address":{"type":"string","description":"The new address, for example agent@example.com."},"display_name":{"type":"string","maxLength":100},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["address"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_mailboxes","category":"mailboxes","title":"List mailboxes","description":"Every mailbox this token can see, with unread counts, last received time, aliases, forwarding and route address. Also describes the calling token (scope, can_send, daily cap).","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"List mailboxes","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_mailbox","category":"mailboxes","title":"Delete a mailbox","description":"Delete a mailbox. Mail to it is rejected from then on; its stored messages stay readable by owner tokens for audit until the domain is removed.","requires":["admin token"],"mutating":true,"destructive":true,"supports_dry_run":true,"annotations":{"title":"Delete a mailbox","readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"address":{"type":"string","minLength":3,"maxLength":254,"description":"Mailbox address (or mailbox id)."},"confirm":{"type":"string","description":"Repeat the address to confirm."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["address","confirm"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add_alias","category":"mailboxes","title":"Add an alias","description":"Deliver mail sent to another address on one of this account's domains into an existing mailbox.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Add an alias","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"mailbox":{"type":"string","minLength":3,"maxLength":254,"description":"Mailbox address (or mailbox id)."},"alias":{"type":"string","description":"The extra address, for example support@example.com."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["mailbox","alias"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"set_catch_all","category":"mailboxes","title":"Set the catch-all","description":"Deliver mail for any unknown address on a domain into one mailbox, or pass mailbox: null to turn the catch-all off.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Set the catch-all","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"domain":{"type":"string"},"mailbox":{"anyOf":[{"type":"string","minLength":3,"maxLength":254,"description":"Mailbox address (or mailbox id)."},{"type":"null"}],"description":"Mailbox address (or mailbox id)."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["domain","mailbox"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"set_forwarding","category":"mailboxes","title":"Set forwarding","description":"Also forward every message a mailbox receives to up to 5 external addresses (the original is attached as message/rfc822). Pass an empty list to stop. Forwarded copies never re-forward.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Set forwarding","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"mailbox":{"type":"string","minLength":3,"maxLength":254,"description":"Mailbox address (or mailbox id)."},"forward_to":{"type":"array","items":{"type":"string"},"maxItems":5},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["mailbox","forward_to"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_messages","category":"read","title":"List messages (unified inbox)","description":"One inbox across every mailbox this token can see, newest first, each item tagged with its mailbox. Filters: mailboxes, folder (inbox, archive, sent, drafts, trash, all), unread_only, label, from, subject_contains, since (default 30 days). Paginate with next_cursor. Sender-controlled text arrives inside an untrusted_external_content envelope.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"List messages (unified inbox)","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"mailboxes":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Limit to these mailboxes (addresses or ids). Default: every mailbox this token can see."},"folder":{"type":"string","enum":["inbox","archive","sent","drafts","trash","all"]},"unread_only":{"type":"boolean"},"direction":{"type":"string","enum":["inbound","outbound"]},"label":{"type":"string","maxLength":64},"from":{"type":"string","maxLength":200},"subject_contains":{"type":"string","maxLength":200},"since":{"type":"string","description":"ISO date; default 30 days ago."},"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_messages","category":"read","title":"Search messages","description":"Full-text search over subject, sender, recipients and body across every mailbox this token can see (all folders by default).","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Search messages","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":200},"mailboxes":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Limit to these mailboxes (addresses or ids). Default: every mailbox this token can see."},"folder":{"type":"string","enum":["inbox","archive","sent","drafts","trash","all"]},"since":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_message","category":"read","title":"Get a message","description":"Headers, text body (or text derived from HTML), extracted links, attachment list and threading ids for one message. Body truncated at max_chars (default 20000, max 200000) with a truncated flag. HTML only with include_html.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Get a message","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string"},"max_chars":{"type":"integer"},"include_html":{"type":"boolean"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_thread","category":"read","title":"Get a thread","description":"The whole conversation a message belongs to, inbound and outbound, oldest first, as previews.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Get a thread","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Any message id in the thread."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"wait_for_message","category":"read","title":"Wait for a message","description":"Block until a matching message arrives (or timeout_s, max 60, default 25) and return it in full. Built for sign-up codes and magic links: create a mailbox, use it in a form, wait here. since defaults to 60 seconds ago.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Wait for a message","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"mailbox":{"type":"string"},"from":{"type":"string","maxLength":200},"subject_contains":{"type":"string","maxLength":200},"since":{"type":"string"},"timeout_s":{"type":"integer","minimum":1,"maximum":60},"max_chars":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_attachment","category":"read","title":"Get an attachment","description":"One attachment as base64 (up to 5 MB). attachment_id is the index listed by get_message.","requires":[],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Get an attachment","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"message_id":{"type":"string"},"attachment_id":{"type":"integer","minimum":0}},"required":["message_id","attachment_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"mark_read","category":"read","title":"Mark read or unread","description":"Mark up to 100 messages read (or unread with read: false). Ids outside this token's scope come back in not_found_in_scope.","requires":[],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Mark read or unread","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100,"description":"Message ids (1 to 100)."},"read":{"type":"boolean"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"label","category":"read","title":"Add or remove labels","description":"Add and/or remove labels on up to 100 messages. Labels are free-form short strings; filter on them with list_messages label.","requires":[],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Add or remove labels","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100,"description":"Message ids (1 to 100)."},"add":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":20},"remove":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":20},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"archive","category":"read","title":"Archive","description":"Move up to 100 messages out of the inbox into archive (or back with unarchive: true).","requires":[],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Archive","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100,"description":"Message ids (1 to 100)."},"unarchive":{"type":"boolean"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"send_message","category":"send","title":"Send a message","description":"Send a new email from a mailbox in scope (or send a saved draft with draft_id). Requires a token with can_send; counts against its daily cap; at most 20 recipients. Use dry_run to check the gates without sending.","requires":["can_send"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Send a message","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"from":{"type":"string","description":"Mailbox address to send from."},"to":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"cc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"bcc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"subject":{"type":"string","maxLength":998},"text":{"type":"string","maxLength":500000},"html":{"type":"string","maxLength":1000000},"reply_to":{"type":"string"},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","maxLength":255},"content_base64":{"type":"string"},"content_type":{"type":"string","maxLength":100}},"required":["filename","content_base64"],"additionalProperties":false},"maxItems":10,"description":"Up to 10 attachments, 5 MB each, base64."},"draft_id":{"type":"string"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"reply","category":"send","title":"Reply","description":"Reply in-thread from the mailbox that received the message (In-Reply-To and References set, \"Re:\" added once, original quoted). reply_all adds the other recipients as cc.","requires":["can_send"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Reply","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"message_id":{"type":"string"},"text":{"type":"string","maxLength":500000},"html":{"type":"string","maxLength":1000000},"reply_all":{"type":"boolean"},"cc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","maxLength":255},"content_base64":{"type":"string"},"content_type":{"type":"string","maxLength":100}},"required":["filename","content_base64"],"additionalProperties":false},"maxItems":10,"description":"Up to 10 attachments, 5 MB each, base64."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["message_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"forward","category":"send","title":"Forward","description":"Forward a message (with its attachments) to new recipients, with an optional note on top. Sends from the receiving mailbox unless from names another mailbox in scope.","requires":["can_send"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Forward","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"message_id":{"type":"string"},"to":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"cc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"text":{"type":"string","maxLength":100000},"from":{"type":"string"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["message_id","to"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_draft","category":"send","title":"Create a draft","description":"Save a draft in a mailbox (folder drafts) for a human or another agent to review. Send it later with send_message draft_id. Does not need can_send. Pass reply_to_message_id to thread it as a reply.","requires":[],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Create a draft","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"from":{"type":"string"},"to":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"cc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"bcc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"subject":{"type":"string","maxLength":998},"text":{"type":"string","maxLength":500000},"html":{"type":"string","maxLength":1000000},"reply_to_message_id":{"type":"string"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["from"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_webhook","category":"automation","title":"Create a webhook","description":"POST a signed JSON event to your https URL when mail arrives or a send finishes. Events: message.received, message.sent, message.failed. Each delivery carries X-AIMail-Timestamp and X-AIMail-Signature (v1=hex HMAC-SHA256 of \"timestamp.body\" with the secret returned once here). Private and loopback targets are refused.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Create a webhook","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["message.received","message.sent","message.failed"]},"minItems":1},"mailboxes":{"type":"array","items":{"type":"string"},"maxItems":100},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_webhooks","category":"automation","title":"List webhooks","description":"Webhooks on this account with their events, scope and last delivery status. Secrets are never shown again.","requires":["admin token"],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"List webhooks","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_webhook","category":"automation","title":"Delete a webhook","description":"Stop and remove a webhook.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Delete a webhook","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"webhook_id":{"type":"string"},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["webhook_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_token","category":"access","title":"Create a token","description":"Mint a token for another agent, scoped to some mailboxes (default: all), with or without send permission and with a daily send cap. A token can never exceed the one that creates it. The token value is returned once and never stored.","requires":["admin token"],"mutating":true,"destructive":false,"supports_dry_run":true,"annotations":{"title":"Create a token","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80},"mailboxes":{"type":"array","items":{"type":"string"},"maxItems":100},"can_send":{"type":"boolean"},"daily_send_cap":{"type":"integer","minimum":0,"maximum":10000},"is_admin":{"type":"boolean"},"expires_in_days":{"type":"integer","minimum":1,"maximum":3650},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["label"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_tokens","category":"access","title":"List tokens","description":"Tokens on this account: label, prefix, scope, send permission, cap, last use. Never the values.","requires":["admin token"],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"List tokens","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"include_revoked":{"type":"boolean"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"revoke_token","category":"access","title":"Revoke a token","description":"Revoke a token by id or prefix. It stops working immediately.","requires":["admin token"],"mutating":true,"destructive":true,"supports_dry_run":true,"annotations":{"title":"Revoke a token","readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"token":{"type":"string","minLength":6,"description":"Token id or its prefix (amk_...)."},"dry_run":{"type":"boolean","description":"Validate and report what would happen without changing anything."}},"required":["token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"audit_log","category":"access","title":"Read the audit log","description":"Recent tool calls on this account (every attempt, including refusals and dry runs): tool, outcome, token, time.","requires":["admin token"],"mutating":false,"destructive":false,"supports_dry_run":false,"annotations":{"title":"Read the audit log","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":500},"tool":{"type":"string"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]}