Skip to main content
Glama

AIsa Agent Mail

List And Create API Keys

post_get_agentmail_api_keys
Destructive

Retrieve a paginated list of API keys or create a new API key with optional permissions and scope settings.

Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.

Input Schema

NameRequiredDescriptionDefault
bodyNoA body with `public_key` registers a public-key credential; any other body mints a bearer key.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / body
      Added value: +{
      +  "description": "A body with `public_key` registers a public-key credential; any other\nbody mints a bearer key.",
      +  "oneOf": [
      +    {
      +      "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.",
      +      "properties": {
      +        "expires_at": {
      +          "description": "Time at which api key expires. Omitted when it does not expire.",
      +          "format": "date-time",
      +          "title": "ExpiresAt",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Name of api key.",
      +          "title": "Name",
      +          "type": "string"
      +        },
      +        "permissions": {
      +          "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      +          "properties": {
      +            "account_update": {
      +              "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      +              "type": "boolean"
      +            },
      +            "api_key_create": {
      +              "description": "Create API keys.",
      +              "type": "boolean"
      +            },
      +            "api_key_delete": {
      +              "description": "Delete API keys.",
      +              "type": "boolean"
      +            },
      +            "api_key_read": {
      +              "description": "Read API keys.",
      +              "type": "boolean"
      +            },
      +            "api_key_update": {
      +              "description": "Update API keys.",
      +              "type": "boolean"
      +            },
      +            "app_connect": {
      +              "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      +              "type": "boolean"
      +            },
      +            "app_share_owner": {
      +              "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_create": {
      +              "description": "Create calendar events.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_delete": {
      +              "description": "Delete calendar events.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_read": {
      +              "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_update": {
      +              "description": "Update calendar events and respond to invitations.",
      +              "type": "boolean"
      +            },
      +            "calendar_read": {
      +              "description": "Read inbox calendar settings.",
      +              "type": "boolean"
      +            },
      +            "calendar_update": {
      +              "description": "Update inbox calendar settings.",
      +              "type": "boolean"
      +            },
      +            "domain_create": {
      +              "description": "Create domains.",
      +              "type": "boolean"
      +            },
      +            "domain_delete": {
      +              "description": "Delete domains.",
      +              "type": "boolean"
      +            },
      +            "domain_read": {
      +              "description": "Read domain details.",
      +              "type": "boolean"
      +            },
      +            "domain_update": {
      +              "description": "Update domains.",
      +              "type": "boolean"
      +            },
      +            "draft_create": {
      +              "description": "Create drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_delete": {
      +              "description": "Delete drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_read": {
      +              "description": "Read drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_send": {
      +              "description": "Send drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_update": {
      +              "description": "Update drafts.",
      +              "type": "boolean"
      +            },
      +            "inbox_create": {
      +              "description": "Create new inboxes.",
      +              "type": "boolean"
      +            },
      +            "inbox_delete": {
      +              "description": "Delete inboxes.",
      +              "type": "boolean"
      +            },
      +            "inbox_read": {
      +              "description": "Read inbox details.",
      +              "type": "boolean"
      +            },
      +            "inbox_update": {
      +              "description": "Update inbox settings.",
      +              "type": "boolean"
      +            },
      +            "label_blocked_read": {
      +              "description": "Access messages labeled blocked.",
      +              "type": "boolean"
      +            },
      +            "label_spam_read": {
      +              "description": "Access messages labeled spam.",
      +              "type": "boolean"
      +            },
      +            "label_trash_read": {
      +              "description": "Access messages labeled trash.",
      +              "type": "boolean"
      +            },
      +            "label_unauthenticated_read": {
      +              "description": "Access messages labeled unauthenticated.",
      +              "type": "boolean"
      +            },
      +            "list_entry_create": {
      +              "description": "Create list entries.",
      +              "type": "boolean"
      +            },
      +            "list_entry_delete": {
      +              "description": "Delete list entries.",
      +              "type": "boolean"
      +            },
      +            "list_entry_read": {
      +              "description": "Read list entries.",
      +              "type": "boolean"
      +            },
      +            "message_delete": {
      +              "description": "Delete messages. Also required to delete threads.",
      +              "type": "boolean"
      +            },
      +            "message_read": {
      +              "description": "Read messages. Also required to read threads.",
      +              "type": "boolean"
      +            },
      +            "message_reply": {
      +              "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      +              "type": "boolean"
      +            },
      +            "message_send": {
      +              "description": "Send messages.",
      +              "type": "boolean"
      +            },
      +            "message_update": {
      +              "description": "Update message labels. Also required to update threads.",
      +              "type": "boolean"
      +            },
      +            "metrics_read": {
      +              "description": "Read metrics.",
      +              "type": "boolean"
      +            },
      +            "pod_create": {
      +              "description": "Create pods.",
      +              "type": "boolean"
      +            },
      +            "pod_delete": {
      +              "description": "Delete pods.",
      +              "type": "boolean"
      +            },
      +            "pod_read": {
      +              "description": "Read pods.",
      +              "type": "boolean"
      +            },
      +            "pod_update": {
      +              "description": "Update pods.",
      +              "type": "boolean"
      +            },
      +            "webhook_create": {
      +              "description": "Create webhooks.",
      +              "type": "boolean"
      +            },
      +            "webhook_delete": {
      +              "description": "Delete webhooks.",
      +              "type": "boolean"
      +            },
      +            "webhook_read": {
      +              "description": "Read webhook configurations.",
      +              "type": "boolean"
      +            },
      +            "webhook_update": {
      +              "description": "Update webhooks.",
      +              "type": "boolean"
      +            }
      +          },
      +          "title": "ApiKeyPermissions",
      +          "type": "object"
      +        }
      +      },
      +      "title": "CreateBearerApiKeyRequest",
      +      "type": "object"
      +    },
      +    {
      +      "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.",
      +      "properties": {
      +        "client_id": {
      +          "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.",
      +          "title": "PublicKeyClientId",
      +          "type": "string"
      +        },
      +        "expires_at": {
      +          "description": "Time at which api key expires. Omitted when it does not expire.",
      +          "format": "date-time",
      +          "title": "ExpiresAt",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Name of api key.",
      +          "title": "Name",
      +          "type": "string"
      +        },
      +        "permissions": {
      +          "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      +          "properties": {
      +            "account_update": {
      +              "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      +              "type": "boolean"
      +            },
      +            "api_key_create": {
      +              "description": "Create API keys.",
      +              "type": "boolean"
      +            },
      +            "api_key_delete": {
      +              "description": "Delete API keys.",
      +              "type": "boolean"
      +            },
      +            "api_key_read": {
      +              "description": "Read API keys.",
      +              "type": "boolean"
      +            },
      +            "api_key_update": {
      +              "description": "Update API keys.",
      +              "type": "boolean"
      +            },
      +            "app_connect": {
      +              "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      +              "type": "boolean"
      +            },
      +            "app_share_owner": {
      +              "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_create": {
      +              "description": "Create calendar events.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_delete": {
      +              "description": "Delete calendar events.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_read": {
      +              "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      +              "type": "boolean"
      +            },
      +            "calendar_event_update": {
      +              "description": "Update calendar events and respond to invitations.",
      +              "type": "boolean"
      +            },
      +            "calendar_read": {
      +              "description": "Read inbox calendar settings.",
      +              "type": "boolean"
      +            },
      +            "calendar_update": {
      +              "description": "Update inbox calendar settings.",
      +              "type": "boolean"
      +            },
      +            "domain_create": {
      +              "description": "Create domains.",
      +              "type": "boolean"
      +            },
      +            "domain_delete": {
      +              "description": "Delete domains.",
      +              "type": "boolean"
      +            },
      +            "domain_read": {
      +              "description": "Read domain details.",
      +              "type": "boolean"
      +            },
      +            "domain_update": {
      +              "description": "Update domains.",
      +              "type": "boolean"
      +            },
      +            "draft_create": {
      +              "description": "Create drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_delete": {
      +              "description": "Delete drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_read": {
      +              "description": "Read drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_send": {
      +              "description": "Send drafts.",
      +              "type": "boolean"
      +            },
      +            "draft_update": {
      +              "description": "Update drafts.",
      +              "type": "boolean"
      +            },
      +            "inbox_create": {
      +              "description": "Create new inboxes.",
      +              "type": "boolean"
      +            },
      +            "inbox_delete": {
      +              "description": "Delete inboxes.",
      +              "type": "boolean"
      +            },
      +            "inbox_read": {
      +              "description": "Read inbox details.",
      +              "type": "boolean"
      +            },
      +            "inbox_update": {
      +              "description": "Update inbox settings.",
      +              "type": "boolean"
      +            },
      +            "label_blocked_read": {
      +              "description": "Access messages labeled blocked.",
      +              "type": "boolean"
      +            },
      +            "label_spam_read": {
      +              "description": "Access messages labeled spam.",
      +              "type": "boolean"
      +            },
      +            "label_trash_read": {
      +              "description": "Access messages labeled trash.",
      +              "type": "boolean"
      +            },
      +            "label_unauthenticated_read": {
      +              "description": "Access messages labeled unauthenticated.",
      +              "type": "boolean"
      +            },
      +            "list_entry_create": {
      +              "description": "Create list entries.",
      +              "type": "boolean"
      +            },
      +            "list_entry_delete": {
      +              "description": "Delete list entries.",
      +              "type": "boolean"
      +            },
      +            "list_entry_read": {
      +              "description": "Read list entries.",
      +              "type": "boolean"
      +            },
      +            "message_delete": {
      +              "description": "Delete messages. Also required to delete threads.",
      +              "type": "boolean"
      +            },
      +            "message_read": {
      +              "description": "Read messages. Also required to read threads.",
      +              "type": "boolean"
      +            },
      +            "message_reply": {
      +              "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      +              "type": "boolean"
      +            },
      +            "message_send": {
      +              "description": "Send messages.",
      +              "type": "boolean"
      +            },
      +            "message_update": {
      +              "description": "Update message labels. Also required to update threads.",
      +              "type": "boolean"
      +            },
      +            "metrics_read": {
      +              "description": "Read metrics.",
      +              "type": "boolean"
      +            },
      +            "pod_create": {
      +              "description": "Create pods.",
      +              "type": "boolean"
      +            },
      +            "pod_delete": {
      +              "description": "Delete pods.",
      +              "type": "boolean"
      +            },
      +            "pod_read": {
      +              "description": "Read pods.",
      +              "type": "boolean"
      +            },
      +            "pod_update": {
      +              "description": "Update pods.",
      +              "type": "boolean"
      +            },
      +            "webhook_create": {
      +              "description": "Create webhooks.",
      +              "type": "boolean"
      +            },
      +            "webhook_delete": {
      +              "description": "Delete webhooks.",
      +              "type": "boolean"
      +            },
      +            "webhook_read": {
      +              "description": "Read webhook configurations.",
      +              "type": "boolean"
      +            },
      +            "webhook_update": {
      +              "description": "Update webhooks.",
      +              "type": "boolean"
      +            }
      +          },
      +          "title": "ApiKeyPermissions",
      +          "type": "object"
      +        },
      +        "public_key": {
      +          "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.",
      +          "properties": {
      +            "crv": {
      +              "enum": [
      +                "P-256"
      +              ],
      +              "type": "string"
      +            },
      +            "kty": {
      +              "enum": [
      +                "EC"
      +              ],
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      +              "maxLength": 43,
      +              "minLength": 43,
      +              "pattern": "^[A-Za-z0-9_-]{43}$",
      +              "title": "PublicJwkCoordinate",
      +              "type": "string"
      +            },
      +            "y": {
      +              "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      +              "maxLength": 43,
      +              "minLength": 43,
      +              "pattern": "^[A-Za-z0-9_-]{43}$",
      +              "title": "PublicJwkCoordinate",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kty",
      +            "crv",
      +            "x",
      +            "y"
      +          ],
      +          "title": "PublicJwk",
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "public_key"
      +      ],
      +      "title": "CreatePublicKeyRequest",
      +      "type": "object"
      +    }
      +  ],
      +  "title": "CreateApiKeyRequest"
      +}
    • removedInput schema / properties / createapikeyrequest
      Removed value: -{
      -  "description": "A body with `public_key` registers a public-key credential; any other\nbody mints a bearer key.",
      -  "oneOf": [
      -    {
      -      "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.",
      -      "properties": {
      -        "expires_at": {
      -          "description": "Time at which api key expires. Omitted when it does not expire.",
      -          "format": "date-time",
      -          "title": "ExpiresAt",
      -          "type": "string"
      -        },
      -        "name": {
      -          "description": "Name of api key.",
      -          "title": "Name",
      -          "type": "string"
      -        },
      -        "permissions": {
      -          "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      -          "properties": {
      -            "account_update": {
      -              "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      -              "type": "boolean"
      -            },
      -            "api_key_create": {
      -              "description": "Create API keys.",
      -              "type": "boolean"
      -            },
      -            "api_key_delete": {
      -              "description": "Delete API keys.",
      -              "type": "boolean"
      -            },
      -            "api_key_read": {
      -              "description": "Read API keys.",
      -              "type": "boolean"
      -            },
      -            "api_key_update": {
      -              "description": "Update API keys.",
      -              "type": "boolean"
      -            },
      -            "app_connect": {
      -              "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      -              "type": "boolean"
      -            },
      -            "app_share_owner": {
      -              "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_create": {
      -              "description": "Create calendar events.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_delete": {
      -              "description": "Delete calendar events.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_read": {
      -              "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_update": {
      -              "description": "Update calendar events and respond to invitations.",
      -              "type": "boolean"
      -            },
      -            "calendar_read": {
      -              "description": "Read inbox calendar settings.",
      -              "type": "boolean"
      -            },
      -            "calendar_update": {
      -              "description": "Update inbox calendar settings.",
      -              "type": "boolean"
      -            },
      -            "domain_create": {
      -              "description": "Create domains.",
      -              "type": "boolean"
      -            },
      -            "domain_delete": {
      -              "description": "Delete domains.",
      -              "type": "boolean"
      -            },
      -            "domain_read": {
      -              "description": "Read domain details.",
      -              "type": "boolean"
      -            },
      -            "domain_update": {
      -              "description": "Update domains.",
      -              "type": "boolean"
      -            },
      -            "draft_create": {
      -              "description": "Create drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_delete": {
      -              "description": "Delete drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_read": {
      -              "description": "Read drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_send": {
      -              "description": "Send drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_update": {
      -              "description": "Update drafts.",
      -              "type": "boolean"
      -            },
      -            "inbox_create": {
      -              "description": "Create new inboxes.",
      -              "type": "boolean"
      -            },
      -            "inbox_delete": {
      -              "description": "Delete inboxes.",
      -              "type": "boolean"
      -            },
      -            "inbox_read": {
      -              "description": "Read inbox details.",
      -              "type": "boolean"
      -            },
      -            "inbox_update": {
      -              "description": "Update inbox settings.",
      -              "type": "boolean"
      -            },
      -            "label_blocked_read": {
      -              "description": "Access messages labeled blocked.",
      -              "type": "boolean"
      -            },
      -            "label_spam_read": {
      -              "description": "Access messages labeled spam.",
      -              "type": "boolean"
      -            },
      -            "label_trash_read": {
      -              "description": "Access messages labeled trash.",
      -              "type": "boolean"
      -            },
      -            "label_unauthenticated_read": {
      -              "description": "Access messages labeled unauthenticated.",
      -              "type": "boolean"
      -            },
      -            "list_entry_create": {
      -              "description": "Create list entries.",
      -              "type": "boolean"
      -            },
      -            "list_entry_delete": {
      -              "description": "Delete list entries.",
      -              "type": "boolean"
      -            },
      -            "list_entry_read": {
      -              "description": "Read list entries.",
      -              "type": "boolean"
      -            },
      -            "message_delete": {
      -              "description": "Delete messages. Also required to delete threads.",
      -              "type": "boolean"
      -            },
      -            "message_read": {
      -              "description": "Read messages. Also required to read threads.",
      -              "type": "boolean"
      -            },
      -            "message_reply": {
      -              "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      -              "type": "boolean"
      -            },
      -            "message_send": {
      -              "description": "Send messages.",
      -              "type": "boolean"
      -            },
      -            "message_update": {
      -              "description": "Update message labels. Also required to update threads.",
      -              "type": "boolean"
      -            },
      -            "metrics_read": {
      -              "description": "Read metrics.",
      -              "type": "boolean"
      -            },
      -            "pod_create": {
      -              "description": "Create pods.",
      -              "type": "boolean"
      -            },
      -            "pod_delete": {
      -              "description": "Delete pods.",
      -              "type": "boolean"
      -            },
      -            "pod_read": {
      -              "description": "Read pods.",
      -              "type": "boolean"
      -            },
      -            "pod_update": {
      -              "description": "Update pods.",
      -              "type": "boolean"
      -            },
      -            "webhook_create": {
      -              "description": "Create webhooks.",
      -              "type": "boolean"
      -            },
      -            "webhook_delete": {
      -              "description": "Delete webhooks.",
      -              "type": "boolean"
      -            },
      -            "webhook_read": {
      -              "description": "Read webhook configurations.",
      -              "type": "boolean"
      -            },
      -            "webhook_update": {
      -              "description": "Update webhooks.",
      -              "type": "boolean"
      -            }
      -          },
      -          "title": "ApiKeyPermissions",
      -          "type": "object"
      -        }
      -      },
      -      "title": "CreateBearerApiKeyRequest",
      -      "type": "object"
      -    },
      -    {
      -      "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.",
      -      "properties": {
      -        "client_id": {
      -          "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.",
      -          "title": "PublicKeyClientId",
      -          "type": "string"
      -        },
      -        "expires_at": {
      -          "description": "Time at which api key expires. Omitted when it does not expire.",
      -          "format": "date-time",
      -          "title": "ExpiresAt",
      -          "type": "string"
      -        },
      -        "name": {
      -          "description": "Name of api key.",
      -          "title": "Name",
      -          "type": "string"
      -        },
      -        "permissions": {
      -          "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      -          "properties": {
      -            "account_update": {
      -              "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      -              "type": "boolean"
      -            },
      -            "api_key_create": {
      -              "description": "Create API keys.",
      -              "type": "boolean"
      -            },
      -            "api_key_delete": {
      -              "description": "Delete API keys.",
      -              "type": "boolean"
      -            },
      -            "api_key_read": {
      -              "description": "Read API keys.",
      -              "type": "boolean"
      -            },
      -            "api_key_update": {
      -              "description": "Update API keys.",
      -              "type": "boolean"
      -            },
      -            "app_connect": {
      -              "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      -              "type": "boolean"
      -            },
      -            "app_share_owner": {
      -              "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_create": {
      -              "description": "Create calendar events.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_delete": {
      -              "description": "Delete calendar events.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_read": {
      -              "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      -              "type": "boolean"
      -            },
      -            "calendar_event_update": {
      -              "description": "Update calendar events and respond to invitations.",
      -              "type": "boolean"
      -            },
      -            "calendar_read": {
      -              "description": "Read inbox calendar settings.",
      -              "type": "boolean"
      -            },
      -            "calendar_update": {
      -              "description": "Update inbox calendar settings.",
      -              "type": "boolean"
      -            },
      -            "domain_create": {
      -              "description": "Create domains.",
      -              "type": "boolean"
      -            },
      -            "domain_delete": {
      -              "description": "Delete domains.",
      -              "type": "boolean"
      -            },
      -            "domain_read": {
      -              "description": "Read domain details.",
      -              "type": "boolean"
      -            },
      -            "domain_update": {
      -              "description": "Update domains.",
      -              "type": "boolean"
      -            },
      -            "draft_create": {
      -              "description": "Create drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_delete": {
      -              "description": "Delete drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_read": {
      -              "description": "Read drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_send": {
      -              "description": "Send drafts.",
      -              "type": "boolean"
      -            },
      -            "draft_update": {
      -              "description": "Update drafts.",
      -              "type": "boolean"
      -            },
      -            "inbox_create": {
      -              "description": "Create new inboxes.",
      -              "type": "boolean"
      -            },
      -            "inbox_delete": {
      -              "description": "Delete inboxes.",
      -              "type": "boolean"
      -            },
      -            "inbox_read": {
      -              "description": "Read inbox details.",
      -              "type": "boolean"
      -            },
      -            "inbox_update": {
      -              "description": "Update inbox settings.",
      -              "type": "boolean"
      -            },
      -            "label_blocked_read": {
      -              "description": "Access messages labeled blocked.",
      -              "type": "boolean"
      -            },
      -            "label_spam_read": {
      -              "description": "Access messages labeled spam.",
      -              "type": "boolean"
      -            },
      -            "label_trash_read": {
      -              "description": "Access messages labeled trash.",
      -              "type": "boolean"
      -            },
      -            "label_unauthenticated_read": {
      -              "description": "Access messages labeled unauthenticated.",
      -              "type": "boolean"
      -            },
      -            "list_entry_create": {
      -              "description": "Create list entries.",
      -              "type": "boolean"
      -            },
      -            "list_entry_delete": {
      -              "description": "Delete list entries.",
      -              "type": "boolean"
      -            },
      -            "list_entry_read": {
      -              "description": "Read list entries.",
      -              "type": "boolean"
      -            },
      -            "message_delete": {
      -              "description": "Delete messages. Also required to delete threads.",
      -              "type": "boolean"
      -            },
      -            "message_read": {
      -              "description": "Read messages. Also required to read threads.",
      -              "type": "boolean"
      -            },
      -            "message_reply": {
      -              "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      -              "type": "boolean"
      -            },
      -            "message_send": {
      -              "description": "Send messages.",
      -              "type": "boolean"
      -            },
      -            "message_update": {
      -              "description": "Update message labels. Also required to update threads.",
      -              "type": "boolean"
      -            },
      -            "metrics_read": {
      -              "description": "Read metrics.",
      -              "type": "boolean"
      -            },
      -            "pod_create": {
      -              "description": "Create pods.",
      -              "type": "boolean"
      -            },
      -            "pod_delete": {
      -              "description": "Delete pods.",
      -              "type": "boolean"
      -            },
      -            "pod_read": {
      -              "description": "Read pods.",
      -              "type": "boolean"
      -            },
      -            "pod_update": {
      -              "description": "Update pods.",
      -              "type": "boolean"
      -            },
      -            "webhook_create": {
      -              "description": "Create webhooks.",
      -              "type": "boolean"
      -            },
      -            "webhook_delete": {
      -              "description": "Delete webhooks.",
      -              "type": "boolean"
      -            },
      -            "webhook_read": {
      -              "description": "Read webhook configurations.",
      -              "type": "boolean"
      -            },
      -            "webhook_update": {
      -              "description": "Update webhooks.",
      -              "type": "boolean"
      -            }
      -          },
      -          "title": "ApiKeyPermissions",
      -          "type": "object"
      -        },
      -        "public_key": {
      -          "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.",
      -          "properties": {
      -            "crv": {
      -              "enum": [
      -                "P-256"
      -              ],
      -              "type": "string"
      -            },
      -            "kty": {
      -              "enum": [
      -                "EC"
      -              ],
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      -              "maxLength": 43,
      -              "minLength": 43,
      -              "pattern": "^[A-Za-z0-9_-]{43}$",
      -              "title": "PublicJwkCoordinate",
      -              "type": "string"
      -            },
      -            "y": {
      -              "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      -              "maxLength": 43,
      -              "minLength": 43,
      -              "pattern": "^[A-Za-z0-9_-]{43}$",
      -              "title": "PublicJwkCoordinate",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "kty",
      -            "crv",
      -            "x",
      -            "y"
      -          ],
      -          "title": "PublicJwk",
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "public_key"
      -      ],
      -      "title": "CreatePublicKeyRequest",
      -      "type": "object"
      -    }
      -  ],
      -  "title": "CreateApiKeyRequest"
      -}
  2. Changed2 schema fields changed
    • removedInput schema / properties / createapikeyrequest / anyOf
      Removed value: -[
      -  {
      -    "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.",
      -    "properties": {
      -      "expires_at": {
      -        "description": "Time at which api key expires. Omitted when it does not expire.",
      -        "format": "date-time",
      -        "title": "ExpiresAt",
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "Name of api key.",
      -        "title": "Name",
      -        "type": "string"
      -      },
      -      "permissions": {
      -        "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      -        "properties": {
      -          "account_update": {
      -            "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      -            "type": "boolean"
      -          },
      -          "api_key_create": {
      -            "description": "Create API keys.",
      -            "type": "boolean"
      -          },
      -          "api_key_delete": {
      -            "description": "Delete API keys.",
      -            "type": "boolean"
      -          },
      -          "api_key_read": {
      -            "description": "Read API keys.",
      -            "type": "boolean"
      -          },
      -          "api_key_update": {
      -            "description": "Update API keys.",
      -            "type": "boolean"
      -          },
      -          "app_connect": {
      -            "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      -            "type": "boolean"
      -          },
      -          "app_share_owner": {
      -            "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_create": {
      -            "description": "Create calendar events.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_delete": {
      -            "description": "Delete calendar events.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_read": {
      -            "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_update": {
      -            "description": "Update calendar events and respond to invitations.",
      -            "type": "boolean"
      -          },
      -          "calendar_read": {
      -            "description": "Read inbox calendar settings.",
      -            "type": "boolean"
      -          },
      -          "calendar_update": {
      -            "description": "Update inbox calendar settings.",
      -            "type": "boolean"
      -          },
      -          "domain_create": {
      -            "description": "Create domains.",
      -            "type": "boolean"
      -          },
      -          "domain_delete": {
      -            "description": "Delete domains.",
      -            "type": "boolean"
      -          },
      -          "domain_read": {
      -            "description": "Read domain details.",
      -            "type": "boolean"
      -          },
      -          "domain_update": {
      -            "description": "Update domains.",
      -            "type": "boolean"
      -          },
      -          "draft_create": {
      -            "description": "Create drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_delete": {
      -            "description": "Delete drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_read": {
      -            "description": "Read drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_send": {
      -            "description": "Send drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_update": {
      -            "description": "Update drafts.",
      -            "type": "boolean"
      -          },
      -          "inbox_create": {
      -            "description": "Create new inboxes.",
      -            "type": "boolean"
      -          },
      -          "inbox_delete": {
      -            "description": "Delete inboxes.",
      -            "type": "boolean"
      -          },
      -          "inbox_read": {
      -            "description": "Read inbox details.",
      -            "type": "boolean"
      -          },
      -          "inbox_update": {
      -            "description": "Update inbox settings.",
      -            "type": "boolean"
      -          },
      -          "label_blocked_read": {
      -            "description": "Access messages labeled blocked.",
      -            "type": "boolean"
      -          },
      -          "label_spam_read": {
      -            "description": "Access messages labeled spam.",
      -            "type": "boolean"
      -          },
      -          "label_trash_read": {
      -            "description": "Access messages labeled trash.",
      -            "type": "boolean"
      -          },
      -          "label_unauthenticated_read": {
      -            "description": "Access messages labeled unauthenticated.",
      -            "type": "boolean"
      -          },
      -          "list_entry_create": {
      -            "description": "Create list entries.",
      -            "type": "boolean"
      -          },
      -          "list_entry_delete": {
      -            "description": "Delete list entries.",
      -            "type": "boolean"
      -          },
      -          "list_entry_read": {
      -            "description": "Read list entries.",
      -            "type": "boolean"
      -          },
      -          "message_delete": {
      -            "description": "Delete messages. Also required to delete threads.",
      -            "type": "boolean"
      -          },
      -          "message_read": {
      -            "description": "Read messages. Also required to read threads.",
      -            "type": "boolean"
      -          },
      -          "message_reply": {
      -            "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      -            "type": "boolean"
      -          },
      -          "message_send": {
      -            "description": "Send messages.",
      -            "type": "boolean"
      -          },
      -          "message_update": {
      -            "description": "Update message labels. Also required to update threads.",
      -            "type": "boolean"
      -          },
      -          "metrics_read": {
      -            "description": "Read metrics.",
      -            "type": "boolean"
      -          },
      -          "pod_create": {
      -            "description": "Create pods.",
      -            "type": "boolean"
      -          },
      -          "pod_delete": {
      -            "description": "Delete pods.",
      -            "type": "boolean"
      -          },
      -          "pod_read": {
      -            "description": "Read pods.",
      -            "type": "boolean"
      -          },
      -          "pod_update": {
      -            "description": "Update pods.",
      -            "type": "boolean"
      -          },
      -          "webhook_create": {
      -            "description": "Create webhooks.",
      -            "type": "boolean"
      -          },
      -          "webhook_delete": {
      -            "description": "Delete webhooks.",
      -            "type": "boolean"
      -          },
      -          "webhook_read": {
      -            "description": "Read webhook configurations.",
      -            "type": "boolean"
      -          },
      -          "webhook_update": {
      -            "description": "Update webhooks.",
      -            "type": "boolean"
      -          }
      -        },
      -        "title": "ApiKeyPermissions",
      -        "type": "object"
      -      }
      -    },
      -    "title": "CreateBearerApiKeyRequest",
      -    "type": "object"
      -  },
      -  {
      -    "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.",
      -    "properties": {
      -      "client_id": {
      -        "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.",
      -        "title": "PublicKeyClientId",
      -        "type": "string"
      -      },
      -      "expires_at": {
      -        "description": "Time at which api key expires. Omitted when it does not expire.",
      -        "format": "date-time",
      -        "title": "ExpiresAt",
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "Name of api key.",
      -        "title": "Name",
      -        "type": "string"
      -      },
      -      "permissions": {
      -        "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      -        "properties": {
      -          "account_update": {
      -            "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      -            "type": "boolean"
      -          },
      -          "api_key_create": {
      -            "description": "Create API keys.",
      -            "type": "boolean"
      -          },
      -          "api_key_delete": {
      -            "description": "Delete API keys.",
      -            "type": "boolean"
      -          },
      -          "api_key_read": {
      -            "description": "Read API keys.",
      -            "type": "boolean"
      -          },
      -          "api_key_update": {
      -            "description": "Update API keys.",
      -            "type": "boolean"
      -          },
      -          "app_connect": {
      -            "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      -            "type": "boolean"
      -          },
      -          "app_share_owner": {
      -            "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_create": {
      -            "description": "Create calendar events.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_delete": {
      -            "description": "Delete calendar events.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_read": {
      -            "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      -            "type": "boolean"
      -          },
      -          "calendar_event_update": {
      -            "description": "Update calendar events and respond to invitations.",
      -            "type": "boolean"
      -          },
      -          "calendar_read": {
      -            "description": "Read inbox calendar settings.",
      -            "type": "boolean"
      -          },
      -          "calendar_update": {
      -            "description": "Update inbox calendar settings.",
      -            "type": "boolean"
      -          },
      -          "domain_create": {
      -            "description": "Create domains.",
      -            "type": "boolean"
      -          },
      -          "domain_delete": {
      -            "description": "Delete domains.",
      -            "type": "boolean"
      -          },
      -          "domain_read": {
      -            "description": "Read domain details.",
      -            "type": "boolean"
      -          },
      -          "domain_update": {
      -            "description": "Update domains.",
      -            "type": "boolean"
      -          },
      -          "draft_create": {
      -            "description": "Create drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_delete": {
      -            "description": "Delete drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_read": {
      -            "description": "Read drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_send": {
      -            "description": "Send drafts.",
      -            "type": "boolean"
      -          },
      -          "draft_update": {
      -            "description": "Update drafts.",
      -            "type": "boolean"
      -          },
      -          "inbox_create": {
      -            "description": "Create new inboxes.",
      -            "type": "boolean"
      -          },
      -          "inbox_delete": {
      -            "description": "Delete inboxes.",
      -            "type": "boolean"
      -          },
      -          "inbox_read": {
      -            "description": "Read inbox details.",
      -            "type": "boolean"
      -          },
      -          "inbox_update": {
      -            "description": "Update inbox settings.",
      -            "type": "boolean"
      -          },
      -          "label_blocked_read": {
      -            "description": "Access messages labeled blocked.",
      -            "type": "boolean"
      -          },
      -          "label_spam_read": {
      -            "description": "Access messages labeled spam.",
      -            "type": "boolean"
      -          },
      -          "label_trash_read": {
      -            "description": "Access messages labeled trash.",
      -            "type": "boolean"
      -          },
      -          "label_unauthenticated_read": {
      -            "description": "Access messages labeled unauthenticated.",
      -            "type": "boolean"
      -          },
      -          "list_entry_create": {
      -            "description": "Create list entries.",
      -            "type": "boolean"
      -          },
      -          "list_entry_delete": {
      -            "description": "Delete list entries.",
      -            "type": "boolean"
      -          },
      -          "list_entry_read": {
      -            "description": "Read list entries.",
      -            "type": "boolean"
      -          },
      -          "message_delete": {
      -            "description": "Delete messages. Also required to delete threads.",
      -            "type": "boolean"
      -          },
      -          "message_read": {
      -            "description": "Read messages. Also required to read threads.",
      -            "type": "boolean"
      -          },
      -          "message_reply": {
      -            "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      -            "type": "boolean"
      -          },
      -          "message_send": {
      -            "description": "Send messages.",
      -            "type": "boolean"
      -          },
      -          "message_update": {
      -            "description": "Update message labels. Also required to update threads.",
      -            "type": "boolean"
      -          },
      -          "metrics_read": {
      -            "description": "Read metrics.",
      -            "type": "boolean"
      -          },
      -          "pod_create": {
      -            "description": "Create pods.",
      -            "type": "boolean"
      -          },
      -          "pod_delete": {
      -            "description": "Delete pods.",
      -            "type": "boolean"
      -          },
      -          "pod_read": {
      -            "description": "Read pods.",
      -            "type": "boolean"
      -          },
      -          "pod_update": {
      -            "description": "Update pods.",
      -            "type": "boolean"
      -          },
      -          "webhook_create": {
      -            "description": "Create webhooks.",
      -            "type": "boolean"
      -          },
      -          "webhook_delete": {
      -            "description": "Delete webhooks.",
      -            "type": "boolean"
      -          },
      -          "webhook_read": {
      -            "description": "Read webhook configurations.",
      -            "type": "boolean"
      -          },
      -          "webhook_update": {
      -            "description": "Update webhooks.",
      -            "type": "boolean"
      -          }
      -        },
      -        "title": "ApiKeyPermissions",
      -        "type": "object"
      -      },
      -      "public_key": {
      -        "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.",
      -        "properties": {
      -          "crv": {
      -            "enum": [
      -              "P-256"
      -            ],
      -            "type": "string"
      -          },
      -          "kty": {
      -            "enum": [
      -              "EC"
      -            ],
      -            "type": "string"
      -          },
      -          "x": {
      -            "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      -            "maxLength": 43,
      -            "minLength": 43,
      -            "pattern": "^[A-Za-z0-9_-]{43}$",
      -            "title": "PublicJwkCoordinate",
      -            "type": "string"
      -          },
      -          "y": {
      -            "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      -            "maxLength": 43,
      -            "minLength": 43,
      -            "pattern": "^[A-Za-z0-9_-]{43}$",
      -            "title": "PublicJwkCoordinate",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kty",
      -          "crv",
      -          "x",
      -          "y"
      -        ],
      -        "title": "PublicJwk",
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "public_key"
      -    ],
      -    "title": "CreatePublicKeyRequest",
      -    "type": "object"
      -  }
      -]
    • addedInput schema / properties / createapikeyrequest / oneOf
      Added value: +[
      +  {
      +    "description": "`expires_at` must be in the future and is immutable once the key exists.\nOmitted, the new key inherits the authenticating key's expiry, and never\nexpires only when that key never does. A key cannot create one that\noutlives it: an `expires_at` later than the authenticating key's own\nreturns `403`.",
      +    "properties": {
      +      "expires_at": {
      +        "description": "Time at which api key expires. Omitted when it does not expire.",
      +        "format": "date-time",
      +        "title": "ExpiresAt",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Name of api key.",
      +        "title": "Name",
      +        "type": "string"
      +      },
      +      "permissions": {
      +        "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      +        "properties": {
      +          "account_update": {
      +            "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      +            "type": "boolean"
      +          },
      +          "api_key_create": {
      +            "description": "Create API keys.",
      +            "type": "boolean"
      +          },
      +          "api_key_delete": {
      +            "description": "Delete API keys.",
      +            "type": "boolean"
      +          },
      +          "api_key_read": {
      +            "description": "Read API keys.",
      +            "type": "boolean"
      +          },
      +          "api_key_update": {
      +            "description": "Update API keys.",
      +            "type": "boolean"
      +          },
      +          "app_connect": {
      +            "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      +            "type": "boolean"
      +          },
      +          "app_share_owner": {
      +            "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_create": {
      +            "description": "Create calendar events.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_delete": {
      +            "description": "Delete calendar events.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_read": {
      +            "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_update": {
      +            "description": "Update calendar events and respond to invitations.",
      +            "type": "boolean"
      +          },
      +          "calendar_read": {
      +            "description": "Read inbox calendar settings.",
      +            "type": "boolean"
      +          },
      +          "calendar_update": {
      +            "description": "Update inbox calendar settings.",
      +            "type": "boolean"
      +          },
      +          "domain_create": {
      +            "description": "Create domains.",
      +            "type": "boolean"
      +          },
      +          "domain_delete": {
      +            "description": "Delete domains.",
      +            "type": "boolean"
      +          },
      +          "domain_read": {
      +            "description": "Read domain details.",
      +            "type": "boolean"
      +          },
      +          "domain_update": {
      +            "description": "Update domains.",
      +            "type": "boolean"
      +          },
      +          "draft_create": {
      +            "description": "Create drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_delete": {
      +            "description": "Delete drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_read": {
      +            "description": "Read drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_send": {
      +            "description": "Send drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_update": {
      +            "description": "Update drafts.",
      +            "type": "boolean"
      +          },
      +          "inbox_create": {
      +            "description": "Create new inboxes.",
      +            "type": "boolean"
      +          },
      +          "inbox_delete": {
      +            "description": "Delete inboxes.",
      +            "type": "boolean"
      +          },
      +          "inbox_read": {
      +            "description": "Read inbox details.",
      +            "type": "boolean"
      +          },
      +          "inbox_update": {
      +            "description": "Update inbox settings.",
      +            "type": "boolean"
      +          },
      +          "label_blocked_read": {
      +            "description": "Access messages labeled blocked.",
      +            "type": "boolean"
      +          },
      +          "label_spam_read": {
      +            "description": "Access messages labeled spam.",
      +            "type": "boolean"
      +          },
      +          "label_trash_read": {
      +            "description": "Access messages labeled trash.",
      +            "type": "boolean"
      +          },
      +          "label_unauthenticated_read": {
      +            "description": "Access messages labeled unauthenticated.",
      +            "type": "boolean"
      +          },
      +          "list_entry_create": {
      +            "description": "Create list entries.",
      +            "type": "boolean"
      +          },
      +          "list_entry_delete": {
      +            "description": "Delete list entries.",
      +            "type": "boolean"
      +          },
      +          "list_entry_read": {
      +            "description": "Read list entries.",
      +            "type": "boolean"
      +          },
      +          "message_delete": {
      +            "description": "Delete messages. Also required to delete threads.",
      +            "type": "boolean"
      +          },
      +          "message_read": {
      +            "description": "Read messages. Also required to read threads.",
      +            "type": "boolean"
      +          },
      +          "message_reply": {
      +            "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      +            "type": "boolean"
      +          },
      +          "message_send": {
      +            "description": "Send messages.",
      +            "type": "boolean"
      +          },
      +          "message_update": {
      +            "description": "Update message labels. Also required to update threads.",
      +            "type": "boolean"
      +          },
      +          "metrics_read": {
      +            "description": "Read metrics.",
      +            "type": "boolean"
      +          },
      +          "pod_create": {
      +            "description": "Create pods.",
      +            "type": "boolean"
      +          },
      +          "pod_delete": {
      +            "description": "Delete pods.",
      +            "type": "boolean"
      +          },
      +          "pod_read": {
      +            "description": "Read pods.",
      +            "type": "boolean"
      +          },
      +          "pod_update": {
      +            "description": "Update pods.",
      +            "type": "boolean"
      +          },
      +          "webhook_create": {
      +            "description": "Create webhooks.",
      +            "type": "boolean"
      +          },
      +          "webhook_delete": {
      +            "description": "Delete webhooks.",
      +            "type": "boolean"
      +          },
      +          "webhook_read": {
      +            "description": "Read webhook configurations.",
      +            "type": "boolean"
      +          },
      +          "webhook_update": {
      +            "description": "Update webhooks.",
      +            "type": "boolean"
      +          }
      +        },
      +        "title": "ApiKeyPermissions",
      +        "type": "object"
      +      }
      +    },
      +    "title": "CreateBearerApiKeyRequest",
      +    "type": "object"
      +  },
      +  {
      +    "description": "Registers a public P-256 JWK at the route's scope. `type` and\n`api_key_id` are server-owned. `name` defaults to\n`AgentID key {first eight fingerprint characters}`; `permissions`\ndefaults to the registering key's, and only grants it holds may be\ntrue; `expires_at` defaults to the registering key's expiry and is\nindependent of that key afterward.",
      +    "properties": {
      +      "client_id": {
      +        "description": "Caller-chosen alias for a public key, unique within the organization and\nreusable after deletion. Accepted in place of `api_key_id` on get, update,\nand delete. Registration is idempotent on it: the same alias returns the\nexisting key, a conflicting one returns `409`. URL-safe; no slash or `@`.",
      +        "title": "PublicKeyClientId",
      +        "type": "string"
      +      },
      +      "expires_at": {
      +        "description": "Time at which api key expires. Omitted when it does not expire.",
      +        "format": "date-time",
      +        "title": "ExpiresAt",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Name of api key.",
      +        "title": "Name",
      +        "type": "string"
      +      },
      +      "permissions": {
      +        "description": "Granular permissions for the API key. When ommitted all permissions are granted. Otherwise, only permissions set to true are granted.",
      +        "properties": {
      +          "account_update": {
      +            "description": "Update accounts: disable or re-enable an inbox's sign-in at an app. Reading accounts\nneeds only `inbox_read`.",
      +            "type": "boolean"
      +          },
      +          "api_key_create": {
      +            "description": "Create API keys.",
      +            "type": "boolean"
      +          },
      +          "api_key_delete": {
      +            "description": "Delete API keys.",
      +            "type": "boolean"
      +          },
      +          "api_key_read": {
      +            "description": "Read API keys.",
      +            "type": "boolean"
      +          },
      +          "api_key_update": {
      +            "description": "Update API keys.",
      +            "type": "boolean"
      +          },
      +          "app_connect": {
      +            "description": "Sign in to apps as an inbox: connect an app, authorize an inbox, and mint the\nsign-in keys. Omitted on a new bearer key means false, whatever else the key holds.",
      +            "type": "boolean"
      +          },
      +          "app_share_owner": {
      +            "description": "Share the organization owner's name and email with apps at sign-in. One permission\nfor both values.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_create": {
      +            "description": "Create calendar events.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_delete": {
      +            "description": "Delete calendar events.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_read": {
      +            "description": "Read calendar events, and receive `calendar.event.*` webhook and WebSocket events.",
      +            "type": "boolean"
      +          },
      +          "calendar_event_update": {
      +            "description": "Update calendar events and respond to invitations.",
      +            "type": "boolean"
      +          },
      +          "calendar_read": {
      +            "description": "Read inbox calendar settings.",
      +            "type": "boolean"
      +          },
      +          "calendar_update": {
      +            "description": "Update inbox calendar settings.",
      +            "type": "boolean"
      +          },
      +          "domain_create": {
      +            "description": "Create domains.",
      +            "type": "boolean"
      +          },
      +          "domain_delete": {
      +            "description": "Delete domains.",
      +            "type": "boolean"
      +          },
      +          "domain_read": {
      +            "description": "Read domain details.",
      +            "type": "boolean"
      +          },
      +          "domain_update": {
      +            "description": "Update domains.",
      +            "type": "boolean"
      +          },
      +          "draft_create": {
      +            "description": "Create drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_delete": {
      +            "description": "Delete drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_read": {
      +            "description": "Read drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_send": {
      +            "description": "Send drafts.",
      +            "type": "boolean"
      +          },
      +          "draft_update": {
      +            "description": "Update drafts.",
      +            "type": "boolean"
      +          },
      +          "inbox_create": {
      +            "description": "Create new inboxes.",
      +            "type": "boolean"
      +          },
      +          "inbox_delete": {
      +            "description": "Delete inboxes.",
      +            "type": "boolean"
      +          },
      +          "inbox_read": {
      +            "description": "Read inbox details.",
      +            "type": "boolean"
      +          },
      +          "inbox_update": {
      +            "description": "Update inbox settings.",
      +            "type": "boolean"
      +          },
      +          "label_blocked_read": {
      +            "description": "Access messages labeled blocked.",
      +            "type": "boolean"
      +          },
      +          "label_spam_read": {
      +            "description": "Access messages labeled spam.",
      +            "type": "boolean"
      +          },
      +          "label_trash_read": {
      +            "description": "Access messages labeled trash.",
      +            "type": "boolean"
      +          },
      +          "label_unauthenticated_read": {
      +            "description": "Access messages labeled unauthenticated.",
      +            "type": "boolean"
      +          },
      +          "list_entry_create": {
      +            "description": "Create list entries.",
      +            "type": "boolean"
      +          },
      +          "list_entry_delete": {
      +            "description": "Delete list entries.",
      +            "type": "boolean"
      +          },
      +          "list_entry_read": {
      +            "description": "Read list entries.",
      +            "type": "boolean"
      +          },
      +          "message_delete": {
      +            "description": "Delete messages. Also required to delete threads.",
      +            "type": "boolean"
      +          },
      +          "message_read": {
      +            "description": "Read messages. Also required to read threads.",
      +            "type": "boolean"
      +          },
      +          "message_reply": {
      +            "description": "Reply and reply-all when the request is signed with a registered public key. Bearer keys reply with `message_send`.",
      +            "type": "boolean"
      +          },
      +          "message_send": {
      +            "description": "Send messages.",
      +            "type": "boolean"
      +          },
      +          "message_update": {
      +            "description": "Update message labels. Also required to update threads.",
      +            "type": "boolean"
      +          },
      +          "metrics_read": {
      +            "description": "Read metrics.",
      +            "type": "boolean"
      +          },
      +          "pod_create": {
      +            "description": "Create pods.",
      +            "type": "boolean"
      +          },
      +          "pod_delete": {
      +            "description": "Delete pods.",
      +            "type": "boolean"
      +          },
      +          "pod_read": {
      +            "description": "Read pods.",
      +            "type": "boolean"
      +          },
      +          "pod_update": {
      +            "description": "Update pods.",
      +            "type": "boolean"
      +          },
      +          "webhook_create": {
      +            "description": "Create webhooks.",
      +            "type": "boolean"
      +          },
      +          "webhook_delete": {
      +            "description": "Delete webhooks.",
      +            "type": "boolean"
      +          },
      +          "webhook_read": {
      +            "description": "Read webhook configurations.",
      +            "type": "boolean"
      +          },
      +          "webhook_update": {
      +            "description": "Update webhooks.",
      +            "type": "boolean"
      +          }
      +        },
      +        "title": "ApiKeyPermissions",
      +        "type": "object"
      +      },
      +      "public_key": {
      +        "description": "A public P-256 JWK. The object accepts exactly `kty`, `crv`, `x`, and `y`.\nPrivate key material such as `d`, embedded key IDs, and all other members\nare rejected. The server also rejects coordinates that are not a point on\nP-256.",
      +        "properties": {
      +          "crv": {
      +            "enum": [
      +              "P-256"
      +            ],
      +            "type": "string"
      +          },
      +          "kty": {
      +            "enum": [
      +              "EC"
      +            ],
      +            "type": "string"
      +          },
      +          "x": {
      +            "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      +            "maxLength": 43,
      +            "minLength": 43,
      +            "pattern": "^[A-Za-z0-9_-]{43}$",
      +            "title": "PublicJwkCoordinate",
      +            "type": "string"
      +          },
      +          "y": {
      +            "description": "A 32-byte P-256 coordinate encoded as unpadded base64url.",
      +            "maxLength": 43,
      +            "minLength": 43,
      +            "pattern": "^[A-Za-z0-9_-]{43}$",
      +            "title": "PublicJwkCoordinate",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kty",
      +          "crv",
      +          "x",
      +          "y"
      +        ],
      +        "title": "PublicJwk",
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "public_key"
      +    ],
      +    "title": "CreatePublicKeyRequest",
      +    "type": "object"
      +  }
      +]
  3. Added
  4. Removed
  5. Added

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, so the safety profile is covered structurally. The description adds only mild context ("paginated", "optional permissions and scope settings") and does not disclose creation side effects, the 403 expiry constraint, or idempotency behavior — though those details do appear in the nested schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence that front-loads the two operations. It is efficient, though the appended pricing blockquote is boilerplate not intrinsic to the tool's semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and params are fully documented in the schema. However, for a tool that conflates a read and a destructive write behind one endpoint, the description omits the operational trigger that an agent needs to call it correctly, leaving a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is a single `body` parameter, so the schema carries the full semantic burden (including the oneOf bearer/public-key distinction). The description only gestures at "permissions and scope settings," adding marginally beyond the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs and resource: "Retrieve a paginated list of API keys or create a new API key." The dual-mode (list/create) nature is clear, but the description does not distinguish itself from siblings like get_any_agentmail_apis_v1_agentmail_api_keys_api_key_id or patch/delete variants operating on the same resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance and, critically, never explains how to select between the two bundled operations (listing vs creating) via the single body parameter. An agent must infer the mode switch from the schema rather than the prose, and no alternatives (e.g. get/patch key endpoints) are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources