{"serverId":"mcp-registry/io.github.vee3io/vee3","tools":[{"name":"clerk.add_domain","fixed":{"name":"clerk_add_domain","description":"Add a custom domain to a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created domain with CNAME targets for DNS setup.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"add_clerk_domainArguments","required":["name","is_satellite"],"properties":{"name":{"type":"string","title":"Name","description":"Domain hostname to add."},"proxy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Url","default":null,"description":"Proxy URL when using a satellite domain behind a reverse proxy."},"is_satellite":{"type":"boolean","title":"Is Satellite","description":"Whether this is a satellite domain."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.add_domain\" → \"clerk_add_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":286,"tokensAfter":286},{"name":"clerk.ban_users","fixed":{"name":"clerk_ban_users","description":"Ban one or more Clerk users, preventing them from signing in.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user summaries and total count.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"ban_clerk_usersArguments","required":["user_ids"],"properties":{"user_ids":{"type":"array","items":{"type":"string"},"title":"User Ids","description":"List of one or more Clerk user ids (user_...) to ban."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.ban_users\" → \"clerk_ban_users\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"clerk.change_instance_domain","fixed":{"name":"clerk_change_instance_domain","description":"Change the primary or secondary home URL for a connected Clerk instance.\n\nWARNING: Destructive operation — changing the instance domain invalidates active sessions and may cause brief downtime.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns whether Clerk accepted the domain change request.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"change_clerk_instance_domainArguments","required":["home_url"],"properties":{"home_url":{"type":"string","title":"Home Url","description":"New home URL for the instance domain."},"is_secondary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Secondary","default":null,"description":"When true, change the secondary domain instead of the primary."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.change_instance_domain\" → \"clerk_change_instance_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":307,"tokensAfter":307},{"name":"clerk.count_users","fixed":{"name":"clerk_count_users","description":"Return the total number of users in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCheaper than listing users when you only need the total count.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"count_clerk_usersArguments","properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Optional filter query forwarded to Clerk (email, phone, username, or external id)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.count_users\" → \"clerk_count_users\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"clerk.create_actor_token","fixed":{"name":"clerk_create_actor_token","description":"Create an actor token that lets one user impersonate another in a connected Clerk application.\n\n**Sensitive** — the returned token is a high-privilege secret that grants impersonation access; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 15 tokens.","inputSchema":{"type":"object","title":"create_clerk_actor_tokenArguments","required":["user_id","actor_sub"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) of the user being impersonated."},"actor_sub":{"type":"string","title":"Actor Sub","description":"Clerk user id (user_...) of the impersonating actor (maps to actor.sub)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"expires_in_seconds":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Expires In Seconds","default":null,"description":"Actor token lifetime in seconds (minimum 1). Defaults to 3600 (1 hour)."},"session_max_duration_in_seconds":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Session Max Duration In Seconds","default":null,"description":"Maximum duration in seconds for the session created from this token (minimum 1). Defaults to 1800 (30 minutes)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_actor_token\" → \"clerk_create_actor_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":427,"tokensAfter":427},{"name":"clerk.create_admin_portal_link_token","fixed":{"name":"clerk_create_admin_portal_link_token","description":"Create an admin portal link token in a connected Clerk instance.\n\n**Sensitive** — the returned token is a single-use deep-link secret; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 15 tokens.","inputSchema":{"type":"object","title":"create_clerk_admin_portal_link_tokenArguments","properties":{"scopes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Scopes","default":null,"description":"Optional scopes for the link (for example \"admin_portal:read\")."},"it_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"It Contact Id","default":null,"description":"Optional opaque IT contact reference for the link."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":null,"description":"Optional organization id (org_...) to scope the admin portal link."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"seconds_until_expiration":{"anyOf":[{"type":"integer","maximum":86400,"minimum":1},{"type":"null"}],"title":"Seconds Until Expiration","default":null,"description":"Link token lifetime in seconds (default 3600, max 86400)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_admin_portal_link_token\" → \"clerk_create_admin_portal_link_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":416,"tokensAfter":416},{"name":"clerk.create_allowlist_identifier","fixed":{"name":"clerk_create_allowlist_identifier","description":"Add an identifier to the allowlist in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created allowlist identifier summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"create_clerk_allowlist_identifierArguments","required":["identifier"],"properties":{"notify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify","default":null,"description":"When true, notify the user by email or SMS that they were added to the allowlist."},"identifier":{"type":"string","title":"Identifier","description":"Identifier to allowlist: email, wildcard domain (*@example.com), E.164 phone (+15555555555), or Web3 wallet address."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_allowlist_identifier\" → \"clerk_create_allowlist_identifier\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":297,"tokensAfter":297},{"name":"clerk.create_api_key","fixed":{"name":"clerk_create_api_key","description":"Create an API key in a connected Clerk application.\n\n**Sensitive** — the returned secret is a high-privilege credential; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new API key summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_api_keyArguments","required":["name","subject"],"properties":{"name":{"type":"string","title":"Name","description":"Human-readable name for the new API key."},"claims":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Claims","default":null,"description":"Custom claims to embed in tokens minted from this API key."},"scopes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Scopes","default":null,"description":"Permission scopes to grant the API key."},"subject":{"type":"string","title":"Subject","description":"Subject the API key is scoped to (user_... or org_...)."},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type","default":null,"description":"API key type (typically \"api_key\")."},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","default":null,"description":"User id to record as the creator of this API key."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":null,"description":"Optional description for the API key."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"seconds_until_expiration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Seconds Until Expiration","default":null,"description":"Seconds from creation until the API key expires."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_api_key\" → \"clerk_create_api_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":544,"tokensAfter":544},{"name":"clerk.create_blocklist_identifier","fixed":{"name":"clerk_create_blocklist_identifier","description":"Add an identifier to the blocklist in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nBlocked identifiers cannot sign up or sign in. Returns the created blocklist identifier summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"create_clerk_blocklist_identifierArguments","required":["identifier"],"properties":{"identifier":{"type":"string","title":"Identifier","description":"Identifier to block: email, domain, E.164 phone (+15555555555), or Web3 wallet address."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_blocklist_identifier\" → \"clerk_create_blocklist_identifier\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":250,"tokensAfter":250},{"name":"clerk.create_email_address","fixed":{"name":"clerk_create_email_address","description":"Create a new email address for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created email address summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_email_addressArguments","required":["user_id","email_address"],"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","default":null,"description":"When true, set this email as the user's primary email address."},"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to retrieve or modify."},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","default":null,"description":"When true, the email address is created as verified."},"email_address":{"type":"string","title":"Email Address","description":"Email address to create for the user."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_email_address\" → \"clerk_create_email_address\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":339,"tokensAfter":339},{"name":"clerk.create_enterprise_connection","fixed":{"name":"clerk_create_enterprise_connection","description":"Create a SAML or OIDC enterprise SSO connection in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new enterprise_connection summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_enterprise_connectionArguments","required":["name","provider","domains"],"properties":{"name":{"type":"string","title":"Name","description":"Display name for the enterprise connection."},"oidc":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Oidc","default":null,"description":"OIDC client configuration when provider uses OAuth."},"saml":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Saml","default":null,"description":"SAML IdP configuration when provider uses SAML."},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","default":null,"description":"Whether the connection is active."},"domains":{"type":"array","items":{"type":"string"},"title":"Domains","description":"Email domains that may use this connection."},"provider":{"type":"string","title":"Provider","description":"Identity provider key (for example saml_custom or oidc_custom)."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":null,"description":"Clerk organization id (org_...) to link to this connection."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"custom_attributes":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"title":"Custom Attributes","default":null,"description":"Custom attribute mappings from the IdP to user metadata."},"sync_user_attributes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync User Attributes","default":null,"description":"Whether to sync user attributes on each sign-in."},"allow_organization_account_linking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Organization Account Linking","default":null,"description":"Whether account linking via organization membership is allowed."},"disable_additional_identifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Additional Identifications","default":null,"description":"Whether to block additional identifications for this connection."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_enterprise_connection\" → \"clerk_create_enterprise_connection\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":729,"tokensAfter":729},{"name":"clerk.create_enterprise_connection_test_run","fixed":{"name":"clerk_create_enterprise_connection_test_run","description":"Start an SSO test flow for an enterprise connection in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a short-lived url that opens the IdP test flow.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"create_clerk_enterprise_connection_test_runArguments","required":["connection_id"],"properties":{"connection_id":{"type":"string","title":"Connection Id","description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_enterprise_connection_test_run\" → \"clerk_create_enterprise_connection_test_run\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":250,"tokensAfter":250},{"name":"clerk.create_invitations","fixed":{"name":"clerk_create_invitations","description":"Invite one or more email addresses to sign up for a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_invitationsArguments","required":["invitations"],"properties":{"invitations":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Invitations","description":"One or more invitation objects. Each item requires email_address (string). Optional fields per item: role (string), redirect_url (string), public_metadata (object)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_invitations\" → \"clerk_create_invitations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":259,"tokensAfter":259},{"name":"clerk.create_jwt_template","fixed":{"name":"clerk_create_jwt_template","description":"Create a new JWT template in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new template summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_jwt_templateArguments","required":["name","claims"],"properties":{"name":{"type":"string","title":"Name","description":"Unique JWT template name."},"claims":{"type":"object","title":"Claims","description":"JWT claims template as a JSON object.","additionalProperties":true},"lifetime":{"anyOf":[{"type":"integer","maximum":315360000,"minimum":30},{"type":"null"}],"title":"Lifetime","default":null,"description":"Token lifetime in seconds (30–315360000)."},"signing_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Key","default":null,"description":"Custom signing private key (required when custom_signing_key is true)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"signing_algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Algorithm","default":null,"description":"Custom signing algorithm (required when custom_signing_key is true)."},"allowed_clock_skew":{"anyOf":[{"type":"integer","maximum":300,"minimum":0},{"type":"null"}],"title":"Allowed Clock Skew","default":null,"description":"Allowed clock skew in seconds (0–300)."},"custom_signing_key":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Custom Signing Key","default":null,"description":"Whether to use a custom signing key and algorithm."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_jwt_template\" → \"clerk_create_jwt_template\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":501,"tokensAfter":501},{"name":"clerk.create_m2m_token","fixed":{"name":"clerk_create_m2m_token","description":"Create an M2M token in a connected Clerk instance.\n\n**Sensitive** — the returned token is a high-privilege secret; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created M2M token.\n\nCost = 15 tokens.","inputSchema":{"type":"object","title":"create_clerk_m2m_tokenArguments","required":["machine_secret_key"],"properties":{"claims":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Claims","default":null,"description":"Optional custom claims embedded in the token."},"token_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Format","default":null,"description":"Token format: \"opaque\" (default) or \"jwt\"."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"machine_secret_key":{"type":"string","title":"Machine Secret Key","description":"Machine secret key (msk_...) used to authenticate the create request."},"seconds_until_expiration":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Seconds Until Expiration","default":null,"description":"Token lifetime in seconds."},"min_remaining_ttl_seconds":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Min Remaining Ttl Seconds","default":null,"description":"For opaque tokens, reuse an existing token with at least this TTL remaining."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_m2m_token\" → \"clerk_create_m2m_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":456,"tokensAfter":456},{"name":"clerk.create_machine","fixed":{"name":"clerk_create_machine","description":"Create a machine in a connected Clerk instance for machine-to-machine authentication.\n\n**Sensitive** — the response may include a machine secret_key on creation; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_machineArguments","required":["name"],"properties":{"name":{"type":"string","title":"Name","description":"Machine display name (1–255 characters)."},"scoped_machines":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Scoped Machines","default":null,"description":"Machine ids (mch_...) this machine may access (max 150)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"default_token_ttl":{"anyOf":[{"type":"integer","maximum":315360000,"minimum":1},{"type":"null"}],"title":"Default Token Ttl","default":null,"description":"Default M2M token lifetime in seconds (minimum 1)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_machine\" → \"clerk_create_machine\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":346,"tokensAfter":346},{"name":"clerk.create_machine_scope","fixed":{"name":"clerk_create_machine_scope","description":"Create a machine scope so one machine can access another.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created machine scope.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"create_clerk_machine_scopeArguments","required":["machine_id","to_machine_id"],"properties":{"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"to_machine_id":{"type":"string","title":"To Machine Id","description":"Target machine id (mch_...) to grant access to."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_machine_scope\" → \"clerk_create_machine_scope\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"clerk.create_oauth_application","fixed":{"name":"clerk_create_oauth_application","description":"Create a new OAuth application in a connected Clerk application (Clerk as IdP).\n\n**Sensitive** — client_secret may be present for confidential clients; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new OAuth application summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_oauth_applicationArguments","required":["name"],"properties":{"name":{"type":"string","title":"Name","description":"Display name for the new OAuth application."},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Public","default":null,"description":"Whether this is a public OAuth client (no client secret; PKCE-capable)."},"scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scopes","default":null,"description":"Space-delimited scopes (e.g. profile email public_metadata)."},"redirect_uris":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Redirect Uris","default":null,"description":"Allowed redirect URIs for the OAuth authorization flow."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"consent_screen_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Consent Screen Enabled","default":null,"description":"Whether to show the OAuth consent screen during authorization."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_oauth_application\" → \"clerk_create_oauth_application\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":452,"tokensAfter":452},{"name":"clerk.create_organization","fixed":{"name":"clerk_create_organization","description":"Create a new organization in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new organization summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_organizationArguments","required":["name","created_by"],"properties":{"name":{"type":"string","title":"Name","description":"Organization display name."},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug","default":null,"description":"Optional URL-friendly slug for the organization."},"created_by":{"type":"string","title":"Created By","description":"Clerk user id (user_...) of the user creating the organization."},"public_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Public Metadata","default":null,"description":"Optional public metadata as a JSON object."},"private_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Private Metadata","default":null,"description":"Optional private metadata as a JSON object."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"max_allowed_memberships":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Allowed Memberships","default":null,"description":"Optional maximum number of memberships allowed."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_organization\" → \"clerk_create_organization\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":446,"tokensAfter":446},{"name":"clerk.create_organization_domain","fixed":{"name":"clerk_create_organization_domain","description":"Add a domain to a Clerk organization.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created domain summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_organization_domainArguments","required":["organization_id","name"],"properties":{"name":{"type":"string","title":"Name","description":"Domain name to add (for example example.com)."},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","default":null,"description":"Whether the domain is verified. Defaults to true when omitted."},"enrollment_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enrollment Mode","default":null,"description":"Filter or set enrollment mode: manual_invitation, automatic_invitation, or automatic_suggestion."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_organization_domain\" → \"clerk_create_organization_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":356,"tokensAfter":356},{"name":"clerk.create_organization_invitations","fixed":{"name":"clerk_create_organization_invitations","description":"Invite one or more email addresses to join a Clerk organization with specific roles.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the list of created invitation summaries.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_organization_invitationsArguments","required":["organization_id","invitations"],"properties":{"invitations":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Invitations","description":"One or more invitation objects. Each item requires email_address (string) and role (string, e.g. org:admin, org:member)."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_organization_invitations\" → \"clerk_create_organization_invitations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":309,"tokensAfter":309},{"name":"clerk.create_organization_membership","fixed":{"name":"clerk_create_organization_membership","description":"Add a user to a Clerk organization with a specified role.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created membership.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_organization_membershipArguments","required":["organization_id","user_id","role"],"properties":{"role":{"type":"string","title":"Role","description":"Role to assign to the user in the organization (e.g. org:member, org:admin)."},"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) of the user to add."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to add the member to."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_organization_membership\" → \"clerk_create_organization_membership\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":298,"tokensAfter":298},{"name":"clerk.create_organization_permission","fixed":{"name":"clerk_create_organization_permission","description":"Create a new organization permission in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new permission summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_organization_permissionArguments","required":["name","key"],"properties":{"key":{"type":"string","title":"Key","description":"Unique permission key."},"name":{"type":"string","title":"Name","description":"Permission display name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":null,"description":"Permission description."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_organization_permission\" → \"clerk_create_organization_permission\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":275,"tokensAfter":275},{"name":"clerk.create_organization_role","fixed":{"name":"clerk_create_organization_role","description":"Create a new organization role in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new role summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_organization_roleArguments","required":["name","key"],"properties":{"key":{"type":"string","title":"Key","description":"Unique role key."},"name":{"type":"string","title":"Name","description":"Role display name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":null,"description":"Role description."},"permissions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Permissions","default":null,"description":"Permission keys to assign to the new role."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"include_in_initial_role_set":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include In Initial Role Set","default":null,"description":"Whether to include this role in the initial role set."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_organization_role\" → \"clerk_create_organization_role\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":369,"tokensAfter":369},{"name":"clerk.create_phone_number","fixed":{"name":"clerk_create_phone_number","description":"Create a phone number for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created phone number summary.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_phone_numberArguments","required":["user_id","phone_number"],"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","default":null,"description":"Whether this should be the user's primary phone number."},"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to retrieve or modify."},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","default":null,"description":"Whether the phone number should be marked verified. Defaults to false."},"phone_number":{"type":"string","title":"Phone Number","description":"Phone number in E.164 format (e.g. +15551234567)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"reserved_for_second_factor":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reserved For Second Factor","default":null,"description":"Whether to reserve this number for multi-factor authentication."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_phone_number\" → \"clerk_create_phone_number\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":400,"tokensAfter":400},{"name":"clerk.create_redirect_url","fixed":{"name":"clerk_create_redirect_url","description":"Add an allowed redirect URL to a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created redirect URL.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_redirect_urlArguments","required":["url"],"properties":{"url":{"type":"string","title":"Url","description":"Redirect URL to allow for sign-in and sign-up flows."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_redirect_url\" → \"clerk_create_redirect_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":211,"tokensAfter":211},{"name":"clerk.create_session","fixed":{"name":"clerk_create_session","description":"Create a new session for a Clerk user in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created session object with id, user_id, status, last_active_at, expire_at, client_id, created_at, and updated_at.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_sessionArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to create a session for."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_session\" → \"clerk_create_session\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"clerk.create_session_token","fixed":{"name":"clerk_create_session_token","description":"Create a session token (JWT) for an active session in a connected Clerk application. Optionally pass template_name to create the token from a named JWT template. **Sensitive** — the returned JWT grants access on behalf of the user; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a jwt field containing the signed token.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_session_tokenArguments","required":["session_id"],"properties":{"session_id":{"type":"string","title":"Session Id","description":"Clerk session id (sess_...) to retrieve or modify."},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name","default":null,"description":"Optional JWT template name. When set, the session token is created from that template."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_session_token\" → \"clerk_create_session_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":332,"tokensAfter":332},{"name":"clerk.create_sign_in_token","fixed":{"name":"clerk_create_sign_in_token","description":"Create a sign-in token for a user in a connected Clerk application. The token can be used once to sign the user in without credentials (magic-link style).\n\n**Sensitive** — the returned token is a high-privilege secret that grants sign-in access; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 15 tokens.","inputSchema":{"type":"object","title":"create_clerk_sign_in_tokenArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"expires_in_seconds":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Expires In Seconds","default":null,"description":"Token lifetime in seconds (minimum 1). Defaults to 2592000 (30 days)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_sign_in_token\" → \"clerk_create_sign_in_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":321,"tokensAfter":321},{"name":"clerk.create_svix_app","fixed":{"name":"clerk_create_svix_app","description":"Create a Svix app and associate it with a connected Clerk application for webhook delivery.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a temporary svix_url from Clerk.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_svix_appArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_svix_app\" → \"clerk_create_svix_app\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"clerk.create_svix_dashboard_url","fixed":{"name":"clerk_create_svix_dashboard_url","description":"Generate a temporary URL for accessing the Svix management dashboard for a connected Clerk application.\n\n**Sensitive** — the returned URL grants access to webhook configuration; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns svix_url.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"create_clerk_svix_dashboard_urlArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_svix_dashboard_url\" → \"clerk_create_svix_dashboard_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"clerk.create_user","fixed":{"name":"clerk_create_user","description":"Create a user in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_userArguments","required":["email_address"],"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password","default":null,"description":"Optional password. Omit to create a user without a password."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","default":null,"description":"Optional last name."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","default":null,"description":"Optional first name."},"email_address":{"type":"string","title":"Email Address","description":"Primary email address for the new Clerk user."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_user\" → \"clerk_create_user\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":319,"tokensAfter":319},{"name":"clerk.create_waitlist_entries","fixed":{"name":"clerk_create_waitlist_entries","description":"Add one or more email addresses to the waitlist in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the created or existing waitlist entries.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"create_clerk_waitlist_entriesArguments","required":["waitlist_entries"],"properties":{"waitlist_entries":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Waitlist Entries","description":"One or more waitlist entry objects. Each item requires email_address (string). Optional fields per item: notify (boolean; whether to notify the user their email was added; defaults to true)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.create_waitlist_entries\" → \"clerk_create_waitlist_entries\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":288,"tokensAfter":288},{"name":"clerk.delete_allowlist_identifier","fixed":{"name":"clerk_delete_allowlist_identifier","description":"Remove an allowlist identifier by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a deleted confirmation.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_allowlist_identifierArguments","required":["identifier_id"],"properties":{"identifier_id":{"type":"string","title":"Identifier Id","description":"Allowlist or blocklist identifier id (alid_... or blid_...) to delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_allowlist_identifier\" → \"clerk_delete_allowlist_identifier\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"clerk.delete_api_key","fixed":{"name":"clerk_delete_api_key","description":"Permanently delete an API key from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted API key id and a deleted flag.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_api_keyArguments","required":["api_key_id"],"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_api_key\" → \"clerk_delete_api_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":224,"tokensAfter":224},{"name":"clerk.delete_blocklist_identifier","fixed":{"name":"clerk_delete_blocklist_identifier","description":"Remove a blocklist identifier by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a deleted confirmation.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_blocklist_identifierArguments","required":["identifier_id"],"properties":{"identifier_id":{"type":"string","title":"Identifier Id","description":"Allowlist or blocklist identifier id (alid_... or blid_...) to delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_blocklist_identifier\" → \"clerk_delete_blocklist_identifier\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"clerk.delete_domain","fixed":{"name":"clerk_delete_domain","description":"Remove a custom domain from a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted domain id and a deleted flag.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_domainArguments","required":["domain_id"],"properties":{"domain_id":{"type":"string","title":"Domain Id","description":"Clerk organization domain id (dmn_...) to update, delete, or verify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_domain\" → \"clerk_delete_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"clerk.delete_email_address","fixed":{"name":"clerk_delete_email_address","description":"Delete a Clerk email address by its id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted email address summary when Clerk provides it.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_email_addressArguments","required":["email_address_id"],"properties":{"email_address_id":{"type":"string","title":"Email Address Id","description":"Clerk email address id (idn_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_email_address\" → \"clerk_delete_email_address\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":227,"tokensAfter":227},{"name":"clerk.delete_enterprise_connection","fixed":{"name":"clerk_delete_enterprise_connection","description":"Delete an enterprise SSO connection from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted enterprise connection object from Clerk.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_enterprise_connectionArguments","required":["connection_id"],"properties":{"connection_id":{"type":"string","title":"Connection Id","description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_enterprise_connection\" → \"clerk_delete_enterprise_connection\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":243,"tokensAfter":243},{"name":"clerk.delete_jwt_template","fixed":{"name":"clerk_delete_jwt_template","description":"Permanently delete a JWT template from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nThis action is irreversible. Returns the deleted template id and a deleted flag.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_jwt_templateArguments","required":["template_id"],"properties":{"template_id":{"type":"string","title":"Template Id","description":"Clerk JWT template id (jtmp_...) to retrieve, update, or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_jwt_template\" → \"clerk_delete_jwt_template\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237},{"name":"clerk.delete_machine","fixed":{"name":"clerk_delete_machine","description":"Delete a machine by id from a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a deletion confirmation.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_machineArguments","required":["machine_id"],"properties":{"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_machine\" → \"clerk_delete_machine\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"clerk.delete_machine_scope","fixed":{"name":"clerk_delete_machine_scope","description":"Delete a machine scope, removing access from one machine to another.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a deletion confirmation.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_machine_scopeArguments","required":["machine_id","scope_id"],"properties":{"scope_id":{"type":"string","title":"Scope Id","description":"Target machine id (mch_...) for the scope to remove."},"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_machine_scope\" → \"clerk_delete_machine_scope\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"clerk.delete_oauth_application","fixed":{"name":"clerk_delete_oauth_application","description":"Permanently delete an OAuth application from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted OAuth application object from Clerk.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_oauth_applicationArguments","required":["oauth_application_id"],"properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"oauth_application_id":{"type":"string","title":"Oauth Application Id","description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_oauth_application\" → \"clerk_delete_oauth_application\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":243,"tokensAfter":243},{"name":"clerk.delete_organization","fixed":{"name":"clerk_delete_organization","description":"Permanently delete an organization from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nThis action is irreversible. Returns the deleted organization id and a deleted flag.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_organizationArguments","required":["organization_id"],"properties":{"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_organization\" → \"clerk_delete_organization\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237},{"name":"clerk.delete_organization_domain","fixed":{"name":"clerk_delete_organization_domain","description":"Remove an organization domain from a Clerk organization.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted domain id and a deleted flag.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_organization_domainArguments","required":["domain_id"],"properties":{"domain_id":{"type":"string","title":"Domain Id","description":"Clerk organization domain id (dmn_...) to update, delete, or verify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_organization_domain\" → \"clerk_delete_organization_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":228,"tokensAfter":228},{"name":"clerk.delete_organization_membership","fixed":{"name":"clerk_delete_organization_membership","description":"Remove a user from a Clerk organization.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nThis action cannot be undone.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_organization_membershipArguments","required":["organization_id","user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) of the member to remove."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to remove the member from."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_organization_membership\" → \"clerk_delete_organization_membership\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":256,"tokensAfter":256},{"name":"clerk.delete_organization_permission","fixed":{"name":"clerk_delete_organization_permission","description":"Delete an organization permission from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the Clerk deletion payload.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_organization_permissionArguments","required":["permission_id"],"properties":{"permission_id":{"type":"string","title":"Permission Id","description":"Clerk organization permission id to update or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_organization_permission\" → \"clerk_delete_organization_permission\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"clerk.delete_organization_role","fixed":{"name":"clerk_delete_organization_role","description":"Delete an organization role from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the Clerk deletion payload.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_organization_roleArguments","required":["role_id"],"properties":{"role_id":{"type":"string","title":"Role Id","description":"Clerk organization role id to retrieve, update, or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_organization_role\" → \"clerk_delete_organization_role\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"clerk.delete_phone_number","fixed":{"name":"clerk_delete_phone_number","description":"Delete a Clerk phone number by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nThis action cannot be undone. Returns a deleted confirmation.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_phone_numberArguments","required":["phone_number_id"],"properties":{"phone_number_id":{"type":"string","title":"Phone Number Id","description":"Clerk phone number id (idn_... or phn_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_phone_number\" → \"clerk_delete_phone_number\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"clerk.delete_redirect_url","fixed":{"name":"clerk_delete_redirect_url","description":"Remove an allowed redirect URL from a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted redirect URL id and a deleted flag.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_redirect_urlArguments","required":["redirect_url_id"],"properties":{"redirect_url_id":{"type":"string","title":"Redirect Url Id","description":"Clerk redirect URL id to retrieve or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_redirect_url\" → \"clerk_delete_redirect_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":226,"tokensAfter":226},{"name":"clerk.delete_svix_app","fixed":{"name":"clerk_delete_svix_app","description":"Delete the Svix app associated with a connected Clerk application and disassociate webhook delivery.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns a deleted confirmation.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_svix_appArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_svix_app\" → \"clerk_delete_svix_app\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"clerk.delete_user","fixed":{"name":"clerk_delete_user","description":"Permanently delete a Clerk user by user id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nThis action cannot be undone.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_userArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_user\" → \"clerk_delete_user\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":200,"tokensAfter":200},{"name":"clerk.delete_user_backup_codes","fixed":{"name":"clerk_delete_user_backup_codes","description":"Delete all MFA backup codes for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user object.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_user_backup_codesArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_user_backup_codes\" → \"clerk_delete_user_backup_codes\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":209,"tokensAfter":209},{"name":"clerk.delete_user_external_account","fixed":{"name":"clerk_delete_user_external_account","description":"Delete (unlink) an external OAuth or social account from a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the deleted external account.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_user_external_accountArguments","required":["user_id","external_account_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"external_account_id":{"type":"string","title":"External Account Id","description":"External account id (for example ea_...) to unlink."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_user_external_account\" → \"clerk_delete_user_external_account\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":264,"tokensAfter":264},{"name":"clerk.delete_user_passkey","fixed":{"name":"clerk_delete_user_passkey","description":"Delete a passkey for a Clerk user by passkey id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user object.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_user_passkeyArguments","required":["user_id","passkey_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to operate on."},"passkey_id":{"type":"string","title":"Passkey Id","description":"Passkey identification id to delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_user_passkey\" → \"clerk_delete_user_passkey\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"clerk.delete_user_totp","fixed":{"name":"clerk_delete_user_totp","description":"Delete all TOTP authenticators for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user object.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_user_totpArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_user_totp\" → \"clerk_delete_user_totp\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"clerk.delete_user_web3_wallet","fixed":{"name":"clerk_delete_user_web3_wallet","description":"Delete a Web3 wallet for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user object.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"delete_clerk_user_web3_walletArguments","required":["user_id","web3_wallet_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to operate on."},"web3_wallet_id":{"type":"string","title":"Web3 Wallet Id","description":"Web3 wallet identification id to delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_user_web3_wallet\" → \"clerk_delete_user_web3_wallet\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":244,"tokensAfter":244},{"name":"clerk.delete_waitlist_entry","fixed":{"name":"clerk_delete_waitlist_entry","description":"Delete a pending waitlist entry from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the Clerk deleted-object payload.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_clerk_waitlist_entryArguments","required":["waitlist_entry_id"],"properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"waitlist_entry_id":{"type":"string","title":"Waitlist Entry Id","description":"Clerk waitlist entry id (wle_...) to operate on."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.delete_waitlist_entry\" → \"clerk_delete_waitlist_entry\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":227,"tokensAfter":227},{"name":"clerk.disable_user_mfa","fixed":{"name":"clerk_disable_user_mfa","description":"Disable all MFA methods (SMS, TOTP, and similar) for a Clerk user at once.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user object.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"disable_clerk_user_mfaArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.disable_user_mfa\" → \"clerk_disable_user_mfa\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":213,"tokensAfter":213},{"name":"clerk.get_api_key","fixed":{"name":"clerk_get_api_key","description":"Retrieve API key metadata by id from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the API key summary without the secret.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_api_keyArguments","required":["api_key_id"],"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_api_key\" → \"clerk_get_api_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"clerk.get_api_key_secret","fixed":{"name":"clerk_get_api_key_secret","description":"Reveal the secret for an API key in a connected Clerk application.\n\n**Sensitive** — the returned secret is a high-privilege credential; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns secret.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_clerk_api_key_secretArguments","required":["api_key_id"],"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_api_key_secret\" → \"clerk_get_api_key_secret\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":243,"tokensAfter":243},{"name":"clerk.get_connected_accounts","fixed":{"name":"clerk_get_connected_accounts","description":"List Clerk applications connected to the authenticated Vee3 account.\n\nReturns clerk_instance_id, display name, environment type, and whether each connection is the default. Use clerk_instance_id on future Clerk calls, or omit it to use the default account.\n\nIf accounts is empty, the user must connect a Clerk application at https://vee3.io/dashboard/connections before Clerk capabilities work. Agents cannot complete the connection flow; ask the user to connect, then call this tool again.\n\nCost = 0","inputSchema":{"type":"object","title":"get_clerk_connected_accountsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_connected_accounts\" → \"clerk_get_connected_accounts\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":183,"tokensAfter":183},{"name":"clerk.get_development_api_keys","fixed":{"name":"clerk_get_development_api_keys","description":"Return the Publishable Key and Secret Key for a connected development Clerk instance so the agent can configure a local app env (NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY).\n\n**Sensitive** — the returned Secret Key is a high-privilege credential; do not log or expose it.\n\nDevelopment only. Production connections are refused.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nIf the connection was c","inputSchema":{"type":"object","title":"get_clerk_development_api_keysArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_development_api_keys\" → \"clerk_get_development_api_keys\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":249,"tokensAfter":249},{"name":"clerk.get_email_address","fixed":{"name":"clerk_get_email_address","description":"Retrieve a Clerk email address by its id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the email address summary.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_email_addressArguments","required":["email_address_id"],"properties":{"email_address_id":{"type":"string","title":"Email Address Id","description":"Clerk email address id (idn_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_email_address\" → \"clerk_get_email_address\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"clerk.get_enterprise_connection","fixed":{"name":"clerk_get_enterprise_connection","description":"Retrieve a single enterprise SSO connection from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the enterprise_connection summary including SAML or OIDC configuration when present.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_enterprise_connectionArguments","required":["connection_id"],"properties":{"connection_id":{"type":"string","title":"Connection Id","description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_enterprise_connection\" → \"clerk_get_enterprise_connection\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":252,"tokensAfter":252},{"name":"clerk.get_instance","fixed":{"name":"clerk_get_instance","description":"Retrieve the connected Clerk application instance id and environment type.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the Clerk instance id (ins_...) and environment_type (development or production). App display names are not available from the Backend API.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_clerk_instanceArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_instance\" → \"clerk_get_instance\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":208,"tokensAfter":208},{"name":"clerk.get_instance_communication_settings","fixed":{"name":"clerk_get_instance_communication_settings","description":"Retrieve SMS communication settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns communication settings.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_instance_communication_settingsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_instance_communication_settings\" → \"clerk_get_instance_communication_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":186,"tokensAfter":186},{"name":"clerk.get_instance_oauth_settings","fixed":{"name":"clerk_get_instance_oauth_settings","description":"Retrieve OAuth settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns OAuth settings.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_instance_oauth_settingsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_instance_oauth_settings\" → \"clerk_get_instance_oauth_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":176},{"name":"clerk.get_instance_organization_settings","fixed":{"name":"clerk_get_instance_organization_settings","description":"Retrieve organization feature settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns organization feature settings.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_instance_organization_settingsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_instance_organization_settings\" → \"clerk_get_instance_organization_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":189,"tokensAfter":189},{"name":"clerk.get_instance_settings","fixed":{"name":"clerk_get_instance_settings","description":"Retrieve core settings for a connected Clerk application instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns core instance settings.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_instance_settingsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_instance_settings\" → \"clerk_get_instance_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":178,"tokensAfter":178},{"name":"clerk.get_jwks","fixed":{"name":"clerk_get_jwks","description":"Retrieve the JSON Web Key Set (JWKS) for verifying Clerk session tokens.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns public signing keys for verifying Clerk JWTs.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_clerk_jwksArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_jwks\" → \"clerk_get_jwks\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":179,"tokensAfter":179},{"name":"clerk.get_jwt_template","fixed":{"name":"clerk_get_jwt_template","description":"Retrieve a single JWT template from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns id, name, claims, lifetime, allowed_clock_skew, created_at, updated_at, signing_algorithm, and custom_signing_key.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_jwt_templateArguments","required":["template_id"],"properties":{"template_id":{"type":"string","title":"Template Id","description":"Clerk JWT template id (jtmp_...) to retrieve, update, or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_jwt_template\" → \"clerk_get_jwt_template\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":246,"tokensAfter":246},{"name":"clerk.get_machine","fixed":{"name":"clerk_get_machine","description":"Retrieve a machine by id from a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns machine metadata including scoped_machines.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_machineArguments","required":["machine_id"],"properties":{"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_machine\" → \"clerk_get_machine\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"clerk.get_machine_secret_key","fixed":{"name":"clerk_get_machine_secret_key","description":"Retrieve the secret key for a machine in a connected Clerk instance.\n\n**Sensitive** — the returned secret grants machine authentication; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the machine secret key.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_clerk_machine_secret_keyArguments","required":["machine_id"],"properties":{"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_machine_secret_key\" → \"clerk_get_machine_secret_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":246,"tokensAfter":246},{"name":"clerk.get_oauth_application","fixed":{"name":"clerk_get_oauth_application","description":"Retrieve a single OAuth application by id from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the OAuth application summary.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_oauth_applicationArguments","required":["oauth_application_id"],"properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"oauth_application_id":{"type":"string","title":"Oauth Application Id","description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_oauth_application\" → \"clerk_get_oauth_application\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237},{"name":"clerk.get_organization","fixed":{"name":"clerk_get_organization","description":"Retrieve a single organization from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns organization id, name, slug, members_count, and created_at.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_organizationArguments","required":["organization_id"],"properties":{"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_organization\" → \"clerk_get_organization\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"clerk.get_organization_invitation","fixed":{"name":"clerk_get_organization_invitation","description":"Retrieve a single Clerk organization invitation by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the invitation summary including status.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_organization_invitationArguments","required":["organization_id","invitation_id"],"properties":{"invitation_id":{"type":"string","title":"Invitation Id","description":"Clerk organization invitation id (orginv_...)."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_organization_invitation\" → \"clerk_get_organization_invitation\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":264,"tokensAfter":264},{"name":"clerk.get_organization_role","fixed":{"name":"clerk_get_organization_role","description":"Retrieve an organization role by id from a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the role summary including assigned permissions.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_organization_roleArguments","required":["role_id"],"properties":{"role_id":{"type":"string","title":"Role Id","description":"Clerk organization role id to retrieve, update, or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_organization_role\" → \"clerk_get_organization_role\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":227,"tokensAfter":227},{"name":"clerk.get_phone_number","fixed":{"name":"clerk_get_phone_number","description":"Retrieve a Clerk phone number by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the phone number summary.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_phone_numberArguments","required":["phone_number_id"],"properties":{"phone_number_id":{"type":"string","title":"Phone Number Id","description":"Clerk phone number id (idn_... or phn_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_phone_number\" → \"clerk_get_phone_number\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"clerk.get_redirect_url","fixed":{"name":"clerk_get_redirect_url","description":"Retrieve an allowed redirect URL by id from a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the redirect URL.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_redirect_urlArguments","required":["redirect_url_id"],"properties":{"redirect_url_id":{"type":"string","title":"Redirect Url Id","description":"Clerk redirect URL id to retrieve or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_redirect_url\" → \"clerk_get_redirect_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":218,"tokensAfter":218},{"name":"clerk.get_session","fixed":{"name":"clerk_get_session","description":"Retrieve a single session from a connected Clerk application by its session id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns session id, user_id, status, last_active_at, expire_at, client_id, created_at, and updated_at.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_sessionArguments","required":["session_id"],"properties":{"session_id":{"type":"string","title":"Session Id","description":"Clerk session id (sess_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_session\" → \"clerk_get_session\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":236,"tokensAfter":236},{"name":"clerk.get_sign_up","fixed":{"name":"clerk_get_sign_up","description":"Retrieve an in-progress sign-up from a connected Clerk application by sign-up id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns status, contact fields, missing and unverified fields, and completion timestamps.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_sign_upArguments","required":["sign_up_id"],"properties":{"sign_up_id":{"type":"string","title":"Sign Up Id","description":"Clerk sign-up id (su_...) to retrieve."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_sign_up\" → \"clerk_get_sign_up\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"clerk.get_user","fixed":{"name":"clerk_get_user","description":"Retrieve one Clerk user by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns id, name, primary email, and created_at.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_clerk_userArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to retrieve."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.get_user\" → \"clerk_get_user\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":200,"tokensAfter":200},{"name":"clerk.invite_waitlist_entry","fixed":{"name":"clerk_invite_waitlist_entry","description":"Send an invite to the email address on a waitlist entry.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"invite_clerk_waitlist_entryArguments","required":["waitlist_entry_id"],"properties":{"ignore_existing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ignore Existing","default":null,"description":"When true, create an invitation even if one already exists for this email."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"waitlist_entry_id":{"type":"string","title":"Waitlist Entry Id","description":"Clerk waitlist entry id (wle_...) to operate on."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.invite_waitlist_entry\" → \"clerk_invite_waitlist_entry\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":266,"tokensAfter":266},{"name":"clerk.list_allowlist_identifiers","fixed":{"name":"clerk_list_allowlist_identifiers","description":"List allowlisted identifiers in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns allowlist identifiers and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_allowlist_identifiersArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"description":"Maximum number of identifiers to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"description":"Number of identifiers to skip before returning results."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_allowlist_identifiers\" → \"clerk_list_allowlist_identifiers\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":253,"tokensAfter":253},{"name":"clerk.list_api_keys","fixed":{"name":"clerk_list_api_keys","description":"List API keys in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns api_keys and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_api_keysArguments","required":["subject"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of API keys to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Search query to filter API keys by name."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of API keys to skip before returning results."},"subject":{"type":"string","title":"Subject","description":"Subject to list API keys for (user_... or org_...)."},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Type","default":null,"description":"Filter by API key type (typically \"api_key\")."},"include_invalid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Invalid","default":null,"description":"When true, include revoked or expired API keys."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_api_keys\" → \"clerk_list_api_keys\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":432,"tokensAfter":432},{"name":"clerk.list_blocklist_identifiers","fixed":{"name":"clerk_list_blocklist_identifiers","description":"List blocklisted identifiers in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns blocklist identifiers and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_blocklist_identifiersArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"description":"Maximum number of identifiers to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"description":"Number of identifiers to skip before returning results."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_blocklist_identifiers\" → \"clerk_list_blocklist_identifiers\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":253,"tokensAfter":253},{"name":"clerk.list_domains","fixed":{"name":"clerk_list_domains","description":"List custom domains configured for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns custom domain summaries and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_domainsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_domains\" → \"clerk_list_domains\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":177,"tokensAfter":177},{"name":"clerk.list_enterprise_connection_test_runs","fixed":{"name":"clerk_list_enterprise_connection_test_runs","description":"List SAML or OIDC debug test runs for an enterprise SSO connection.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns test_runs summaries plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_enterprise_connection_test_runsArguments","required":["connection_id"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of results to return (1–500)."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of results to skip before returning."},"status":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Status","default":null,"description":"Filter by test run status: \"pending\", \"success\", or \"failed\"."},"connection_id":{"type":"string","title":"Connection Id","description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_enterprise_connection_test_runs\" → \"clerk_list_enterprise_connection_test_runs\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":389,"tokensAfter":389},{"name":"clerk.list_enterprise_connections","fixed":{"name":"clerk_list_enterprise_connections","description":"List enterprise SSO (SAML/OIDC) connections in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns enterprise_connections summaries plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_enterprise_connectionsArguments","properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of results to return (1–500)."},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","default":null,"description":"Filter by active status. Omit to return all connections."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of results to skip before returning."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":null,"description":"Filter connections linked to this Clerk organization id (org_...)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_enterprise_connections\" → \"clerk_list_enterprise_connections\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":382,"tokensAfter":382},{"name":"clerk.list_invitations","fixed":{"name":"clerk_list_invitations","description":"List application invitations in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns invitation id, email_address, status, created_at, and revoked for each invitation, plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_invitationsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"description":"Maximum number of invitations to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"description":"Number of invitations to skip before returning results."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","default":null,"description":"Optional status filter: \"pending\", \"accepted\", \"revoked\", or \"expired\"."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_invitations\" → \"clerk_list_invitations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":315,"tokensAfter":315},{"name":"clerk.list_jwt_templates","fixed":{"name":"clerk_list_jwt_templates","description":"List JWT templates in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns each template's id, name, claims, lifetime, allowed_clock_skew, created_at, updated_at, signing_algorithm, and custom_signing_key, plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_jwt_templatesArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_jwt_templates\" → \"clerk_list_jwt_templates\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"clerk.list_m2m_tokens","fixed":{"name":"clerk_list_m2m_tokens","description":"List M2M tokens for a machine in a connected Clerk instance.\n\n**Sensitive** — returns token metadata for active machine credentials.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns M2M token summaries plus total_count. JWT-format tokens are not listed.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_m2m_tokensArguments","required":["subject"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of results to return (1–500)."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of results to skip before returning."},"expired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expired","default":null,"description":"Include expired tokens (default false)."},"revoked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Revoked","default":null,"description":"Include revoked tokens (default false)."},"subject":{"type":"string","title":"Subject","description":"Machine id (mch_...) whose tokens to list."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_m2m_tokens\" → \"clerk_list_m2m_tokens\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":416,"tokensAfter":416},{"name":"clerk.list_machines","fixed":{"name":"clerk_list_machines","description":"List machines in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns machine summaries plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_machinesArguments","properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of results to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Filter by machine id (exact) or name (partial match)."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of results to skip before returning."},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By","default":null,"description":"Sort by name or created_at; prefix with - for descending (default -created_at)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_machines\" → \"clerk_list_machines\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":359,"tokensAfter":359},{"name":"clerk.list_oauth_applications","fixed":{"name":"clerk_list_oauth_applications","description":"List OAuth applications registered in a connected Clerk application when Clerk acts as an OAuth identity provider.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns each application's id, name, client_id, redirect_uris, scopes, public flag, and related endpoint URLs, plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_oauth_applicationsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_oauth_applications\" → \"clerk_list_oauth_applications\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"clerk.list_organization_domains","fixed":{"name":"clerk_list_organization_domains","description":"List organization domains across a Clerk instance. Optionally filter to one organization via organization_id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns domain summaries and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_organization_domainsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of results to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Search domains by name or organization id. Values starting with org_ match organization id exactly; otherwise performs a case-insensitive partial match on the domain name."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of results to skip before returning."},"verified":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified","default":null,"description":"Filter by verification status: \"true\" or \"false\"."},"enrollment_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enrollment Mode","default":null,"description":"Filter or set enrollment mode: manual_invitation, automatic_invitation, or automatic_suggestion."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":null,"description":"Filter domains to a specific Clerk organization id (org_...)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_organization_domains\" → \"clerk_list_organization_domains\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":503,"tokensAfter":503},{"name":"clerk.list_organization_invitations","fixed":{"name":"clerk_list_organization_invitations","description":"List organization invitations across a Clerk instance. Optionally filter to one organization via organization_id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns invitation summaries and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_organization_invitationsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of results to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of results to skip before returning."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","default":null,"description":"Filter by invitation status: pending, accepted, revoked, or expired."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":null,"description":"Filter invitations to a specific Clerk organization id (org_...)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_organization_invitations\" → \"clerk_list_organization_invitations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":375,"tokensAfter":375},{"name":"clerk.list_organization_memberships","fixed":{"name":"clerk_list_organization_memberships","description":"List members of a Clerk organization.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns membership id, user_id, role, and created_at for each member, plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_organization_membershipsArguments","required":["organization_id"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of organization memberships to return (1–500)."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of organization memberships to skip before returning results."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) whose members to list."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_organization_memberships\" → \"clerk_list_organization_memberships\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":340,"tokensAfter":340},{"name":"clerk.list_organization_permissions","fixed":{"name":"clerk_list_organization_permissions","description":"List organization permissions in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns permission summaries and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_organization_permissionsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of results to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Search by name or key."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of results to skip before returning."},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By","default":null,"description":"Sort order with optional + or - prefix (for example -created_at or name). Defaults to -created_at."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_organization_permissions\" → \"clerk_list_organization_permissions\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":353,"tokensAfter":353},{"name":"clerk.list_organization_roles","fixed":{"name":"clerk_list_organization_roles","description":"List organization roles in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns role summaries with nested permissions and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_organization_rolesArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of results to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Search by name or key."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of results to skip before returning."},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By","default":null,"description":"Sort order with optional + or - prefix (for example -created_at or name). Defaults to -created_at."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_organization_roles\" → \"clerk_list_organization_roles\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":353,"tokensAfter":353},{"name":"clerk.list_organizations","fixed":{"name":"clerk_list_organizations","description":"List organizations in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns organization id, name, slug, members_count, and created_at for each organization, plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_organizationsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of organizations to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Optional search string to filter organizations by name or slug."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of organizations to skip before returning results."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_organizations\" → \"clerk_list_organizations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":321,"tokensAfter":321},{"name":"clerk.list_redirect_urls","fixed":{"name":"clerk_list_redirect_urls","description":"List allowed redirect URLs for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns redirect URL summaries and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_redirect_urlsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of redirect URLs to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of redirect URLs to skip before returning results."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_redirect_urls\" → \"clerk_list_redirect_urls\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":260,"tokensAfter":260},{"name":"clerk.list_sessions","fixed":{"name":"clerk_list_sessions","description":"List sessions in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns session id, user_id, status, last_active_at, and expire_at for each session.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_sessionsArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of sessions to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of sessions to skip before returning results."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","default":null,"description":"Filter sessions by status. Accepted values: abandoned, active, ended, expired, removed, replaced, revoked."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Filter sessions to those belonging to this Clerk user id (user_...). Clerk requires user_id or client_id when listing sessions; pass user_id here."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","default":null,"description":"Filter sessions to those belonging to this Clerk client id (client_...)."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_sessions\" → \"clerk_list_sessions\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":440,"tokensAfter":440},{"name":"clerk.list_user_organization_memberships","fixed":{"name":"clerk_list_user_organization_memberships","description":"List all organizations a specific Clerk user belongs to.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns membership id, organization_id, role, and timestamps.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_user_organization_membershipsArguments","required":["user_id"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of organization memberships to return (1–500)."},"offset":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Offset","default":null,"description":"Number of organization memberships to skip before returning results."},"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) whose memberships to list."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_user_organization_memberships\" → \"clerk_list_user_organization_memberships\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":333,"tokensAfter":333},{"name":"clerk.list_users","fixed":{"name":"clerk_list_users","description":"List users in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns user id, name, primary email, and created_at for each user, plus total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_usersArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"maximum":500,"minimum":1,"description":"Maximum number of users to return (1–500)."},"offset":{"type":"integer","title":"Offset","default":0,"minimum":0,"description":"Number of users to skip before returning results."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_users\" → \"clerk_list_users\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":258,"tokensAfter":258},{"name":"clerk.list_waitlist_entries","fixed":{"name":"clerk_list_waitlist_entries","description":"List waitlist entries in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns waitlist entry summaries and total_count.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_clerk_waitlist_entriesArguments","properties":{"limit":{"type":"integer","title":"Limit","default":10,"description":"Maximum number of waitlist entries to return (1–500)."},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","default":null,"description":"Filter by email address or waitlist entry id."},"offset":{"type":"integer","title":"Offset","default":0,"description":"Number of waitlist entries to skip before returning results."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","default":null,"description":"Optional status filter: \"pending\", \"invited\", \"rejected\", or \"completed\"."},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By","default":null,"description":"Sort order: created_at, email_address, or invited_at with optional + or - prefix. Defaults to -created_at."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.list_waitlist_entries\" → \"clerk_list_waitlist_entries\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":404,"tokensAfter":404},{"name":"clerk.reject_waitlist_entry","fixed":{"name":"clerk_reject_waitlist_entry","description":"Reject a waitlist entry in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated waitlist entry.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"reject_clerk_waitlist_entryArguments","required":["waitlist_entry_id"],"properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"waitlist_entry_id":{"type":"string","title":"Waitlist Entry Id","description":"Clerk waitlist entry id (wle_...) to operate on."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.reject_waitlist_entry\" → \"clerk_reject_waitlist_entry\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":223,"tokensAfter":223},{"name":"clerk.replace_user_metadata","fixed":{"name":"clerk_replace_user_metadata","description":"Replace the entire contents of one metadata namespace for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nThe metadata body fully replaces the chosen namespace. Returns the updated user summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"replace_clerk_user_metadataArguments","required":["user_id","metadata_type","metadata"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) whose metadata to replace."},"metadata":{"type":"object","title":"Metadata","description":"New metadata dict that fully replaces the chosen namespace. Pass an empty object to clear all keys.","additionalProperties":true},"metadata_type":{"type":"string","title":"Metadata Type","description":"Metadata namespace to replace."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.replace_user_metadata\" → \"clerk_replace_user_metadata\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":324,"tokensAfter":324},{"name":"clerk.revoke_actor_token","fixed":{"name":"clerk_revoke_actor_token","description":"Revoke an actor token in a connected Clerk application so it can no longer be used for impersonation.\n\n**Sensitive** — invalidates a high-privilege token.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the revoked actor token object.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_actor_tokenArguments","required":["actor_token_id"],"properties":{"actor_token_id":{"type":"string","title":"Actor Token Id","description":"Clerk actor token id to revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_actor_token\" → \"clerk_revoke_actor_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":242,"tokensAfter":242},{"name":"clerk.revoke_admin_portal_link_token","fixed":{"name":"clerk_revoke_admin_portal_link_token","description":"Revoke an admin portal link token by id in a connected Clerk instance.\n\n**Sensitive** — invalidates a single-use deep-link token.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the revoked admin portal link token.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_admin_portal_link_tokenArguments","required":["admin_portal_link_token_id"],"properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"revocation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revocation Reason","default":null,"description":"Optional reason recorded when revoking the link token."},"admin_portal_link_token_id":{"type":"string","title":"Admin Portal Link Token Id","description":"Admin portal link token id (aplt_...) to revoke."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_admin_portal_link_token\" → \"clerk_revoke_admin_portal_link_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":308,"tokensAfter":308},{"name":"clerk.revoke_api_key","fixed":{"name":"clerk_revoke_api_key","description":"Revoke an API key in a connected Clerk application so it can no longer be used.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the revoked API key summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_api_keyArguments","required":["api_key_id"],"properties":{"api_key_id":{"type":"string","title":"Api Key Id","description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"revocation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revocation Reason","default":null,"description":"Optional reason recorded when revoking the API key."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_api_key\" → \"clerk_revoke_api_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":273,"tokensAfter":273},{"name":"clerk.revoke_invitation","fixed":{"name":"clerk_revoke_invitation","description":"Revoke a pending application invitation by invitation id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nOnly pending invitations can be revoked.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_invitationArguments","required":["invitation_id"],"properties":{"invitation_id":{"type":"string","title":"Invitation Id","description":"Clerk application invitation id (inv_...) to revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_invitation\" → \"clerk_revoke_invitation\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":219,"tokensAfter":219},{"name":"clerk.revoke_m2m_token","fixed":{"name":"clerk_revoke_m2m_token","description":"Revoke an M2M token by id in a connected Clerk instance.\n\n**Sensitive** — invalidates a machine authentication token.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the revoked M2M token.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_m2m_tokenArguments","required":["m2m_token_id"],"properties":{"m2m_token_id":{"type":"string","title":"M2M Token Id","description":"Clerk M2M token id (mt_...) to revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_m2m_token\" → \"clerk_revoke_m2m_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"clerk.revoke_organization_invitation","fixed":{"name":"clerk_revoke_organization_invitation","description":"Revoke a pending Clerk organization invitation.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nOnly pending invitations can be revoked. Returns the updated invitation summary with status revoked.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_organization_invitationArguments","required":["organization_id","invitation_id"],"properties":{"invitation_id":{"type":"string","title":"Invitation Id","description":"Clerk organization invitation id (orginv_...)."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_organization_invitation\" → \"clerk_revoke_organization_invitation\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":279,"tokensAfter":279},{"name":"clerk.revoke_session","fixed":{"name":"clerk_revoke_session","description":"Revoke a session in a connected Clerk application, immediately ending it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the revoked session object with status set to revoked.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_sessionArguments","required":["session_id"],"properties":{"session_id":{"type":"string","title":"Session Id","description":"Clerk session id (sess_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_session\" → \"clerk_revoke_session\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"clerk.revoke_sign_in_token","fixed":{"name":"clerk_revoke_sign_in_token","description":"Revoke a sign-in token in a connected Clerk application so it can no longer be used.\n\n**Sensitive** — invalidates a high-privilege token.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the revoked sign-in token object.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"revoke_clerk_sign_in_tokenArguments","required":["sign_in_token_id"],"properties":{"sign_in_token_id":{"type":"string","title":"Sign In Token Id","description":"Clerk sign-in token id to revoke."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.revoke_sign_in_token\" → \"clerk_revoke_sign_in_token\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":241,"tokensAfter":241},{"name":"clerk.rotate_machine_secret_key","fixed":{"name":"clerk_rotate_machine_secret_key","description":"Rotate the secret key for a machine in a connected Clerk instance.\n\n**Sensitive** — the response includes the new secret key; do not log or expose it.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the new secret key.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"rotate_clerk_machine_secret_keyArguments","required":["machine_id","previous_token_ttl"],"properties":{"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"previous_token_ttl":{"type":"integer","title":"Previous Token Ttl","maximum":28800,"minimum":0,"description":"Seconds the previous secret key remains valid after rotation (0–28800)."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.rotate_machine_secret_key\" → \"clerk_rotate_machine_secret_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":301,"tokensAfter":301},{"name":"clerk.rotate_oauth_application_secret","fixed":{"name":"clerk_rotate_oauth_application_secret","description":"Rotate the client secret for a confidential OAuth application in a connected Clerk application.\n\n**Sensitive** — the response includes a new client_secret. Update authorized OAuth clients immediately and do not log the secret.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated OAuth application summary with the new client_secret.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"rotate_clerk_oauth_application_secretArguments","required":["oauth_application_id"],"properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"oauth_application_id":{"type":"string","title":"Oauth Application Id","description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.rotate_oauth_application_secret\" → \"clerk_rotate_oauth_application_secret\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":294,"tokensAfter":294},{"name":"clerk.unban_users","fixed":{"name":"clerk_unban_users","description":"Remove bans from one or more Clerk users, restoring their ability to sign in.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user summaries and total count.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"unban_clerk_usersArguments","required":["user_ids"],"properties":{"user_ids":{"type":"array","items":{"type":"string"},"title":"User Ids","description":"List of one or more Clerk user ids (user_...) to unban."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.unban_users\" → \"clerk_unban_users\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":228,"tokensAfter":228},{"name":"clerk.update_api_key","fixed":{"name":"clerk_update_api_key","description":"Update an API key in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated API key summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_api_keyArguments","required":["api_key_id"],"properties":{"claims":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Claims","default":null,"description":"Updated custom claims for tokens minted from this API key."},"scopes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Scopes","default":null,"description":"Updated permission scopes for the API key."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","default":null,"description":"Updated subject (user_... or org_...)."},"api_key_id":{"type":"string","title":"Api Key Id","description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":null,"description":"Updated description for the API key."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"seconds_until_expiration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Seconds Until Expiration","default":null,"description":"Updated seconds until expiration from now."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_api_key\" → \"clerk_update_api_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":449,"tokensAfter":449},{"name":"clerk.update_domain","fixed":{"name":"clerk_update_domain","description":"Update a custom domain on a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated domain.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_domainArguments","required":["domain_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Updated domain hostname."},"domain_id":{"type":"string","title":"Domain Id","description":"Clerk organization domain id (dmn_...) to update, delete, or verify."},"proxy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Url","default":null,"description":"Updated proxy URL for a satellite domain."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_domain\" → \"clerk_update_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":290,"tokensAfter":290},{"name":"clerk.update_email_address","fixed":{"name":"clerk_update_email_address","description":"Update a Clerk email address by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated email address summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_email_addressArguments","required":["email_address_id"],"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","default":null,"description":"When true, set this email as the user's primary email address."},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","default":null,"description":"When true, mark the email address as verified."},"email_address_id":{"type":"string","title":"Email Address Id","description":"Clerk email address id (idn_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_email_address\" → \"clerk_update_email_address\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":309,"tokensAfter":309},{"name":"clerk.update_enterprise_connection","fixed":{"name":"clerk_update_enterprise_connection","description":"Update an enterprise SSO connection in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated enterprise_connection summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_enterprise_connectionArguments","required":["connection_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Updated display name for the connection."},"oidc":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Oidc","default":null,"description":"Updated OIDC client configuration."},"saml":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Saml","default":null,"description":"Updated SAML IdP configuration."},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","default":null,"description":"Whether the connection is active."},"domains":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Domains","default":null,"description":"Updated domain list (replaces existing domains when provided)."},"connection_id":{"type":"string","title":"Connection Id","description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test."},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id","default":null,"description":"Clerk organization id (org_...) to link to this connection."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"custom_attributes":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"title":"Custom Attributes","default":null,"description":"Updated custom attribute mappings."},"sync_user_attributes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync User Attributes","default":null,"description":"Whether to sync user attributes on each sign-in."},"allow_organization_account_linking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allow Organization Account Linking","default":null,"description":"Whether account linking via organization membership is allowed."},"disable_additional_identifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Additional Identifications","default":null,"description":"Whether to block additional identifications for this connection."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_enterprise_connection\" → \"clerk_update_enterprise_connection\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":744,"tokensAfter":744},{"name":"clerk.update_instance_communication_settings","fixed":{"name":"clerk_update_instance_communication_settings","description":"Update SMS communication settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated communication settings.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_instance_communication_settingsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"blocked_country_codes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Blocked Country Codes","default":null,"description":"ISO country codes to block from receiving SMS messages (up to 250)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_instance_communication_settings\" → \"clerk_update_instance_communication_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"clerk.update_instance_oauth_settings","fixed":{"name":"clerk_update_instance_oauth_settings","description":"Update OAuth settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated OAuth settings.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_instance_oauth_settingsArguments","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"oauth_jwt_access_tokens":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Oauth Jwt Access Tokens","default":null,"description":"Whether OAuth access tokens should be issued as JWTs."},"dynamic_oauth_client_registration":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dynamic Oauth Client Registration","default":null,"description":"Whether dynamic OAuth client registration should be enabled."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_instance_oauth_settings\" → \"clerk_update_instance_oauth_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":295,"tokensAfter":295},{"name":"clerk.update_instance_organization_settings","fixed":{"name":"clerk_update_instance_organization_settings","description":"Update organization feature settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated organization settings.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_instance_organization_settingsArguments","properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","default":null,"description":"Whether organizations should be enabled for the instance."},"creator_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Role","default":null,"description":"Default role assigned to the organization creator."},"domains_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Domains Enabled","default":null,"description":"Whether organization domains should be enabled."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"admin_delete_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Admin Delete Enabled","default":null,"description":"Whether organization admins can delete their organization."},"domains_default_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domains Default Role","default":null,"description":"Default role for members who join via a verified organization domain."},"initial_role_set_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Role Set Key","default":null,"description":"Initial role set key applied to new organizations."},"max_allowed_memberships":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Allowed Memberships","default":null,"description":"Maximum organization memberships allowed per user."},"domains_enrollment_modes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Domains Enrollment Modes","default":null,"description":"Allowed organization domain enrollment modes: manual_invitation, automatic_invitation, or automatic_suggestion."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_instance_organization_settings\" → \"clerk_update_instance_organization_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":618,"tokensAfter":618},{"name":"clerk.update_instance_restrictions","fixed":{"name":"clerk_update_instance_restrictions","description":"Update sign-up and sign-in restriction settings for a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated instance restrictions.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_instance_restrictionsArguments","properties":{"allowlist":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allowlist","default":null,"description":"Whether the allowlist restriction should be enabled."},"blocklist":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Blocklist","default":null,"description":"Whether the blocklist restriction should be enabled."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"block_email_subaddresses":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Email Subaddresses","default":null,"description":"Whether email subaddresses (plus-addressing) should be blocked."},"block_disposable_email_domains":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Disposable Email Domains","default":null,"description":"Whether disposable email domains should be blocked."},"allowlist_blocklist_disabled_on_sign_in":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Allowlist Blocklist Disabled On Sign In","default":null,"description":"Whether allowlist and blocklist checks should be skipped during sign-in."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_instance_restrictions\" → \"clerk_update_instance_restrictions\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":460,"tokensAfter":460},{"name":"clerk.update_instance_settings","fixed":{"name":"clerk_update_instance_settings","description":"Update core settings for a connected Clerk application instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated instance settings.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_instance_settingsArguments","properties":{"hibp":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hibp","default":null,"description":"Whether Have I Been Pwned password checking should be enabled."},"test_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Test Mode","default":null,"description":"Whether the instance should run in test mode."},"support_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Email","default":null,"description":"Support email address shown to end users."},"allowed_origins":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Allowed Origins","default":null,"description":"Allowed browser origins for the instance."},"clerk_js_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Js Version","default":null,"description":"Pinned Clerk.js version for the instance."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"development_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Development Origin","default":null,"description":"Development origin URL for local testing."},"url_based_session_syncing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Url Based Session Syncing","default":null,"description":"Whether URL-based session syncing should be enabled."},"preferred_sign_in_strategy_when_password_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Sign In Strategy When Password Required","default":null,"description":"Preferred sign-in strategy when a password is required: \"password\" or \"otp\"."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_instance_settings\" → \"clerk_update_instance_settings\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":588,"tokensAfter":588},{"name":"clerk.update_jwt_template","fixed":{"name":"clerk_update_jwt_template","description":"Update an existing JWT template in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated template summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_jwt_templateArguments","required":["template_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Optional new unique template name."},"claims":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Claims","default":null,"description":"Optional new JWT claims template as a JSON object."},"lifetime":{"anyOf":[{"type":"integer","maximum":315360000,"minimum":30},{"type":"null"}],"title":"Lifetime","default":null,"description":"Optional new token lifetime in seconds (30–315360000)."},"signing_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Key","default":null,"description":"Optional custom signing private key."},"template_id":{"type":"string","title":"Template Id","description":"Clerk JWT template id (jtmp_...) to retrieve, update, or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"signing_algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Algorithm","default":null,"description":"Optional custom signing algorithm."},"allowed_clock_skew":{"anyOf":[{"type":"integer","maximum":300,"minimum":0},{"type":"null"}],"title":"Allowed Clock Skew","default":null,"description":"Optional new allowed clock skew in seconds (0–300)."},"custom_signing_key":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Custom Signing Key","default":null,"description":"Optional flag to enable or disable a custom signing key."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_jwt_template\" → \"clerk_update_jwt_template\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":560,"tokensAfter":560},{"name":"clerk.update_machine","fixed":{"name":"clerk_update_machine","description":"Update a machine in a connected Clerk instance.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated machine.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_machineArguments","required":["machine_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Updated machine display name."},"machine_id":{"type":"string","title":"Machine Id","description":"Clerk machine id (mch_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"default_token_ttl":{"anyOf":[{"type":"integer","maximum":315360000,"minimum":1},{"type":"null"}],"title":"Default Token Ttl","default":null,"description":"Updated default M2M token lifetime in seconds."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_machine\" → \"clerk_update_machine\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":301,"tokensAfter":301},{"name":"clerk.update_oauth_application","fixed":{"name":"clerk_update_oauth_application","description":"Update an OAuth application in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated OAuth application summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_oauth_applicationArguments","required":["oauth_application_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"New display name for the OAuth application."},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Public","default":null,"description":"Whether this is a public OAuth client (no client secret; PKCE-capable)."},"scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scopes","default":null,"description":"Space-delimited scopes (e.g. profile email public_metadata)."},"redirect_uris":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Redirect Uris","default":null,"description":"Replacement list of allowed redirect URIs."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"oauth_application_id":{"type":"string","title":"Oauth Application Id","description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete."},"consent_screen_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Consent Screen Enabled","default":null,"description":"Whether to show the OAuth consent screen during authorization."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_oauth_application\" → \"clerk_update_oauth_application\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":477,"tokensAfter":477},{"name":"clerk.update_organization","fixed":{"name":"clerk_update_organization","description":"Update fields for a Clerk organization.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated organization summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organizationArguments","required":["organization_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Optional new display name for the organization."},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug","default":null,"description":"Optional new URL-friendly slug."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"public_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Public Metadata","default":null,"description":"Optional public metadata to merge into the organization."},"private_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Private Metadata","default":null,"description":"Optional private metadata to merge into the organization."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"max_allowed_memberships":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Allowed Memberships","default":null,"description":"Optional new maximum number of memberships allowed."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization\" → \"clerk_update_organization\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":461,"tokensAfter":461},{"name":"clerk.update_organization_domain","fixed":{"name":"clerk_update_organization_domain","description":"Update enrollment mode or verification status for an organization domain.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated domain summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organization_domainArguments","required":["domain_id"],"properties":{"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","default":null,"description":"Whether the domain is verified."},"domain_id":{"type":"string","title":"Domain Id","description":"Clerk organization domain id (dmn_...) to update, delete, or verify."},"enrollment_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enrollment Mode","default":null,"description":"Filter or set enrollment mode: manual_invitation, automatic_invitation, or automatic_suggestion."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization_domain\" → \"clerk_update_organization_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":328,"tokensAfter":328},{"name":"clerk.update_organization_membership","fixed":{"name":"clerk_update_organization_membership","description":"Change the role of a Clerk organization member.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated membership.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organization_membershipArguments","required":["organization_id","user_id","role"],"properties":{"role":{"type":"string","title":"Role","description":"New role for the member (e.g. org:member, org:admin)."},"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) of the member to update."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) containing the member."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization_membership\" → \"clerk_update_organization_membership\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":290,"tokensAfter":290},{"name":"clerk.update_organization_membership_metadata","fixed":{"name":"clerk_update_organization_membership_metadata","description":"Merge public or private metadata on a Clerk organization membership.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated membership.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organization_membership_metadataArguments","required":["organization_id","user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) of the member."},"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) containing the membership."},"public_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Public Metadata","default":null,"description":"Public metadata to merge into the membership."},"private_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Private Metadata","default":null,"description":"Private metadata to merge into the membership."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization_membership_metadata\" → \"clerk_update_organization_membership_metadata\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":376,"tokensAfter":376},{"name":"clerk.update_organization_metadata","fixed":{"name":"clerk_update_organization_metadata","description":"Merge metadata into a Clerk organization (deep merge — existing keys are preserved unless overwritten).\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated organization summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organization_metadataArguments","required":["organization_id"],"properties":{"organization_id":{"type":"string","title":"Organization Id","description":"Clerk organization id (org_...) to operate on."},"public_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Public Metadata","default":null,"description":"Public metadata to merge into the organization."},"private_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Private Metadata","default":null,"description":"Private metadata to merge into the organization."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization_metadata\" → \"clerk_update_organization_metadata\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":349,"tokensAfter":349},{"name":"clerk.update_organization_permission","fixed":{"name":"clerk_update_organization_permission","description":"Update an organization permission in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated permission summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organization_permissionArguments","required":["permission_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Updated permission display name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":null,"description":"Updated permission description."},"permission_id":{"type":"string","title":"Permission Id","description":"Clerk organization permission id to update or delete."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization_permission\" → \"clerk_update_organization_permission\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":306,"tokensAfter":306},{"name":"clerk.update_organization_role","fixed":{"name":"clerk_update_organization_role","description":"Update an organization role in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated role summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_organization_roleArguments","required":["role_id"],"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":null,"description":"Updated role display name."},"role_id":{"type":"string","title":"Role Id","description":"Clerk organization role id to retrieve, update, or delete."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":null,"description":"Updated role description."},"permissions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Permissions","default":null,"description":"Permission keys to assign to the role."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"is_creator_eligible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Creator Eligible","default":null,"description":"Whether this role may be assigned as organization creator."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_organization_role\" → \"clerk_update_organization_role\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":394,"tokensAfter":394},{"name":"clerk.update_phone_number","fixed":{"name":"clerk_update_phone_number","description":"Update a Clerk phone number by id.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated phone number summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_phone_numberArguments","required":["phone_number_id"],"properties":{"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary","default":null,"description":"Whether this should be the user's primary phone number."},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified","default":null,"description":"Whether the phone number should be marked verified."},"phone_number_id":{"type":"string","title":"Phone Number Id","description":"Clerk phone number id (idn_... or phn_...) to retrieve or modify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"reserved_for_second_factor":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reserved For Second Factor","default":null,"description":"Whether to reserve this number for multi-factor authentication."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_phone_number\" → \"clerk_update_phone_number\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":367,"tokensAfter":367},{"name":"clerk.update_user","fixed":{"name":"clerk_update_user","description":"Update profile fields for a Clerk user.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_userArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) to update."},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","default":null,"description":"Optional username."},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name","default":null,"description":"Optional last name."},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name","default":null,"description":"Optional first name."},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","default":null,"description":"Optional external id for the user."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_user\" → \"clerk_update_user\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":348,"tokensAfter":348},{"name":"clerk.update_user_metadata","fixed":{"name":"clerk_update_user_metadata","description":"Merge metadata fields for a Clerk user. Only the provided metadata keys are updated.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated user summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"update_clerk_user_metadataArguments","required":["user_id"],"properties":{"user_id":{"type":"string","title":"User Id","description":"Clerk user id (user_...) whose metadata to update."},"public_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Public Metadata","default":null,"description":"Public metadata fields to merge. Existing keys not listed are preserved."},"unsafe_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Unsafe Metadata","default":null,"description":"Unsafe metadata fields to merge. Existing keys not listed are preserved."},"private_metadata":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Private Metadata","default":null,"description":"Private metadata fields to merge. Existing keys not listed are preserved."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"clerk.update_user_metadata\" → \"clerk_update_user_metadata\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":407,"tokensAfter":407},{"name":"clerk.upload_oauth_application_logo","fixed":{"name":"clerk_upload_oauth_application_logo","description":"Upload or replace the logo image for an OAuth application in a connected Clerk application.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nReturns the updated OAuth application summary.\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"upload_clerk_oauth_application_logoArguments","required":["oauth_application_id","file_name"],"properties":{"file_name":{"type":"string","title":"File Name","description":"Stored file name from files.list_uploaded_files. Upload with files.upload_file first."},"uploader_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uploader User Id","default":null,"description":"Clerk user id (user_...) credited with the image upload."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."},"oauth_application_id":{"type":"string","title":"Oauth Application Id","description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"clerk.upload_oauth_application_logo\" → \"clerk_upload_oauth_application_logo\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":343,"tokensAfter":343},{"name":"clerk.verify_organization_domain_ownership","fixed":{"name":"clerk_verify_organization_domain_ownership","description":"Mark an organization domain's DNS ownership as verified via manual override.\n\nCall clerk.get_connected_accounts first. Pass clerk_instance_id to target a specific connection, or omit it to use the default account.\n\nIdempotent when ownership is already verified. Returns the updated domain summary.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"verify_clerk_organization_domain_ownershipArguments","required":["domain_id"],"properties":{"domain_id":{"type":"string","title":"Domain Id","description":"Clerk organization domain id (dmn_...) to update, delete, or verify."},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clerk Instance Id","default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account."}}}},"changes":[{"kind":"name","detail":"Renamed \"clerk.verify_organization_domain_ownership\" → \"clerk_verify_organization_domain_ownership\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":248,"tokensAfter":248},{"name":"domains.add_dns_host","fixed":{"name":"domains_add_dns_host","description":"Add one DNS host record to a managed domain without replacing the full zone.\n\nPreserves existing records. The domain must use Namecheap DNS. Call domains.get_dns_hosts afterward if HostIds are needed.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"add_dns_hostArguments","required":["domain","host_name","record_type","address"],"properties":{"ttl":{"type":"integer","title":"Ttl","default":1800,"maximum":60000,"minimum":60,"description":"TTL in seconds (60 to 60000). Defaults to 1800."},"domain":{"type":"string","title":"Domain","description":"Managed domain name (for example example.com)."},"address":{"type":"string","title":"Address","description":"Record value (IP, hostname, URL, or TXT content depending on type)."},"mx_pref":{"anyOf":[{"type":"integer","maximum":65535,"minimum":0},{"type":"null"}],"title":"Mx Pref","default":null,"description":"MX preference. Required when record_type is MX or MXE."},"host_name":{"type":"string","title":"Host Name","description":"Host label to create, for example @, www, or mail."},"record_type":{"type":"string","title":"Record Type","description":"DNS record type. Supported values: A, AAAA, ALIAS, CAA, CNAME, MX, MXE, NS, TXT, URL, URL301, FRAME."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"domains.add_dns_host\" → \"domains_add_dns_host\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":353,"tokensAfter":353},{"name":"domains.check_availability","fixed":{"name":"domains_check_availability","description":"Check whether domain names can be registered through Vee3 (Namecheap-backed).\n\nReturns a map of each requested domain name to a boolean: true when the domain is available for purchase through Vee3, false when it is not.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"check_domain_availabilityArguments","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"string"},"title":"Domains","maxItems":10,"minItems":1,"description":"Domain names to check (maximum 10)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.check_availability\" → \"domains_check_availability\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"domains.dns_records","fixed":{"name":"domains_dns_records","description":"Fetch DNS records for a domain.\n\nReturns an array of records. Each record includes name, ttl, type (for example A, AAAA, CNAME, MX, NS, SOA, TXT), and data (record value).\n\nOptionally pass subdomain to include records for a host under the domain (for example blog for blog.example.com).\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_domain_dns_recordsArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","maxLength":253,"description":"Domain name to look up (for example example.com)."},"subdomain":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Subdomain","default":null,"description":"Optional subdomain label to include (for example www or blog)."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.dns_records\" → \"domains_dns_records\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":218,"tokensAfter":218},{"name":"domains.get_dns_hosts","fixed":{"name":"domains_get_dns_hosts","description":"List DNS host records for one domain this Vee3 account manages.\n\nUse for managed Namecheap DNS only. For public DNS lookup of any domain, use domains.dns_records instead.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_dns_hostsArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","description":"Managed domain name (for example example.com)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.get_dns_hosts\" → \"domains_get_dns_hosts\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"domains.get_managed","fixed":{"name":"domains_get_managed","description":"Get full details for one domain this Vee3 account owns or manages.\n\nReturns registration status, expiration, privacy, DNS provider type, and registration metadata.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_managed_domainArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","description":"Managed domain name to look up (for example example.com)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.get_managed\" → \"domains_get_managed\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"domains.list_managed","fixed":{"name":"domains_list_managed","description":"List domains this Vee3 account owns or manages (registered through Vee3).\n\nReturns domain status, registration dates, lock and privacy settings, and paging metadata.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"list_managed_domainsArguments","properties":{"page":{"type":"integer","title":"Page","default":1,"minimum":1,"description":"Page number for paginated results."},"limit":{"type":"integer","title":"Limit","default":50,"maximum":100,"minimum":1,"description":"Maximum number of domains to return."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.list_managed\" → \"domains_list_managed\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"domains.list_tlds","fixed":{"name":"domains_list_tlds","description":"List or search top-level domains (TLDs) with registry metadata.\n\nFilter by substring search, availability phase, TLD category, and paginate with limit and page. limit defaults to 100 when omitted. Each result includes the TLD suffix, type, availability phase, WHOIS server, domain counts when known, registry organization details, and created/changed timestamps.\n\navailability values: general-availability (open for normal registration) or sunrise (trademark sunrise period before general availabilit","inputSchema":{"type":"object","title":"list_domain_tldsArguments","properties":{"page":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Page","default":null,"description":"Page number for paginated results."},"limit":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of TLDs to return. Defaults to 100 when omitted."},"search":{"anyOf":[{"type":"string","maxLength":63},{"type":"null"}],"title":"Search","default":null,"description":"Return TLDs whose suffix contains this substring."},"tld_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tld Type","default":null,"description":"Filter by TLD category: country-code, generic, generic-restricted, infrastructure, or sponsored."},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Availability","default":null,"description":"Filter by registration phase: general-availability (normal public registration) or sunrise (early trademark-holder period)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.list_tlds\" → \"domains_list_tlds\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":436,"tokensAfter":436},{"name":"domains.lookup","fixed":{"name":"domains_lookup","description":"Look up a domain and return normalized registration details.\n\nCombines registry and registrar RDAP and WHOIS sources to return the most accurate normalized fields across TLDs: availability, domain status, created/updated/expiry dates, registrar data, contact records, and nameservers.\n\nUse this when you need registrant-oriented summary data rather than raw WHOIS or RDAP payloads.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_domain_lookupArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name to look up (for example example.com)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.lookup\" → \"domains_lookup\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"domains.metrics","fixed":{"name":"domains_metrics","description":"Analyze a domain with comprehensive SEO metrics, backlink data, and social signals.\n\nReturns authority metrics (Moz domain/page authority, Ahrefs domain rating, Majestic trust and citation flow), backlink profile counts (total backlinks, referring domains, EDU/GOV links), traffic and keyword estimates (organic traffic, traffic value, organic keywords, Ahrefs rank), social signals (Facebook shares/comments, Pinterest pins, StumbleUpon), and technical data (IP addresses, subnets, topical trust flo","inputSchema":{"type":"object","title":"get_domain_metricsArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","maxLength":253,"description":"Domain name to analyze (for example example.com)."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.metrics\" → \"domains_metrics\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"domains.rdap","fixed":{"name":"domains_rdap","description":"Look up raw RDAP (Registration Data Access Protocol) data for a domain.\n\nReturns registrar entities, domain status codes, registration and expiration events, nameservers, DNSSEC delegation data, RDAP conformance labels, and registry notices.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_domain_rdapArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","maxLength":253,"description":"Domain name to look up (for example example.com)."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.rdap\" → \"domains_rdap\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":149,"tokensAfter":149},{"name":"domains.register","fixed":{"name":"domains_register","description":"Register a domain through Vee3.\n\nThe user or agent passes registrant contact details and expected_token_cost from domains.registration_quote. Use a real registrant email address the domain owner can access; the registrar may send a verification email that must be completed to keep the domain in good standing. Charges the quoted token cost on success.\n\nCost = 200 tokens + domain registration price in tokens.","inputSchema":{"type":"object","title":"register_domainArguments","required":["domain","expected_token_cost","contact"],"properties":{"years":{"type":"integer","title":"Years","default":1,"maximum":10,"minimum":1,"description":"Registration term in years."},"domain":{"type":"string","title":"Domain","description":"Domain name to register (for example example.com)."},"contact":{"type":"object","title":"Contact","description":"Registrant contact used for Registrant, Admin, Tech, and AuxBilling roles. Object with first_name, last_name, address1, city, state_province, postal_code, country (two-letter code), phone (format +NNN.NNNNNNNNNN), and email_address (a real inbox the registrant can access; the registrar may send a verification email that must be completed). Optional fields: address2 and organization_name.","additionalProperties":true},"enable_privacy":{"type":"boolean","title":"Enable Privacy","default":true,"description":"Whether to enable free WhoisGuard privacy protection when available."},"expected_token_cost":{"type":"integer","title":"Expected Token Cost","description":"Token cost from a fresh domains.registration_quote response. Required to prevent surprise charges."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.register\" → \"domains_register\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":461,"tokensAfter":461},{"name":"domains.registration_quote","fixed":{"name":"domains_registration_quote","description":"Quote registration cost in tokens for one domain and year count.\n\nQuoted cost is 200 service tokens plus the domain registration price in tokens. Token conversion depends on the account billing plan. Use before domains.register.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_domain_registration_quoteArguments","required":["domain"],"properties":{"years":{"type":"integer","title":"Years","default":1,"maximum":10,"minimum":1,"description":"Registration term in years."},"domain":{"type":"string","title":"Domain","description":"Domain name to quote (for example example.com)."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.registration_quote\" → \"domains_registration_quote\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"domains.remove_dns_host","fixed":{"name":"domains_remove_dns_host","description":"Remove one DNS host record from a managed domain by host_id.\n\nPreserves all other records. Get host_id from domains.get_dns_hosts. The domain must use Namecheap DNS.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"remove_dns_hostArguments","required":["domain","host_id"],"properties":{"domain":{"type":"string","title":"Domain","description":"Managed domain name (for example example.com)."},"host_id":{"type":"string","title":"Host Id","description":"Host record id from domains.get_dns_hosts."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"domains.remove_dns_host\" → \"domains_remove_dns_host\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":157,"tokensAfter":157},{"name":"domains.renew","fixed":{"name":"domains_renew","description":"Renew a domain already managed through this Vee3 account.\n\nThe user or agent passes expected_token_cost from domains.renewal_quote. Charges the quoted token cost on success. Premium domains can only be renewed for 1 year at a time.\n\nCost = 100 tokens + domain renewal price in tokens.","inputSchema":{"type":"object","title":"renew_domainArguments","required":["domain","expected_token_cost"],"properties":{"years":{"type":"integer","title":"Years","default":1,"maximum":10,"minimum":1,"description":"Renewal term in years. Premium domains support 1 year only."},"domain":{"type":"string","title":"Domain","description":"Managed domain name to renew (for example example.com)."},"expected_token_cost":{"type":"integer","title":"Expected Token Cost","description":"Token cost from a fresh domains.renewal_quote response. Required to prevent surprise charges."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.renew\" → \"domains_renew\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":252,"tokensAfter":252},{"name":"domains.renewal_quote","fixed":{"name":"domains_renewal_quote","description":"Quote renewal cost in tokens for one managed domain and year count.\n\nOnly works for domains already managed by this Vee3 account. Quoted cost is 100 service tokens plus the domain renewal price in tokens. Token conversion depends on the account billing plan. Use before domains.renew. Premium domains can only be renewed for 1 year at a time.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_domain_renewal_quoteArguments","required":["domain"],"properties":{"years":{"type":"integer","title":"Years","default":1,"maximum":10,"minimum":1,"description":"Renewal term in years. Premium domains support 1 year only."},"domain":{"type":"string","title":"Domain","description":"Managed domain name to quote for renewal (for example example.com)."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.renewal_quote\" → \"domains_renewal_quote\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"domains.tld_details","fixed":{"name":"domains_tld_details","description":"Look up detailed registry information for a single top-level domain (TLD).\n\nReturns status, TLD type, availability phase, WHOIS and RDAP servers, registry URL, domain counts, delegation dates, registry organization, administrative/technical contacts, and remarks.\n\nPass the TLD suffix without a leading dot (for example io or com).\n\nCost = 1 token.","inputSchema":{"type":"object","title":"get_domain_tld_detailsArguments","required":["tld"],"properties":{"tld":{"type":"string","title":"Tld","maxLength":63,"description":"TLD suffix to look up without a leading dot (for example io)."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.tld_details\" → \"domains_tld_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":178,"tokensAfter":178},{"name":"domains.whois","fixed":{"name":"domains_whois","description":"Fetch WHOIS registration data for a domain.\n\nReturns a JSON object keyed by WHOIS server host name. Each value contains parsed fields such as Domain Name, registrar details, dates, name servers, domain status, DNSSEC data, and raw text lines.\n\nSet include_registrar to true to query registry and registrar servers (slower, more complete). Default false queries the registry server only.\n\nCost = 4 tokens.","inputSchema":{"type":"object","title":"get_domain_whoisArguments","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name to look up (for example example.com)."},"include_registrar":{"type":"boolean","title":"Include Registrar","default":false,"description":"When true, query registry and registrar WHOIS servers for more complete data. When false (default), query the registry server only."}}}},"changes":[{"kind":"name","detail":"Renamed \"domains.whois\" → \"domains_whois\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":250,"tokensAfter":250},{"name":"files.delete_file","fixed":{"name":"files_delete_file","description":"Permanently delete a file from the authenticated account's upload storage.\n\nPass file_name from files.list_uploaded_files. The file is removed from storage and any linked upload session is marked expired.\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"delete_fileArguments","required":["file_name"],"properties":{"file_name":{"type":"string","title":"File Name","maxLength":255,"description":"Relative file name or path to delete. Use files.list_uploaded_files to see available names."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"files.delete_file\" → \"files_delete_file\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"files.download_file","fixed":{"name":"files_download_file","description":"Reserve a direct download for a previously uploaded file.\n\nPass the file_name from files.list_uploaded_files (paths such as folder/subfolder/name.ext are supported). Vee3 returns a download_code.\n\nInstall the Vee3 CLI once with `npm install -g @vee3/cli` (requires Node 18+), then run `vee3-get-file {download_code} ./path/to/save` in the terminal. The CLI does not need an API key.\n\nIf installation fails with a TLS or certificate error (common on networks that inspect HTTPS traffic), use Node 22.1","inputSchema":{"type":"object","title":"download_fileArguments","required":["file_name"],"properties":{"file_name":{"type":"string","title":"File Name","maxLength":255,"description":"Relative file name or path to download. Use files.list_uploaded_files to see available names."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"files.download_file\" → \"files_download_file\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"files.extend_file","fixed":{"name":"files_extend_file","description":"Extend retention for a file that was uploaded with files.upload_file and appears in files.list_uploaded_files with retained_until.\n\nAdds additional_retention_days to the current schedule (or from now if retention already expired). Only files with a completed upload session and retention metadata can be extended.\n\nCost = max(1, ceil(size_gibibytes * additional_retention_days * 2)) tokens.","inputSchema":{"type":"object","title":"extend_fileArguments","required":["file_name","additional_retention_days"],"properties":{"file_name":{"type":"string","title":"File Name","maxLength":255,"description":"Relative file name or path to extend. Use files.list_uploaded_files and choose a file that includes retained_until."},"additional_retention_days":{"type":"integer","title":"Additional Retention Days","maximum":90,"minimum":1,"description":"Days to add to the file's retention schedule."}}}},"changes":[{"kind":"name","detail":"Renamed \"files.extend_file\" → \"files_extend_file\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":261,"tokensAfter":261},{"name":"files.list_uploaded_files","fixed":{"name":"files_list_uploaded_files","description":"List files currently stored for the authenticated Vee3 account.\n\nReturns file_name (including any folders), content_type, size_bytes, uploaded_at, and retained_until when known. Use file_name to reference a file in other capabilities.\n\nOptional folder limits results to that folder path and its subfolders (for example media/clips).\n\nretained_until is when the file will be removed (based on retention_days at upload).\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"list_uploaded_filesArguments","properties":{"folder":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Folder","default":null,"description":"Optional folder path (for example media/clips). When set, only files under that folder (including nested subfolders) are returned. Do not use '..' or absolute paths."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"files.list_uploaded_files\" → \"files_list_uploaded_files\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":242,"tokensAfter":242},{"name":"files.move_file","fixed":{"name":"files_move_file","description":"Move a stored file to a new account-relative path.\n\nPass source_file_name from files.list_uploaded_files and the desired destination_file_name. The file is copied to the new path and the source is removed. Any linked upload session is updated to the new path.\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"move_fileArguments","required":["source_file_name","destination_file_name"],"properties":{"source_file_name":{"type":"string","title":"Source File Name","maxLength":255,"description":"Current relative file name or path. Use files.list_uploaded_files to see available names."},"destination_file_name":{"type":"string","title":"Destination File Name","maxLength":255,"description":"New relative file name or path. Must not already exist in account storage."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"files.move_file\" → \"files_move_file\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"files.upload_file","fixed":{"name":"files_upload_file","description":"Reserve a direct upload slot for a local file or folder.\n\nPass the desired file_name. For a single file, this becomes the stored name. For a folder, this becomes the destination folder prefix. To nest further, use a path in file_name (folder/subfolder/.../name). Optionally pass retention_days (default 7, minimum 1). The name may omit an extension. Vee3 returns an upload_code.\n\nInstall the Vee3 CLI once with `npm install -g @vee3/cli` (requires Node 18+), then run `vee3-upload {upload_code} {file","inputSchema":{"type":"object","title":"upload_fileArguments","required":["file_name"],"properties":{"file_name":{"type":"string","title":"File Name","maxLength":255,"description":"Desired file name or path for the uploaded file. Use folder/subfolder/.../file_name to organize files in folders. Extension is optional and is replaced based on detected file type. Do not use '..' or absolute paths."},"existing_files":{"anyOf":[{"enum":["stop","continue","replace"],"type":"string"},{"type":"null"}],"title":"Existing Files","default":"stop","description":"What to do when a stored file already uses the same name. 'stop' (default) fails on the first duplicate. 'continue' skips duplicates and keeps uploading remaining files. 'replace' overwrites duplicated stored files."},"retention_days":{"anyOf":[{"type":"integer","maximum":90,"minimum":1},{"type":"null"}],"title":"Retention Days","default":7,"description":"How many days to keep the file after upload completes. Default 7. Billing uses size and this retention."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"files.upload_file\" → \"files_upload_file\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":437,"tokensAfter":437},{"name":"google-maps.languages","fixed":{"name":"google-maps_languages","description":"List supported language codes for Google Maps place endpoints.\n\nReturns languages as a map of language names to codes (for example English: en). Use these codes with the language parameter on place detail, review, and photo calls.\n\nCost = 1 token.","inputSchema":{"type":"object","title":"get_google_maps_languagesArguments","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.languages\" → \"google-maps_languages\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"google-maps.nearby_search","fixed":{"name":"google-maps_nearby_search","description":"Search for places near a latitude and longitude.\n\nRequired: location. Optional: radius (defaults to 1000 meters when sort_by is Relevance), keyword, place_type, open_now, min_price, max_price, language, region, and cursor. When sort_by is Distance, omit radius and provide keyword or place_type. Pass cursor from a previous cursor_next to fetch the next page.\n\nReturns matching places in places. Use place_id with place detail, review, and photo endpoints.\n\ncursor_next and cursor_previous appear onl","inputSchema":{"type":"object","title":"search_google_maps_nearbyArguments","required":["location"],"properties":{"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from cursor_next on a previous response."},"radius":{"anyOf":[{"type":"integer","maximum":50000,"minimum":1},{"type":"null"}],"title":"Radius","default":null,"description":"Search radius in meters (default 1000)."},"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Two-character region code (for example us). On search endpoints this biases results by ccTLD. On place endpoints this selects regional place data."},"keyword":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Keyword","default":null,"description":"Keyword to match nearby places (for example restaurant)."},"sort_by":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Sort By","default":null,"description":"Result ordering: \"Relevance\" (default) or \"Distance\"."},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language","default":null,"description":"Language code for results (for example en)."},"location":{"type":"string","title":"Location","maxLength":64,"description":"Latitude and longitude of the search point (for example 40,-110)."},"open_now":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Open Now","default":null,"description":"When true, return only places open for business at query time."},"max_price":{"anyOf":[{"type":"integer","maximum":4,"minimum":0},{"type":"null"}],"title":"Max Price","default":null,"description":"Maximum price level (0–4, inclusive)."},"min_price":{"anyOf":[{"type":"integer","maximum":4,"minimum":0},{"type":"null"}],"title":"Min Price","default":null,"description":"Minimum price level (0–4, inclusive)."},"place_type":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Place Type","default":null,"description":"Restrict results to a single Google Maps place type (for example restaurant)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.nearby_search\" → \"google-maps_nearby_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":744,"tokensAfter":744},{"name":"google-maps.place_details","fixed":{"name":"google-maps_place_details","description":"Get detailed information for a Google Maps place.\n\nProvide place_id from search results. The identifier also accepts the business identifier form (0x...:0x...). Optional region and language are supported.\n\nReturns a flat place object with fields such as name, full_address, location, hours, status, rating, review_count, website, phone_number, and types when available. Additional upstream fields may appear.\n\nCost = 4 tokens.","inputSchema":{"type":"object","title":"get_google_maps_place_detailsArguments","required":["place_id"],"properties":{"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Two-character region code (for example us). On search endpoints this biases results by ccTLD. On place endpoints this selects regional place data."},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language","default":null,"description":"Language code for results (for example en)."},"place_id":{"type":"string","title":"Place Id","maxLength":256,"description":"Google Maps place identifier (for example ChIJk_grnPDq9EcRE7gOH9gAPZA). Also accepts the business identifier form (for example 0x47f4eb87e91f866d:0x9629fabb993eb66)."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.place_details\" → \"google-maps_place_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":356,"tokensAfter":356},{"name":"google-maps.place_photos","fixed":{"name":"google-maps_place_photos","description":"Get photos for a Google Maps place.\n\nProvide place_id from search results. The identifier also accepts the business identifier form (0x...:0x...). Optional cursor, region, and language are supported. Pass cursor from a previous cursor_next to fetch the next page.\n\nReturns place metadata and a photos array. Each photo has photo_url and description when available. cursor_next appears only when a pagination cursor is available. Additional upstream fields may appear.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_google_maps_place_photosArguments","required":["place_id"],"properties":{"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from cursor_next on a previous response."},"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Two-character region code (for example us). On search endpoints this biases results by ccTLD. On place endpoints this selects regional place data."},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language","default":null,"description":"Language code for results (for example en)."},"place_id":{"type":"string","title":"Place Id","maxLength":256,"description":"Google Maps place identifier (for example ChIJk_grnPDq9EcRE7gOH9gAPZA). Also accepts the business identifier form (for example 0x47f4eb87e91f866d:0x9629fabb993eb66)."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.place_photos\" → \"google-maps_place_photos\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":422,"tokensAfter":422},{"name":"google-maps.place_reviews","fixed":{"name":"google-maps_place_reviews","description":"Get reviews for a Google Maps place.\n\nProvide place_id from search results. The identifier also accepts the business identifier form (0x...:0x...). Optional sort_by (Relevant, Lowest, Highest, Newest), cursor, region, and language are supported. Pass cursor from a previous cursor_next to fetch the next page.\n\nReturns place metadata and a reviews array. Each review includes fields such as review_id, review_text, rating, and user_name. cursor_next appears only when a pagination cursor is available","inputSchema":{"type":"object","title":"get_google_maps_place_reviewsArguments","required":["place_id"],"properties":{"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from cursor_next on a previous response."},"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Two-character region code (for example us). On search endpoints this biases results by ccTLD. On place endpoints this selects regional place data."},"sort_by":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Sort By","default":null,"description":"Review sort order: \"Relevant\" (default), \"Lowest\", \"Highest\", or \"Newest\"."},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language","default":null,"description":"Language code for results (for example en)."},"place_id":{"type":"string","title":"Place Id","maxLength":256,"description":"Google Maps place identifier (for example ChIJk_grnPDq9EcRE7gOH9gAPZA). Also accepts the business identifier form (for example 0x47f4eb87e91f866d:0x9629fabb993eb66)."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.place_reviews\" → \"google-maps_place_reviews\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":482,"tokensAfter":482},{"name":"google-maps.place_types","fixed":{"name":"google-maps_place_types","description":"List supported Google Maps place type values for search filters.\n\nReturns place_types as a string array. Use a value with place_type on google-maps.search or google-maps.nearby_search.\n\nCost = 1 token.","inputSchema":{"type":"object","title":"get_google_maps_place_typesArguments","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.place_types\" → \"google-maps_place_types\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"google-maps.review_details","fixed":{"name":"google-maps_review_details","description":"Get details for one Google Maps review.\n\nProvide review_id from a place reviews response. Returns one review object at the top level with fields such as review_id, review_text, rating, and user_name when available. Additional upstream fields may appear.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_google_maps_review_detailsArguments","required":["review_id"],"properties":{"review_id":{"type":"string","title":"Review Id","maxLength":512,"description":"Google Maps review identifier."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.review_details\" → \"google-maps_review_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":157,"tokensAfter":157},{"name":"google-maps.search","fixed":{"name":"google-maps_search","description":"Search Google Maps by text query.\n\nOptional filters include location, radius (defaults to 1000 meters), open_now, min_price, max_price, place_type, language, and region. Pass cursor from a previous cursor_next to fetch the next page.\n\nReturns matching places in places with names, full_address, place_id, ratings, and location. Use place_id with place detail, review, and photo endpoints.\n\ncursor_next and cursor_previous appear only when pagination cursors are available. Additional upstream fields ","inputSchema":{"type":"object","title":"search_google_mapsArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query","maxLength":512,"description":"Search query for places (for example restaurants in Paris)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from cursor_next on a previous response."},"radius":{"anyOf":[{"type":"integer","maximum":50000,"minimum":1},{"type":"null"}],"title":"Radius","default":null,"description":"Search radius in meters (default 1000)."},"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Two-character region code (for example us). On search endpoints this biases results by ccTLD. On place endpoints this selects regional place data."},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language","default":null,"description":"Language code for results (for example en)."},"location":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Location","default":null,"description":"Optional latitude and longitude bias point (for example 40,-110). A location embedded in the query may override this."},"open_now":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Open Now","default":null,"description":"When true, return only places open for business at query time."},"max_price":{"anyOf":[{"type":"integer","maximum":4,"minimum":0},{"type":"null"}],"title":"Max Price","default":null,"description":"Maximum price level (0–4, inclusive)."},"min_price":{"anyOf":[{"type":"integer","maximum":4,"minimum":0},{"type":"null"}],"title":"Min Price","default":null,"description":"Minimum price level (0–4, inclusive)."},"place_type":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Place Type","default":null,"description":"Restrict results to a single Google Maps place type (for example restaurant)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-maps.search\" → \"google-maps_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":704,"tokensAfter":704},{"name":"google-search-console.add_site","fixed":{"name":"google-search-console_add_site","description":"Add a domain as a Google Search Console property on Vee3's Search Console account.\n\nThe user or agent can pass a domain, a domain property, or a URL. Vee3-managed domains are added and verified automatically. If the apex host uses URL forwarding, Vee3 writes a Google DNS CNAME record instead of a TXT record. If Google still needs time to verify, the response asks the agent to wait and retry this tool. If Vee3 cannot write DNS, the response includes dns_host_name, dns_record_type, and dns_token. ","inputSchema":{"type":"object","title":"add_google_search_console_siteArguments","required":["site_url"],"properties":{"site_url":{"type":"string","title":"Site Url","description":"Domain or property to add. The user or agent passes a hostname (example.com), a domain property (sc-domain:example.com), or a URL (https://example.com/)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.add_site\" → \"google-search-console_add_site\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":250,"tokensAfter":250},{"name":"google-search-console.delete_sitemap","fixed":{"name":"google-search-console_delete_sitemap","description":"Remove a sitemap URL from Search Console for a verified property.\n\nCall google-search-console.list_sites to discover sites, then google-search-console.list_sitemaps for an exact feed_path. Omit site_url to use the default property. This only removes the sitemap from Search Console tracking; it does not delete the sitemap file from the website.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"delete_google_search_console_sitemapArguments","required":["feed_path"],"properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."},"feed_path":{"type":"string","title":"Feed Path","description":"Full sitemap URL for the property, for example https://example.com/sitemap.xml. Use an exact path from google-search-console.list_sitemaps when available."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.delete_sitemap\" → \"google-search-console_delete_sitemap\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":295,"tokensAfter":295},{"name":"google-search-console.get_site","fixed":{"name":"google-search-console_get_site","description":"Get one Search Console property for this account.\n\nCall google-search-console.list_sites to discover sites. Omit site_url to use the default property, or pass an exact site_url from that response, including unverified properties. Returns the property URL and permission level.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_search_console_siteArguments","properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.get_site\" → \"google-search-console_get_site\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"google-search-console.get_sitemap","fixed":{"name":"google-search-console_get_sitemap","description":"Get details for one sitemap submitted to Search Console.\n\nCall google-search-console.list_sites to discover sites, then google-search-console.list_sitemaps for an exact feed_path when available. Omit site_url to use the default property. Returns submission status, download time, warnings, errors, and content counts.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_search_console_sitemapArguments","required":["feed_path"],"properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."},"feed_path":{"type":"string","title":"Feed Path","description":"Full sitemap URL for the property, for example https://example.com/sitemap.xml. Use an exact path from google-search-console.list_sitemaps when available."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.get_sitemap\" → \"google-search-console_get_sitemap\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":286,"tokensAfter":286},{"name":"google-search-console.inspect_url","fixed":{"name":"google-search-console_inspect_url","description":"Inspect indexing status for a single URL in Search Console.\n\nCall google-search-console.list_sites to discover sites. Omit site_url to use the default property, or pass an exact site_url from that response. Returns indexing verdict, coverage state, crawl details, and canonical information for the inspected URL.\n\nURL Inspection has limited daily quota. Each call inspects one URL.\n\nCost = 15 tokens.","inputSchema":{"type":"object","title":"inspect_google_search_console_urlArguments","required":["inspection_url"],"properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code","default":null,"description":"Optional BCP-47 language code for localized inspection results."},"inspection_url":{"type":"string","title":"Inspection Url","description":"Fully qualified URL to inspect within the selected property."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.inspect_url\" → \"google-search-console_inspect_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":333,"tokensAfter":333},{"name":"google-search-console.list_sitemaps","fixed":{"name":"google-search-console_list_sitemaps","description":"List sitemaps submitted for a Search Console property.\n\nCall google-search-console.list_sites to discover sites. Omit site_url to use the default property, or pass an exact site_url from that response. Returns sitemap paths plus submission, download, warning, and error details. Use an exact path from this response with get_sitemap, submit_sitemap, or delete_sitemap.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_google_search_console_sitemapsArguments","properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."},"sitemap_index":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sitemap Index","default":null,"description":"Optional sitemap index URL. When set, only child sitemaps under that index are returned."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.list_sitemaps\" → \"google-search-console_list_sitemaps\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":290,"tokensAfter":290},{"name":"google-search-console.list_sites","fixed":{"name":"google-search-console_list_sites","description":"List Search Console properties for this account.\n\nReturns Vee3-managed domains plus sites added with google-search-console.add_site. Call this to discover sites, then omit site_url on later calls to use the default property, or pass an exact site_url from this response.\n\nIf no properties appear, add a site with google-search-console.add_site or register a domain with domains.register.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"list_google_search_console_sitesArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.list_sites\" → \"google-search-console_list_sites\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"google-search-console.query_search_analytics","fixed":{"name":"google-search-console_query_search_analytics","description":"Query Search Console search analytics for a verified property.\n\nCall google-search-console.list_sites to discover sites. Omit site_url to use the default property, or pass an exact site_url from that response. Returns performance rows with clicks, impressions, CTR, and average position, grouped by the requested dimensions.\n\nDaily search analytics typically lag by two to three days. For the Search Console last-24-hours hourly view, group by hour; those rows can include partial hours and cover up ","inputSchema":{"type":"object","title":"query_google_search_console_search_analyticsArguments","required":["start_date","end_date"],"properties":{"end_date":{"type":"string","title":"End Date","description":"Inclusive range end date in YYYY-MM-DD format."},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."},"row_limit":{"anyOf":[{"type":"integer","maximum":25000,"minimum":1},{"type":"null"}],"title":"Row Limit","default":null,"description":"Maximum number of rows to return. Defaults to 1000."},"start_row":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Start Row","default":null,"description":"Zero-based row offset for pagination. Defaults to 0."},"data_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data State","default":null,"description":"Whether to return only finalized data, all available daily data, or hourly data. Use hourly_all when grouping by hour. Defaults to final."},"dimensions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Dimensions","default":null,"description":"Optional dimension names to group results. Supported values: date, query, page, country, device, searchAppearance, hour. Grouping by hour uses the hourly feed."},"start_date":{"type":"string","title":"Start Date","description":"Inclusive range start date in YYYY-MM-DD format."},"search_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Type","default":null,"description":"Search type filter. Defaults to web."},"dimension_filter_groups":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"title":"Dimension Filter Groups","default":null,"description":"Optional filter groups matching the Google Search Console Search Analytics API shape. Each group contains filters that restrict which rows are returned."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.query_search_analytics\" → \"google-search-console_query_search_analytics\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":733,"tokensAfter":733},{"name":"google-search-console.submit_sitemap","fixed":{"name":"google-search-console_submit_sitemap","description":"Submit a sitemap URL to Search Console for a verified property.\n\nCall google-search-console.list_sites to discover sites. Omit site_url to use the default property, or pass an exact site_url from that response. feed_path must be the full sitemap URL hosted on that property.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"submit_google_search_console_sitemapArguments","required":["feed_path"],"properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":null,"description":"Optional property URL from google-search-console.list_sites. When omitted, the default property is used. The user or agent passes an exact site_url value from that response."},"feed_path":{"type":"string","title":"Feed Path","description":"Full sitemap URL for the property, for example https://example.com/sitemap.xml."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"google-search-console.submit_sitemap\" → \"google-search-console_submit_sitemap\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":255,"tokensAfter":255},{"name":"google-search.autocomplete","fixed":{"name":"google-search_autocomplete","description":"Get Google Search autocomplete suggestions for a partial query.\n\nReturns the normalized query and an array of suggested search phrases.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_search_autocompleteArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query","maxLength":512,"description":"Partial search keywords or phrase."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search.autocomplete\" → \"google-search_autocomplete\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":122,"tokensAfter":122},{"name":"google-search.keyword_traffic_insights","fixed":{"name":"google-search_keyword_traffic_insights","description":"Get Google keyword traffic insights and related keyword suggestions for a seed keyword.\n\nReturns an array of keyword suggestions. Each item includes text, monthly search volume, competition_level, competition_index, low_bid, high_bid, and trend.\n\nRequired: keyword and language (for example en). Optional: location (for example US) for country-specific data; omit location for global results (default). Optional: mode (exact or all, default all), min_search_volume (default 0), and intent (informatio","inputSchema":{"type":"object","title":"get_seo_keyword_traffic_insightsArguments","required":["keyword","language"],"properties":{"mode":{"type":"string","title":"Mode","default":"all","description":"Keyword suggestion filter: exact returns only suggestions that exactly match the seed keyword; all returns all suggestions (default)."},"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent","default":null,"description":"Filter by search intent: informational, navigational, commercial, or transactional."},"keyword":{"type":"string","title":"Keyword","maxLength":512,"description":"Seed keyword to get traffic insights and suggestions for."},"language":{"type":"string","title":"Language","maxLength":16,"description":"Language code for the search market (for example en)."},"location":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Location","default":null,"description":"Optional country or region code for localized traffic (for example US). Omit for global keyword insights."},"min_search_volume":{"type":"integer","title":"Min Search Volume","default":0,"minimum":0,"description":"Minimum monthly search volume; only keywords at or above this threshold are returned."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search.keyword_traffic_insights\" → \"google-search_keyword_traffic_insights\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":497,"tokensAfter":497},{"name":"google-search.languages","fixed":{"name":"google-search_languages","description":"List languages you can pass as language on google-search.keyword_traffic_insights and google-search.url_traffic_insights.\n\nReturns an array of entries with language_name and language_code (for example en, de). Maps to upstream lang on the provider API. No request parameters.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_search_languagesArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search.languages\" → \"google-search_languages\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"google-search.locations","fixed":{"name":"google-search_locations","description":"List countries and region codes you can pass as location on google-search.keyword_traffic_insights and google-search.url_traffic_insights.\n\nReturns an array of entries with country_name and country_code (for example US, GB). No request parameters.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_search_locationsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search.locations\" → \"google-search_locations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116},{"name":"google-search.url_traffic_insights","fixed":{"name":"google-search_url_traffic_insights","description":"Get Google keyword traffic insights and related keyword suggestions for a URL.\n\nReturns an array of keyword suggestions. Each item includes text, monthly search volume, competition_level, competition_index, low_bid, high_bid, and trend.\n\nRequired: url and language (for example en). Optional: location (for example US) for country-specific data; omit location for global results (default). Optional: min_search_volume (default 0) and intent (informational, navigational, commercial, or transactional)","inputSchema":{"type":"object","title":"get_seo_url_traffic_insightsArguments","required":["url","language"],"properties":{"url":{"type":"string","title":"Url","maxLength":2048,"description":"Public http or https URL to get traffic insights and suggestions for."},"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent","default":null,"description":"Filter by search intent: informational, navigational, commercial, or transactional."},"language":{"type":"string","title":"Language","maxLength":16,"description":"Language code for the search market (for example en)."},"location":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Location","default":null,"description":"Optional country or region code for localized traffic (for example US). Omit for global URL keyword insights."},"min_search_volume":{"type":"integer","title":"Min Search Volume","default":0,"minimum":0,"description":"Minimum monthly search volume; only keywords at or above this threshold are returned."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"google-search.url_traffic_insights\" → \"google-search_url_traffic_insights\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":439,"tokensAfter":439},{"name":"google-trends.categories","fixed":{"name":"google-trends_categories","description":"List all Google Trends category and subcategory labels you can pass to other Google Trends tools in the category field.\n\nReturns cat (array of category names, including All categories) and msg. Use this before interest-over-time or interest-by-region calls when filtering by category.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_trends_categoriesArguments","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"google-trends.categories\" → \"google-trends_categories\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"google-trends.interest_by_region","fixed":{"name":"google-trends_interest_by_region","description":"Fetch Google Trends interest-by-region breakdowns for one to five keywords.\n\nReturns a JSON object whose top-level keys are your keywords. Each value maps location names (countries or subregions) to interest scores (0–100).\n\nRequires start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100). Optional end defaults to now. country defaults to global; region requires a valid country. category and gprop default to all when omitted or empty. resolution is COUNTRY (default) or REGION","inputSchema":{"type":"object","title":"get_google_trends_interest_by_regionArguments","required":["keywords","start"],"properties":{"end":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"End","default":null,"description":"Range end in datetime-with-timezone form. Defaults to now."},"gprop":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Gprop","default":null,"description":"Google property filter (for example images, news, youtube, froogle). Defaults to all."},"start":{"type":"string","title":"Start","maxLength":64,"description":"Range start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100)."},"region":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Region","default":null,"description":"Region within country. Requires country when set."},"country":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Country","default":null,"description":"Country name for geo filtering. Defaults to global."},"category":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Category","default":null,"description":"Trends category or subcategory. Defaults to all."},"keywords":{"type":"array","items":{"type":"string"},"title":"Keywords","maxItems":5,"minItems":1,"description":"Up to five keywords to compare."},"resolution":{"enum":["COUNTRY","REGION"],"type":"string","title":"Resolution","default":"COUNTRY","description":"Geographic resolution: COUNTRY (default) or REGION."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-trends.interest_by_region\" → \"google-trends_interest_by_region\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":572,"tokensAfter":572},{"name":"google-trends.interest_over_time","fixed":{"name":"google-trends_interest_over_time","description":"Fetch Google Trends interest-over-time series for one to five keywords.\n\nReturns a JSON object whose top-level keys are your keywords. Each value maps timestamps to interest scores (0–100). Granularity depends on the requested date range (from about one minute to monthly buckets).\n\nRequires start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100). Optional end defaults to now. country defaults to global; region requires a valid country. category and gprop default to all when o","inputSchema":{"type":"object","title":"get_google_trends_interest_over_timeArguments","required":["keywords","start"],"properties":{"end":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"End","default":null,"description":"Range end in datetime-with-timezone form. Defaults to now."},"gprop":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Gprop","default":null,"description":"Google property filter (for example images, news, youtube, froogle). Defaults to all."},"start":{"type":"string","title":"Start","maxLength":64,"description":"Range start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100)."},"region":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Region","default":null,"description":"Region within country. Requires country when set."},"country":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Country","default":null,"description":"Country name for geo filtering. Defaults to global."},"category":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Category","default":null,"description":"Trends category or subcategory. Defaults to all."},"keywords":{"type":"array","items":{"type":"string"},"title":"Keywords","maxItems":5,"minItems":1,"description":"Up to five keywords to compare."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-trends.interest_over_time\" → \"google-trends_interest_over_time\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":525,"tokensAfter":525},{"name":"google-trends.regions","fixed":{"name":"google-trends_regions","description":"List all countries and subregions you can pass to other Google Trends tools in the country and region fields.\n\nReturns geo.countries: each country name maps to country (label) and regions (array of subregion names). Also returns msg.\n\nUse this before interest-over-time or interest-by-region calls when filtering by geography. Pair with google-trends.categories when filtering by category.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_google_trends_regionsArguments","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"google-trends.regions\" → \"google-trends_regions\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"google-trends.related_queries","fixed":{"name":"google-trends_related_queries","description":"Fetch Google Trends related queries for one to five keywords.\n\nReturns a JSON object whose top-level keys are your keywords. Each value has top and rising sections; each section has query (rank index to query string) and value (rank index to score).\n\nRequires start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100). Optional end defaults to now. country defaults to global; region requires a valid country. category and gprop default to all when omitted or empty.\n\nUse google-tre","inputSchema":{"type":"object","title":"get_google_trends_related_queriesArguments","required":["keywords","start"],"properties":{"end":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"End","default":null,"description":"Range end in datetime-with-timezone form. Defaults to now."},"gprop":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Gprop","default":null,"description":"Google property filter (for example images, news, youtube, froogle). Defaults to all."},"start":{"type":"string","title":"Start","maxLength":64,"description":"Range start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100)."},"region":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Region","default":null,"description":"Region within country. Requires country when set."},"country":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Country","default":null,"description":"Country name for geo filtering. Defaults to global."},"category":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Category","default":null,"description":"Trends category or subcategory. Defaults to all."},"keywords":{"type":"array","items":{"type":"string"},"title":"Keywords","maxItems":5,"minItems":1,"description":"Up to five keywords to compare."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-trends.related_queries\" → \"google-trends_related_queries\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":524,"tokensAfter":524},{"name":"google-trends.suggestions","fixed":{"name":"google-trends_suggestions","description":"Get Google Trends suggestions for a single keyword.\n\nReturns result: an array of suggested topics and entities, each with mid (topic id), title (display name), and type (for example Topic, Software, Book).\n\nUse this to refine keywords before interest-over-time, interest-by-region, or related-queries calls.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_google_trends_suggestionsArguments","required":["keyword"],"properties":{"keyword":{"type":"string","title":"Keyword","maxLength":512,"description":"Keyword or phrase to get suggestions for."}}}},"changes":[{"kind":"name","detail":"Renamed \"google-trends.suggestions\" → \"google-trends_suggestions\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"image-generation.edit","fixed":{"name":"image-generation_edit","description":"Edit an existing image or compose several images into one scene with Muse Image.\n\nThe user or agent passes stored file names from files.list_uploaded_files and/or public http or https image URLs. One image is an edit; several images are composed into one result.\n\nThe result is saved to account file storage. The response includes a signed URL for API users and download_code for agents to run `vee3-get-file`.\n\nCost = 50 tokens per generated image.","inputSchema":{"type":"object","title":"edit_imageArguments","required":["prompt","images"],"properties":{"n":{"type":"integer","title":"N","default":1,"maximum":10,"minimum":1,"description":"Number of images to generate (1 to 10). Each returned image costs 50 tokens."},"size":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Size","default":null,"description":"Optional output size as WIDTHxHEIGHT (for example 1024x1536) or auto. This sets aspect ratio, not exact pixel size. Omit for the default aspect ratio."},"images":{"type":"array","items":{"type":"string"},"title":"Images","maxItems":8,"minItems":1,"description":"Source images as stored file names from files.list_uploaded_files and/or public http or https image URLs. One image is an edit. Several images are composed into one scene. Upload files with files.upload_file first."},"prompt":{"type":"string","title":"Prompt","maxLength":4000,"description":"Text description of the image to generate or of the edit to apply."},"file_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Name","default":null,"description":"Optional account-relative storage path for the image. When n is greater than 1, an index is inserted before the extension (for example art/fox.webp becomes art/fox-1.webp and art/fox-2.webp). If omitted, the file is stored under image-generation/ with a generated name."},"output_format":{"enum":["webp","png","jpeg"],"type":"string","title":"Output Format","default":"webp","description":"Encoding of the returned image. webp is smaller; png is lossless."}}}},"changes":[{"kind":"name","detail":"Renamed \"image-generation.edit\" → \"image-generation_edit\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":582,"tokensAfter":582},{"name":"image-generation.generate","fixed":{"name":"image-generation_generate","description":"Generate an image from a text prompt with Muse Image.\n\nThe image is saved to account file storage. The response includes a signed URL for API users and download_code for agents to run `vee3-get-file`. When n is greater than 1, each returned image is stored separately.\n\nCost = 50 tokens per generated image.","inputSchema":{"type":"object","title":"generate_imageArguments","required":["prompt"],"properties":{"n":{"type":"integer","title":"N","default":1,"maximum":10,"minimum":1,"description":"Number of images to generate (1 to 10). Each returned image costs 50 tokens."},"size":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Size","default":null,"description":"Optional output size as WIDTHxHEIGHT (for example 1024x1536) or auto. This sets aspect ratio, not exact pixel size. Omit for the default aspect ratio."},"prompt":{"type":"string","title":"Prompt","maxLength":4000,"description":"Text description of the image to generate or of the edit to apply."},"file_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Name","default":null,"description":"Optional account-relative storage path for the image. When n is greater than 1, an index is inserted before the extension (for example art/fox.webp becomes art/fox-1.webp and art/fox-2.webp). If omitted, the file is stored under image-generation/ with a generated name."},"output_format":{"enum":["webp","png","jpeg"],"type":"string","title":"Output Format","default":"webp","description":"Encoding of the returned image. webp is smaller; png is lossless."}}}},"changes":[{"kind":"name","detail":"Renamed \"image-generation.generate\" → \"image-generation_generate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":451,"tokensAfter":451},{"name":"meta-tools.describe","fixed":{"name":"meta-tools_describe","description":"Describe a single Vee3 capability.\n\nPass the MCP tool name (for example `website-screenshots.capture`) or capability id (for example `website-screenshot`). Use this after meta-tools.list_group_tools when you need parameter names, defaults, response fields, examples, and token cost before calling a tool\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"describe_toolArguments","required":["tool_name"],"properties":{"tool_name":{"type":"string","title":"Tool Name","maxLength":128,"description":"MCP tool name (for example `x-twitter.create_post`) or capability id (for example `create-x-post`)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.describe\" → \"meta-tools_describe\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":184,"tokensAfter":184},{"name":"meta-tools.list_all","fixed":{"name":"meta-tools_list_all","description":"List all live Vee3 agent tools.\n\nUse this when you need to discover which tools exist and what they are called in MCP. Each entry includes mcp_tool_name, group_id, and summary. Use meta-tools.describe for full request/response schemas and token costs\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"list_all_toolsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.list_all\" → \"meta-tools_list_all\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"meta-tools.list_group_tools","fixed":{"name":"meta-tools_list_group_tools","description":"List live tools belonging to a single capability group.\n\nUse group_id from meta-tools.list_groups (for example website-screenshots). Returns name and summary for each live tool in the group\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"list_group_toolsArguments","required":["group_id"],"properties":{"group_id":{"type":"string","title":"Group Id","maxLength":128,"description":"Group id to list tools for (for example website-screenshots)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.list_group_tools\" → \"meta-tools_list_group_tools\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"meta-tools.list_groups","fixed":{"name":"meta-tools_list_groups","description":"List all Vee3 capability groups.\n\nUse this to see how tools are organized (for example website-screenshots or meta-tools) before listing tools in a specific group\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"list_groupsArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.list_groups\" → \"meta-tools_list_groups\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"meta-tools.report_bug","fixed":{"name":"meta-tools_report_bug","description":"Report a bug, error, or anything that did not work as expected while using Vee3.\n\nUse this when a capability fails unexpectedly, returns wrong data, or behaves inconsistently. Include what you tried, what happened, and any error output\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"report_bugArguments","required":["summary","description"],"properties":{"summary":{"type":"string","title":"Summary","maxLength":200,"description":"Short title describing the issue."},"description":{"type":"string","title":"Description","maxLength":8000,"description":"Detailed explanation of what went wrong, what was expected, and steps to reproduce if known."},"error_details":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Error Details","default":null,"description":"Raw error message, stack trace, or API response that shows the failure."},"related_capability_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Related Capability Id","default":null,"description":"MCP tool name or capability id involved in the issue, if applicable."}}}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.report_bug\" → \"meta-tools_report_bug\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":316,"tokensAfter":316},{"name":"meta-tools.request_feature","fixed":{"name":"meta-tools_request_feature","description":"Request a new capability or feature that Vee3 does not offer yet.\n\nUse this when you need something that is not available in the catalog — a missing integration, data source, workflow, or enhancement to an existing capability. Describe what you need, why you cannot accomplish it today, and how you would use it\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"request_featureArguments","required":["summary","description"],"properties":{"summary":{"type":"string","title":"Summary","maxLength":200,"description":"Short title describing the requested capability or feature."},"use_case":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Use Case","default":null,"description":"Example workflow or scenario where this feature would be used."},"description":{"type":"string","title":"Description","maxLength":8000,"description":"Detailed explanation of what is needed, why it cannot be done with existing tools, and how it would help."},"related_capability_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Related Capability Id","default":null,"description":"Capability id this request extends or relates to, if applicable."}}}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.request_feature\" → \"meta-tools_request_feature\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":344,"tokensAfter":344},{"name":"meta-tools.search","fixed":{"name":"meta-tools_search","description":"Search live Vee3 agent tools by keyword or short task description.\n\nCall this first when you are unsure which tool to use. Returns ranked matches with tool_name, summary, and cost for each hit. Use meta-tools.describe on the best match for full request and response schemas.\n\nOptional group_id narrows results to one capability group. limit defaults to 8 (maximum 20).\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"search_toolsArguments","required":["query"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":20,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum results to return (1–20)."},"query":{"type":"string","title":"Query","maxLength":256,"description":"Keywords or short task description (for example `tiktok video comments` or `domain availability`)."},"group_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Group Id","default":null,"description":"Optional group id to narrow results (for example `x-twitter`)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.search\" → \"meta-tools_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":294,"tokensAfter":294},{"name":"meta-tools.token_balance","fixed":{"name":"meta-tools_token_balance","description":"Get the token balance for this API key.\n\nWhen the key belongs to a project that has a spend cap, the allowance, tokens used, and tokens remaining are that cap for the current billing period. Every other key gets the account allowance and usage. The response includes the billing plan and when the period resets. Use this before expensive calls or when a call returns 402.\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"get_token_balanceArguments","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"meta-tools.token_balance\" → \"meta-tools_token_balance\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"pages.create","fixed":{"name":"pages_create","description":"Create a new static website for this Vee3 account.\n\nReturns a page id and public URL at {slug}.vee3.site. Deploy uploaded files next with pages.deploy.\n\nCost = 200 tokens.","inputSchema":{"type":"object","title":"createArguments","required":["slug"],"properties":{"name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Name","default":null,"description":"Optional display name for the page. Does not change the public URL. At most 80 characters."},"slug":{"type":"string","title":"Slug","maxLength":48,"description":"Page slug used for the public hostname ({slug}.vee3.site). Must be unique across Vee3. Lowercase alphanumeric characters and hyphens only; 1-48 characters; must start and end with an alphanumeric character."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pages.create\" → \"pages_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"pages.delete","fixed":{"name":"pages_delete","description":"Delete a hosted static website and its CDN resources.\n\nRemoves the page from this Vee3 account after deleting upstream resources.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"deleteArguments","required":["page_id"],"properties":{"page_id":{"type":"string","title":"Page Id","description":"Page id to delete."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pages.delete\" → \"pages_delete\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":103,"tokensAfter":103},{"name":"pages.deploy","fixed":{"name":"pages_deploy","description":"Deploy uploaded account files to a hosted static website.\n\nPass file_name values from files.upload_file / files.list_uploaded_files. Optional path overrides the destination path on the page (defaults to the file basename). Up to 500 files per deploy.\n\nCost = 100 tokens.","inputSchema":{"type":"object","title":"deployArguments","required":["page_id","files"],"properties":{"files":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Files","maxItems":500,"minItems":1,"description":"Files to deploy. Each item is an object with file_name (uploaded account-relative path) and optional path (destination path on the page; defaults to the file basename). Maximum 500 files."},"page_id":{"type":"string","title":"Page Id","description":"Page id returned by pages.create."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"pages.deploy\" → \"pages_deploy\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":234,"tokensAfter":234},{"name":"pages.edit","fixed":{"name":"pages_edit","description":"Update a hosted static website for this Vee3 account.\n\nChange the display name and/or the public slug. Changing the slug moves the preview hostname to {slug}.vee3.site and issues a new TLS certificate. An attached custom domain stays in place. Pass at least one of name or slug.\n\nCost = 20 tokens.","inputSchema":{"type":"object","title":"editArguments","required":["page_id"],"properties":{"name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Name","default":null,"description":"Display name for the page. Does not change the public URL. Pass an empty value to clear the name. At most 80 characters."},"slug":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Slug","default":null,"description":"New page slug used for the public hostname ({slug}.vee3.site). Must be unique across Vee3. Lowercase alphanumeric characters and hyphens only; 1-48 characters; must start and end with an alphanumeric character."},"page_id":{"type":"string","title":"Page Id","description":"Page id to update."}}}},"changes":[{"kind":"name","detail":"Renamed \"pages.edit\" → \"pages_edit\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":299,"tokensAfter":299},{"name":"pages.get","fixed":{"name":"pages_get","description":"Get details for one static website this Vee3 account hosts.\n\nReturns name, status, public URL, preview hostname on vee3.site, attached custom domain if any, and timestamps.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"getArguments","required":["page_id"],"properties":{"page_id":{"type":"string","title":"Page Id","description":"Page id to look up."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pages.get\" → \"pages_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":113,"tokensAfter":113},{"name":"pages.list","fixed":{"name":"pages_list","description":"List static websites this Vee3 account hosts.\n\nReturns page ids, names, slugs, status, public URLs, preview hostnames on vee3.site, attached custom domains if any, and paging metadata.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"list_pagesArguments","properties":{"page":{"type":"integer","title":"Page","default":1,"minimum":1,"description":"Page number for paginated results."},"limit":{"type":"integer","title":"Limit","default":50,"maximum":100,"minimum":1,"description":"Maximum number of pages to return."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pages.list\" → \"pages_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"pages.remove_custom_domain","fixed":{"name":"pages_remove_custom_domain","description":"Detach the custom hostname from a hosted static website.\n\nRemoves the custom-domain DNS record and CDN hostname. The page stays online at the preview hostname on vee3.site.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"remove_custom_domainArguments","required":["page_id"],"properties":{"page_id":{"type":"string","title":"Page Id","description":"Page id to detach the custom domain from."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pages.remove_custom_domain\" → \"pages_remove_custom_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"pages.set_custom_domain","fixed":{"name":"pages_set_custom_domain","description":"Attach a custom hostname to a hosted static website.\n\nThe hostname must be on a domain this Vee3 account already manages. Vee3 writes DNS and attaches the hostname to the page CDN with TLS. Subdomains use CNAME; the domain apex uses ALIAS. The preview hostname on vee3.site stays available. Setting a new custom domain replaces the previous one. If HTTPS is not ready yet, call this tool again after DNS is live; Vee3 retries TLS issuance.\n\nCost = 50 tokens.","inputSchema":{"type":"object","title":"set_custom_domainArguments","required":["page_id","custom_domain"],"properties":{"page_id":{"type":"string","title":"Page Id","description":"Page id to attach the custom domain to."},"custom_domain":{"type":"string","title":"Custom Domain","maxLength":253,"description":"Hostname to attach, such as www.example.com or example.com. Must be on a domain this Vee3 account already manages. At most 253 characters."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"pages.set_custom_domain\" → \"pages_set_custom_domain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":269,"tokensAfter":269},{"name":"pages.statistics","fixed":{"name":"pages_statistics","description":"Get CDN traffic for one static website this Vee3 account hosts.\n\nReturns request count, bandwidth, cache hit rate, and bandwidth by country for a UTC date range. Request count includes every file the CDN served, not unique visitors. The range is inclusive. When the user or agent omits dates, the last 7 UTC days including today are used. The range can be at most 31 days.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_statisticsArguments","required":["page_id"],"properties":{"date_to":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Date To","default":null,"description":"Inclusive UTC end date (YYYY-MM-DD). Defaults to today UTC."},"page_id":{"type":"string","title":"Page Id","description":"Page id returned by pages.create."},"date_from":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Date From","default":null,"description":"Inclusive UTC start date (YYYY-MM-DD). Defaults to 6 days before date_to."}}}},"changes":[{"kind":"name","detail":"Renamed \"pages.statistics\" → \"pages_statistics\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":283,"tokensAfter":283},{"name":"rotten-tomatoes.celebrity_details","fixed":{"name":"rotten-tomatoes_celebrity_details","description":"Look up a celebrity on Rotten Tomatoes by slug (for example morgan-freeman).\n\nReturns name, bio, birth date and place, profile image, and filmography lists for movies and TV with scores and years.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_celebrity_detailsArguments","required":["celebrity_slug"],"properties":{"celebrity_slug":{"type":"string","title":"Celebrity Slug","maxLength":512,"description":"Celebrity slug (for example morgan-freeman)."}}}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.celebrity_details\" → \"rotten-tomatoes_celebrity_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"rotten-tomatoes.movie_cast_and_crew","fixed":{"name":"rotten-tomatoes_movie_cast_and_crew","description":"List cast and crew credits for a movie by slug (for example shawshank-redemption).\n\nReturns cast and crew members with names, roles, character names, and profile links where available.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_movie_cast_and_crewArguments","required":["movie_slug"],"properties":{"movie_slug":{"type":"string","title":"Movie Slug","maxLength":512,"description":"Movie slug (for example shawshank-redemption)."}}}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.movie_cast_and_crew\" → \"rotten-tomatoes_movie_cast_and_crew\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"rotten-tomatoes.movie_details","fixed":{"name":"rotten-tomatoes_movie_details","description":"Look up a movie on Rotten Tomatoes by slug (for example shawshank-redemption).\n\nReturns title, year, rating, runtime, genres, description, poster and hero images, Tomatometer and Popcornmeter scores, cast highlights, and where to watch links.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_movie_detailsArguments","required":["movie_slug"],"properties":{"movie_slug":{"type":"string","title":"Movie Slug","maxLength":512,"description":"Movie slug (for example shawshank-redemption)."}}}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.movie_details\" → \"rotten-tomatoes_movie_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":161,"tokensAfter":161},{"name":"rotten-tomatoes.movie_reviews","fixed":{"name":"rotten-tomatoes_movie_reviews","description":"Load reviews for a movie by slug (for example shawshank-redemption).\n\nReturns review quotes, sentiment, publication, critic details, and pageInfo for pagination. Use cursor from pageInfo.endCursor for the next page. Optionally set type to critic for critic reviews only.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_movie_reviewsArguments","required":["movie_slug"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":50,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of review pages to return (1–50, default 20)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response pageInfo.endCursor field."},"movie_slug":{"type":"string","title":"Movie Slug","maxLength":512,"description":"Movie slug (for example shawshank-redemption)."},"review_type":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Review Type","default":null,"description":"Review filter. Use critic for critic reviews; omit for the default set."}}}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.movie_reviews\" → \"rotten-tomatoes_movie_reviews\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":329,"tokensAfter":329},{"name":"rotten-tomatoes.search","fixed":{"name":"rotten-tomatoes_search","description":"Search Rotten Tomatoes by title or name.\n\nReturns matching movies, TV series, and celebrities with slugs, scores, poster URLs, release years, and top-billed cast where available.\n\nCost = 13 tokens.","inputSchema":{"type":"object","title":"search_rotten_tomatoesArguments","required":["query"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":50,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of search results to return (1–50, default 20)."},"query":{"type":"string","title":"Query","maxLength":256,"description":"Search query for movies, TV series, or celebrities."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.search\" → \"rotten-tomatoes_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":189,"tokensAfter":189},{"name":"rotten-tomatoes.tv_show_cast_and_crew","fixed":{"name":"rotten-tomatoes_tv_show_cast_and_crew","description":"List cast and crew credits for a TV series by slug (for example breaking-bad).\n\nReturns cast and crew members with names, roles, character names, and profile links where available.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_tv_show_cast_and_crewArguments","required":["tv_show_slug"],"properties":{"tv_show_slug":{"type":"string","title":"Tv Show Slug","maxLength":512,"description":"TV series slug (for example breaking-bad)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.tv_show_cast_and_crew\" → \"rotten-tomatoes_tv_show_cast_and_crew\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":149,"tokensAfter":149},{"name":"rotten-tomatoes.tv_show_details","fixed":{"name":"rotten-tomatoes_tv_show_details","description":"Look up a TV series on Rotten Tomatoes by slug (for example breaking-bad).\n\nReturns title, years on air, TV rating, season count, genres, description, poster and hero images, Tomatometer and Popcornmeter scores, and creator/cast highlights.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_tv_show_detailsArguments","required":["tv_show_slug"],"properties":{"tv_show_slug":{"type":"string","title":"Tv Show Slug","maxLength":512,"description":"TV series slug (for example breaking-bad)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.tv_show_details\" → \"rotten-tomatoes_tv_show_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"rotten-tomatoes.tv_show_episode","fixed":{"name":"rotten-tomatoes_tv_show_episode","description":"Load a single episode by TV series slug (for example breaking-bad), season number, and episode number.\n\nReturns episode title, air date, description, and episode Tomatometer score when available.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_tv_show_episodeArguments","required":["tv_show_slug","season_number","episode_number"],"properties":{"tv_show_slug":{"type":"string","title":"Tv Show Slug","maxLength":512,"description":"TV series slug (for example breaking-bad)."},"season_number":{"type":"string","title":"Season Number","maxLength":2,"description":"Season number as one or two digits (for example 1 or 01)."},"episode_number":{"type":"string","title":"Episode Number","maxLength":2,"description":"Episode number as one or two digits (for example 1 or 01)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.tv_show_episode\" → \"rotten-tomatoes_tv_show_episode\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":241,"tokensAfter":241},{"name":"rotten-tomatoes.tv_show_season","fixed":{"name":"rotten-tomatoes_tv_show_season","description":"Load season-level details for a TV series by slug (for example breaking-bad) and season number.\n\nReturns season title, episode list summaries, and season Tomatometer scores when available.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_tv_show_seasonArguments","required":["tv_show_slug","season_number"],"properties":{"tv_show_slug":{"type":"string","title":"Tv Show Slug","maxLength":512,"description":"TV series slug (for example breaking-bad)."},"season_number":{"type":"string","title":"Season Number","maxLength":2,"description":"Season number as one or two digits (for example 1 or 01)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.tv_show_season\" → \"rotten-tomatoes_tv_show_season\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"rotten-tomatoes.tv_show_season_reviews","fixed":{"name":"rotten-tomatoes_tv_show_season_reviews","description":"Load reviews for a TV season by series slug (for example breaking-bad) and season number.\n\nReturns review quotes, sentiment, publication, critic details, and pageInfo for pagination. Use cursor from pageInfo.endCursor for the next page. Optionally set type to critic for critic reviews only.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"get_rotten_tomatoes_tv_show_season_reviewsArguments","required":["tv_show_slug","season_number"],"properties":{"limit":{"anyOf":[{"type":"integer","maximum":50,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of review pages to return (1–50, default 20)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response pageInfo.endCursor field."},"review_type":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Review Type","default":null,"description":"Review filter. Use critic for critic reviews; omit for the default set."},"tv_show_slug":{"type":"string","title":"Tv Show Slug","maxLength":512,"description":"TV series slug (for example breaking-bad)."},"season_number":{"type":"string","title":"Season Number","maxLength":2,"description":"Season number as one or two digits (for example 1 or 01)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"rotten-tomatoes.tv_show_season_reviews\" → \"rotten-tomatoes_tv_show_season_reviews\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":385,"tokensAfter":385},{"name":"seo.backlinks","fixed":{"name":"seo_backlinks","description":"Find backlinks pointing to a website URL.\n\nReturns an overview (domain rating, URL rating, backlink counts, referring domains, dofollow breakdown) and a list of individual backlinks with anchor text, source and target URLs, domain rating, and redirect chains.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_seo_backlinksArguments","required":["url"],"properties":{"url":{"type":"string","title":"Url","maxLength":2048,"description":"Public website URL to check for backlinks."},"include_subdomains":{"type":"boolean","title":"Include Subdomains","default":true,"description":"When true (default), include backlinks to the domain and its subdomains. When false, analyze only the exact URL."}}}},"changes":[{"kind":"name","detail":"Renamed \"seo.backlinks\" → \"seo_backlinks\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":210,"tokensAfter":210},{"name":"seo.basic_metrics","fixed":{"name":"seo_basic_metrics","description":"Get Ahrefs domain authority signals for a website URL.\n\nReturns domainRating (0–100 Ahrefs authority score) and ahRank (global Ahrefs website rank). Useful for comparing site strength and prioritizing outreach or competitive research.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_seo_basic_metricsArguments","required":["url"],"properties":{"url":{"type":"string","title":"Url","maxLength":2048,"description":"Public website URL to analyze (for example https://example.com)."}}}},"changes":[{"kind":"name","detail":"Renamed \"seo.basic_metrics\" → \"seo_basic_metrics\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"seo.country_codes","fixed":{"name":"seo_country_codes","description":"List country codes you can pass as country on seo.keyword_metrics.\n\nReturns an array of 2-letter ISO country codes (for example us, gb, de).\n\nCost = 0 tokens.","inputSchema":{"type":"object","title":"list_seo_country_codesArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"seo.country_codes\" → \"seo_country_codes\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"seo.keyword_metrics","fixed":{"name":"seo_keyword_metrics","description":"Get SEO metrics for a search keyword in a specific country market.\n\nReturns keyword, searchVolume, clicks, cpc, difficulty, globalSearchVolume, and trafficPotential.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_seo_keyword_metricsArguments","required":["keyword"],"properties":{"country":{"type":"string","title":"Country","default":"us","maxLength":2,"description":"2-letter ISO country code for the target market (default us). Use seo.country_codes for supported values."},"keyword":{"type":"string","title":"Keyword","maxLength":512,"description":"Search keyword or phrase to analyze."}}}},"changes":[{"kind":"name","detail":"Renamed \"seo.keyword_metrics\" → \"seo_keyword_metrics\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":184,"tokensAfter":184},{"name":"seo.url_metrics","fixed":{"name":"seo_url_metrics","description":"Get detailed Ahrefs SEO metrics for a specific URL.\n\nReturns two sections:\n- page: backlinks, referring domains, estimated traffic, traffic value, organic keywords, URL rating, and word count on the page\n- domain: domain rating, rank, backlinks, referring domains, traffic, traffic value, and organic keywords\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_seo_url_metricsArguments","required":["url"],"properties":{"url":{"type":"string","title":"Url","maxLength":2048,"description":"Public page URL to analyze."}}}},"changes":[{"kind":"name","detail":"Renamed \"seo.url_metrics\" → \"seo_url_metrics\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"tiktok.comment_replies","fixed":{"name":"tiktok_comment_replies","description":"List replies to a TikTok comment. Requires video_id and comment_id. Pass cursor from a previous response to fetch the next page.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_tiktok_comment_repliesArguments","required":["video_id","comment_id"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":40,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of replies to return (max 40)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"video_id":{"type":"string","title":"Video Id","maxLength":32,"description":"TikTok video id."},"comment_id":{"type":"string","title":"Comment Id","maxLength":32,"description":"TikTok comment id."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.comment_replies\" → \"tiktok_comment_replies\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":238,"tokensAfter":238},{"name":"tiktok.download_music","fixed":{"name":"tiktok_download_music","description":"Download a TikTok music track so the user or agent can save and reuse it.\n\nProvide either music_id or music_url, not both. The file is saved to account file storage. The response includes file_url for API users and download_code for agents to run `vee3-get-file`.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"download_tiktok_musicArguments","properties":{"music_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Music Id","default":null,"description":"TikTok music id."},"file_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Name","default":null,"description":"Optional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name."},"music_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Music Url","default":null,"description":"TikTok music page URL."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.download_music\" → \"tiktok_download_music\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":269,"tokensAfter":269},{"name":"tiktok.download_music_from_video","fixed":{"name":"tiktok_download_music_from_video","description":"Download music from a TikTok video so the user or agent can save and reuse it.\n\nProvide either video_id or video_url, not both. The file is saved to account file storage. The response includes file_url for API users and download_code for agents to run `vee3-get-file`.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"download_tiktok_music_from_videoArguments","properties":{"video_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Video Id","default":null,"description":"TikTok video id."},"file_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Name","default":null,"description":"Optional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name."},"video_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Video Url","default":null,"description":"TikTok video URL."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.download_music_from_video\" → \"tiktok_download_music_from_video\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":275,"tokensAfter":275},{"name":"tiktok.download_video","fixed":{"name":"tiktok_download_video","description":"Download a TikTok video so the user or agent can save and reuse it.\n\nProvide either video_id or video_url, not both. The file is saved to account file storage. The response includes file_url for API users and download_code for agents to run `vee3-get-file`.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"download_tiktok_videoArguments","properties":{"quality":{"enum":["standard","hd"],"type":"string","title":"Quality","default":"standard","description":"Video quality to download. 'standard' is default quality; 'hd' is high definition. Only one selected quality is downloaded."},"video_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Video Id","default":null,"description":"TikTok video id."},"file_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Name","default":null,"description":"Optional account-relative storage path for the video. If omitted, the file is stored under downloads/ with a generated name."},"video_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Video Url","default":null,"description":"TikTok video URL."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.download_video\" → \"tiktok_download_video\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":329,"tokensAfter":329},{"name":"tiktok.for_you_feed","fixed":{"name":"tiktok_for_you_feed","description":"Fetch for-you feed videos for a region. Requires region.\n\nCost = 4 tokens.","inputSchema":{"type":"object","title":"get_tiktok_for_you_feedArguments","required":["region"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":20,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of videos to return (max 20)."},"region":{"type":"string","title":"Region","maxLength":8,"description":"Region code (for example us, jp, kr)."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.for_you_feed\" → \"tiktok_for_you_feed\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"tiktok.music_details","fixed":{"name":"tiktok_music_details","description":"Look up metadata for a TikTok music track. Provide either music_id or music_url, not both.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_tiktok_music_detailsArguments","properties":{"music_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Music Id","default":null,"description":"TikTok music id."},"music_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Music Url","default":null,"description":"TikTok music page URL."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.music_details\" → \"tiktok_music_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"tiktok.music_videos","fixed":{"name":"tiktok_music_videos","description":"List videos that use a TikTok music track. Requires music_id. Pass cursor from a previous response to fetch the next page.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_tiktok_music_videosArguments","required":["music_id"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 30)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"music_id":{"type":"string","title":"Music Id","maxLength":64,"description":"TikTok music id."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.music_videos\" → \"tiktok_music_videos\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"tiktok.search_photos","fixed":{"name":"tiktok_search_photos","description":"Search TikTok photo posts by keyword. Requires query. Pass cursor from a previous response to fetch the next page.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"search_tiktok_photosArguments","required":["query"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 30)."},"query":{"type":"string","title":"Query","maxLength":512,"description":"Search keywords."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Region code (for example us, jp, kr)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.search_photos\" → \"tiktok_search_photos\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"tiktok.search_users","fixed":{"name":"tiktok_search_users","description":"Search TikTok users by keyword. Requires query. Pass cursor from a previous response to fetch the next page.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"search_tiktok_usersArguments","required":["query"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 30)."},"query":{"type":"string","title":"Query","maxLength":512,"description":"Search keywords."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"follower_count":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follower Count","default":"0","description":"Follower count filter: 0-4."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.search_users\" → \"tiktok_search_users\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":235,"tokensAfter":235},{"name":"tiktok.search_videos","fixed":{"name":"tiktok_search_videos","description":"Search TikTok videos by keyword. Requires query. Pass cursor from a previous response to fetch the next page.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"search_tiktok_videosArguments","required":["query"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 30)."},"query":{"type":"string","title":"Query","maxLength":512,"description":"Search keywords."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"region":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Region","default":null,"description":"Region code (for example us, jp, kr)."},"sort_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By","default":"relevance","description":"Sort order: relevance, like_count, or date_posted."},"publish_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Publish Time","default":null,"description":"Publish time filter: 0, 1, 7, 30, 90, or 180."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.search_videos\" → \"tiktok_search_videos\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":329,"tokensAfter":329},{"name":"tiktok.user_followers","fixed":{"name":"tiktok_user_followers","description":"List followers for a TikTok user. Requires user_id. Pass cursor from a previous response to fetch the next page.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_tiktok_user_followersArguments","required":["user_id"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 200)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"user_id":{"type":"string","title":"User Id","maxLength":128,"description":"TikTok numeric user id."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.user_followers\" → \"tiktok_user_followers\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"tiktok.user_following","fixed":{"name":"tiktok_user_following","description":"List accounts a TikTok user follows. Requires user_id. Pass cursor from a previous response to fetch the next page.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_tiktok_user_followingArguments","required":["user_id"],"properties":{"count":{"anyOf":[{"type":"integer","maximum":200,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 200)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"user_id":{"type":"string","title":"User Id","maxLength":128,"description":"TikTok numeric user id."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.user_following\" → \"tiktok_user_following\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"tiktok.user_info","fixed":{"name":"tiktok_user_info","description":"Look up a TikTok user profile. Provide either user_id or unique_id, not both.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_tiktok_user_infoArguments","properties":{"user_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"User Id","default":null,"description":"TikTok numeric user id."},"unique_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Unique Id","default":null,"description":"TikTok unique id (username)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.user_info\" → \"tiktok_user_info\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"tiktok.user_reposts","fixed":{"name":"tiktok_user_reposts","description":"List reposts for a TikTok user. Provide either user_id or unique_id, not both. Pass cursor from a previous response to fetch the next page.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_tiktok_user_repostsArguments","properties":{"count":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 30)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"user_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"User Id","default":null,"description":"TikTok numeric user id."},"unique_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Unique Id","default":null,"description":"TikTok unique id (username)."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.user_reposts\" → \"tiktok_user_reposts\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":257,"tokensAfter":257},{"name":"tiktok.user_videos","fixed":{"name":"tiktok_user_videos","description":"List videos posted by a TikTok user. Provide either user_id or unique_id, not both. Set latest to true for newest posts or false for top posts. Pass cursor from a previous response to fetch the next page.\n\nCost = 3 tokens.","inputSchema":{"type":"object","title":"get_tiktok_user_videosArguments","properties":{"count":{"anyOf":[{"type":"integer","maximum":30,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of items to return (max 30)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"latest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Latest","default":true,"description":"When true, return latest videos. When false, return top videos."},"user_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"User Id","default":null,"description":"TikTok numeric user id."},"unique_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Unique Id","default":null,"description":"TikTok unique id (username)."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.user_videos\" → \"tiktok_user_videos\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":321,"tokensAfter":321},{"name":"tiktok.video_comments","fixed":{"name":"tiktok_video_comments","description":"List comments on a TikTok video. Provide either video_id or video_url, not both. Pass cursor from a previous response to fetch the next page.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_tiktok_video_commentsArguments","properties":{"count":{"anyOf":[{"type":"integer","maximum":50,"minimum":1},{"type":"null"}],"title":"Count","default":null,"description":"Number of comments to return (max 50)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response."},"video_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Video Id","default":null,"description":"TikTok video id."},"video_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Video Url","default":null,"description":"TikTok video URL."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.video_comments\" → \"tiktok_video_comments\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":255,"tokensAfter":255},{"name":"tiktok.video_details","fixed":{"name":"tiktok_video_details","description":"Look up metadata for a TikTok video. Provide either video_id or video_url, not both.\n\nCost = 1 token.","inputSchema":{"type":"object","title":"get_tiktok_video_detailsArguments","properties":{"video_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Video Id","default":null,"description":"TikTok video id."},"video_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Video Url","default":null,"description":"TikTok video URL."}}}},"changes":[{"kind":"name","detail":"Renamed \"tiktok.video_details\" → \"tiktok_video_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":146,"tokensAfter":146},{"name":"website-screenshots.capture","fixed":{"name":"website-screenshots_capture","description":"Capture a screenshot of a public website so the user or agent can inspect its layout, content, and UI.\n\nThe image is saved to account file storage. The response includes screenshot_url for API users and download_code for agents to run `vee3-get-file`.\n\nCost = 20 tokens.","inputSchema":{"type":"object","title":"capture_website_screenshotArguments","required":["url"],"properties":{"url":{"type":"string","title":"Url","maxLength":2048,"description":"Public http or https URL to capture. Private, localhost, and internal network addresses are blocked."},"format":{"enum":["png","jpeg"],"type":"string","title":"Format","default":"png","description":"Output image format. 'png' preserves lossless quality (default). 'jpeg' produces smaller files."},"quality":{"type":"integer","title":"Quality","default":80,"maximum":100,"minimum":0,"description":"JPEG compression quality from 0 (smallest) to 100 (best). Only applies when format is 'jpeg'; ignored for PNG."},"dark_mode":{"type":"boolean","title":"Dark Mode","default":false,"description":"When true, emulate prefers-color-scheme: dark so sites with dark-mode CSS render in dark mode. Has no effect on sites without dark-mode styling."},"file_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"File Name","default":null,"description":"Optional account-relative storage path for the screenshot. If omitted, the file is stored under downloads/ with a generated name."},"full_page":{"type":"boolean","title":"Full Page","default":false,"description":"Capture the full scrollable page. When false, only the viewport area is captured."},"wait_until":{"enum":["load","domcontentloaded","networkidle"],"type":"string","title":"Wait Until","default":"domcontentloaded","description":"When to take the screenshot: 'load' (load event), 'domcontentloaded' (DOM ready, faster; use with post_load_wait to let the page settle), or 'networkidle' (no network activity for 500ms; can time out on pages with ongoing requests)."},"post_load_wait":{"type":"integer","title":"Post Load Wait","default":0,"maximum":20,"minimum":0,"description":"Extra seconds to wait after wait_until before capturing. Only valid when wait_until is domcontentloaded. Use this instead of networkidle when pages keep network activity."},"viewport_width":{"type":"integer","title":"Viewport Width","default":1280,"maximum":3840,"minimum":320,"description":"Browser viewport width in pixels."},"timeout_seconds":{"type":"integer","title":"Timeout Seconds","default":30,"maximum":60,"minimum":5,"description":"Maximum seconds to wait for the page to load before failing."},"viewport_height":{"type":"integer","title":"Viewport Height","default":720,"maximum":2160,"minimum":240,"description":"Browser viewport height in pixels."},"block_cookie_banners":{"type":"boolean","title":"Block Cookie Banners","default":false,"description":"When true, attempt to dismiss common cookie consent banners and overlays before capture. Best-effort - custom or first-party banners may remain."}}}},"changes":[{"kind":"name","detail":"Renamed \"website-screenshots.capture\" → \"website-screenshots_capture\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":854,"tokensAfter":854},{"name":"x-twitter.connected_accounts","fixed":{"name":"x-twitter_connected_accounts","description":"List X (Twitter) accounts connected to the authenticated Vee3 account for write capabilities.\n\nReturns user_id, user_name, display name, avatar URL, and whether each account is the default. Use user_id or user_name on future write calls, or omit both to use the default account.\n\nIf accounts is empty, the user must connect an X account at https://vee3.io/dashboard/connections before write capabilities work. Agents cannot complete OAuth; ask the user to connect, then call this tool again.\n\nCost = ","inputSchema":{"type":"object","title":"get_x_connected_accountsArguments","properties":{}}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.connected_accounts\" → \"x-twitter_connected_accounts\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"x-twitter.create_bookmark","fixed":{"name":"x-twitter_create_bookmark","description":"Bookmark a post for a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nCost = 30 tokens.","inputSchema":{"type":"object","title":"create_x_bookmarkArguments","required":["post_id"],"properties":{"post_id":{"type":"string","title":"Post Id","description":"Numeric id of the post to bookmark."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.create_bookmark\" → \"x-twitter_create_bookmark\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":281,"tokensAfter":281},{"name":"x-twitter.create_post","fixed":{"name":"x-twitter_create_post","description":"Publish a post to a connected X account via the official X API (POST /2/tweets).\n\nCall x-twitter.connected_accounts first. If accounts is empty, the user must connect an X account at https://vee3.io/dashboard/connections before posting. Agents cannot complete OAuth; ask the user to connect, then call x-twitter.connected_accounts again.\n\nPass user_id or user_name to target a specific account, not both. Omit both to use the default connected account.\n\nAt least one of text, poll, media, or card_uri","inputSchema":{"type":"object","title":"create_x_postArguments","properties":{"poll":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Poll","default":null,"description":"Poll object with options (2-4 strings) and duration_minutes (5-10080)."},"text":{"anyOf":[{"type":"string","maxLength":25000},{"type":"null"}],"title":"Text","default":null,"description":"Post text content. At least one of text, poll, media, or card_uri is required."},"media":{"type":"array","items":{"type":"string"},"title":"Media","default":null,"maxItems":4,"minItems":1,"description":"File names from files.list_uploaded_files to attach (up to 4). Upload with files.upload_file and @vee3/upload first, then list_uploaded_files to get the stored file_name values."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"card_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Uri","default":null,"description":"Card URI for the post. Mutually exclusive with poll and media."},"nullcast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Nullcast","default":null,"description":"Whether the post is promoted-only and hidden from the public timeline."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"community_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Community Id","default":null,"description":"Community id when posting to an X community."},"made_with_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Made With Ai","default":null,"description":"Whether the post contains AI-generated media."},"reply_settings":{"anyOf":[{"enum":["following","mentionedUsers","subscribers","verified"],"type":"string"},{"type":"null"}],"title":"Reply Settings","default":null,"description":"Who can reply to the post."},"paid_partnership":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Paid Partnership","default":null,"description":"Whether the post is a paid partnership."},"share_with_followers":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Share With Followers","default":null,"description":"Whether to share a community post with followers too."},"direct_message_deep_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direct Message Deep Link","default":null,"description":"Deep link that moves the conversation into Direct Messages."},"for_super_followers_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"For Super Followers Only","default":null,"description":"Whether the post is exclusive to super followers."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.create_post\" → \"x-twitter_create_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":972,"tokensAfter":972},{"name":"x-twitter.delete_bookmark","fixed":{"name":"x-twitter_delete_bookmark","description":"Remove a bookmarked post for a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nCost = 30 tokens.","inputSchema":{"type":"object","title":"delete_x_bookmarkArguments","required":["post_id"],"properties":{"post_id":{"type":"string","title":"Post Id","description":"Numeric id of the bookmarked post to remove."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.delete_bookmark\" → \"x-twitter_delete_bookmark\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":286,"tokensAfter":286},{"name":"x-twitter.delete_post","fixed":{"name":"x-twitter_delete_post","description":"Delete a post published by a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nCost = 25 tokens.","inputSchema":{"type":"object","title":"delete_x_postArguments","required":["post_id"],"properties":{"post_id":{"type":"string","title":"Post Id","description":"Numeric id of the post to delete."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.delete_post\" → \"x-twitter_delete_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":280,"tokensAfter":280},{"name":"x-twitter.edit_post","fixed":{"name":"x-twitter_edit_post","description":"Edit a recent post from a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nRequires post_id and at least one of text, media, paid_partnership, or made_with_ai.\n\nEdits must be within X's one-hour window after posting. The authenticated X account may need X Premium for API edits. Posts with polls and some other types cannot be edited. Each edit returns a new post_id.\n\nTo attach media, up","inputSchema":{"type":"object","title":"edit_x_postArguments","required":["post_id"],"properties":{"text":{"anyOf":[{"type":"string","maxLength":25000},{"type":"null"}],"title":"Text","default":null,"description":"Updated post text."},"media":{"type":"array","items":{"type":"string"},"title":"Media","default":null,"maxItems":4,"minItems":1,"description":"File names from files.list_uploaded_files to attach (up to 4). Upload with files.upload_file first."},"post_id":{"type":"string","title":"Post Id","description":"Numeric id of the post to edit."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"made_with_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Made With Ai","default":null,"description":"Whether the post contains AI-generated media."},"paid_partnership":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Paid Partnership","default":null,"description":"Whether the post is a paid partnership."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.edit_post\" → \"x-twitter_edit_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":552,"tokensAfter":552},{"name":"x-twitter.get_bookmarks","fixed":{"name":"x-twitter_get_bookmarks","description":"Fetch bookmarked posts for a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nReturns raw X API data with tweet objects, expanded authors, media, polls, and places. Use next_cursor to fetch the next page.\n\nCost = 25 tokens.","inputSchema":{"type":"object","title":"get_x_bookmarksArguments","properties":{"limit":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Limit","default":null,"description":"Maximum number of bookmarks to return (default 20, max 100)."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response next_cursor field."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.get_bookmarks\" → \"x-twitter_get_bookmarks\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":387,"tokensAfter":387},{"name":"x-twitter.reply_to_post","fixed":{"name":"x-twitter_reply_to_post","description":"Reply to a post from a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nRequires reply_to_post_id. Supports the same content options as x-twitter.create_post: text, polls, media, reply settings, paid partnership disclosure, AI-generated labels, super-follower exclusivity, nullcast posts, cards, communities, and direct-message deep links.\n\nAt least one of text, poll, media, or card_uri ","inputSchema":{"type":"object","title":"reply_to_x_postArguments","required":["reply_to_post_id"],"properties":{"poll":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Poll","default":null,"description":"Poll object with options (2-4 strings) and duration_minutes (5-10080)."},"text":{"anyOf":[{"type":"string","maxLength":25000},{"type":"null"}],"title":"Text","default":null,"description":"Reply text content. At least one of text, poll, media, or card_uri is required."},"media":{"type":"array","items":{"type":"string"},"title":"Media","default":null,"maxItems":4,"minItems":1,"description":"File names from files.list_uploaded_files to attach (up to 4)."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"card_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Uri","default":null,"description":"Card URI for the post. Mutually exclusive with poll and media."},"nullcast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Nullcast","default":null,"description":"Whether the post is promoted-only and hidden from the public timeline."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"community_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Community Id","default":null,"description":"Community id when posting to an X community."},"made_with_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Made With Ai","default":null,"description":"Whether the post contains AI-generated media."},"reply_settings":{"anyOf":[{"enum":["following","mentionedUsers","subscribers","verified"],"type":"string"},{"type":"null"}],"title":"Reply Settings","default":null,"description":"Who can reply to the post."},"paid_partnership":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Paid Partnership","default":null,"description":"Whether the post is a paid partnership."},"reply_to_post_id":{"type":"string","title":"Reply To Post Id","description":"Numeric id of the post to reply to."},"share_with_followers":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Share With Followers","default":null,"description":"Whether to share a community post with followers too."},"exclude_reply_user_ids":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Exclude Reply User Ids","default":null,"description":"User ids to exclude from the reply mention list."},"direct_message_deep_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direct Message Deep Link","default":null,"description":"Deep link that moves the conversation into Direct Messages."},"for_super_followers_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"For Super Followers Only","default":null,"description":"Whether the post is exclusive to super followers."},"auto_populate_reply_metadata":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Populate Reply Metadata","default":null,"description":"Whether to automatically populate reply metadata."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.reply_to_post\" → \"x-twitter_reply_to_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":1096,"tokensAfter":1096},{"name":"x-twitter.repost_post","fixed":{"name":"x-twitter_repost_post","description":"Repost a post for a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nReturns the reposted post_id and retweeted status.\n\nCost = 75 tokens.","inputSchema":{"type":"object","title":"repost_x_postArguments","required":["post_id"],"properties":{"post_id":{"type":"string","title":"Post Id","description":"Numeric id of the post to repost."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.repost_post\" → \"x-twitter_repost_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":293,"tokensAfter":293},{"name":"x-twitter.search","fixed":{"name":"x-twitter_search","description":"Search public X (Twitter) posts matching a keyword or phrase.\n\nReturns a timeline of matching posts with tweet text, engagement counts, author info, media, and quoted tweets. Use cursor from next_cursor to fetch the next page. search_type controls ranking: Top (default), Latest, Media, People, or Lists.\n\nCost = 5 tokens.","inputSchema":{"type":"object","title":"search_xArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query","maxLength":512,"description":"Search keywords or phrase."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response next_cursor field."},"search_type":{"enum":["Top","Latest","Media","People","Lists"],"type":"string","title":"Search Type","default":"Top","description":"Result ranking mode."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.search\" → \"x-twitter_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":252,"tokensAfter":252},{"name":"x-twitter.tweet_info","fixed":{"name":"x-twitter_tweet_info","description":"Fetch metadata for a single public X (Twitter) post by its numeric tweet id.\n\nReturns tweet text, engagement counts (likes, retweets, replies, quotes, bookmarks), language, conversation id, author profile summary, and attached media when present.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_x_tweet_infoArguments","required":["id"],"properties":{"id":{"type":"string","title":"Id","maxLength":32,"description":"Numeric tweet id."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.tweet_info\" → \"x-twitter_tweet_info\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"x-twitter.tweet_replies","fixed":{"name":"x-twitter_tweet_replies","description":"Fetch the latest replies for a single X (Twitter) post by its numeric tweet id.\n\nReturns a timeline of reply tweets with text, engagement counts, author info, media, and in-reply-to metadata. Use cursor from next_cursor to fetch the next page.\n\nCost = 4 tokens.","inputSchema":{"type":"object","title":"get_x_tweet_repliesArguments","required":["id"],"properties":{"id":{"type":"string","title":"Id","maxLength":32,"description":"Numeric tweet id."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response next_cursor field."}}}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.tweet_replies\" → \"x-twitter_tweet_replies\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":191,"tokensAfter":191},{"name":"x-twitter.unrepost_post","fixed":{"name":"x-twitter_unrepost_post","description":"Remove a repost for a connected X account.\n\nCall x-twitter.connected_accounts first. Pass user_id or user_name to target a specific account, or omit both to use the default account.\n\nCost = 50 tokens.","inputSchema":{"type":"object","title":"unrepost_x_postArguments","required":["post_id"],"properties":{"post_id":{"type":"string","title":"Post Id","description":"Numeric id of the original post to unrepost."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","default":null,"description":"Numeric X user id from x-twitter.connected_accounts. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name","default":null,"description":"X handle from x-twitter.connected_accounts, with or without a leading @. Pass user_id or user_name to target a specific account, not both. Omit both to use the default account."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.unrepost_post\" → \"x-twitter_unrepost_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":282,"tokensAfter":282},{"name":"x-twitter.user_info","fixed":{"name":"x-twitter_user_info","description":"Fetch public profile metadata for an X (Twitter) user.\n\nProvide user_name (handle without @) or rest_id (numeric user id). At least one is required. When rest_id is set, it takes precedence over user_name. Returns display name, bio, follower counts, verification flags, avatar URLs, and related profile fields.\n\nCost = 2 tokens.","inputSchema":{"type":"object","title":"get_x_user_infoArguments","properties":{"rest_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Rest Id","default":null,"description":"Numeric X user id (rest_id). When provided, user_name is ignored."},"user_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"User Name","default":null,"description":"X handle without the leading @ (for example elonmusk). Required when rest_id is omitted."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.user_info\" → \"x-twitter_user_info\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"x-twitter.user_timeline","fixed":{"name":"x-twitter_user_timeline","description":"Fetch a user's recent X (Twitter) posts, pinned tweet, and profile summary.\n\nProvide user_name (handle without @) or rest_id (numeric user id). At least one is required. When rest_id is set, it takes precedence over user_name. Returns timeline entries with tweet text, engagement counts, media, quoted tweets, and author info. Use cursor from next_cursor to fetch the next page.\n\nCost = 4 tokens.","inputSchema":{"type":"object","title":"get_x_user_timelineArguments","properties":{"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response next_cursor field."},"rest_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Rest Id","default":null,"description":"Numeric X user id (rest_id). When provided, user_name is ignored."},"user_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"User Name","default":null,"description":"X handle without the leading @ (for example elonmusk). Required when rest_id is omitted."}}}},"changes":[{"kind":"name","detail":"Renamed \"x-twitter.user_timeline\" → \"x-twitter_user_timeline\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":311,"tokensAfter":311},{"name":"youtube.channel_details","fixed":{"name":"youtube_channel_details","description":"Fetch metadata for a public YouTube channel by channel id or URL.\n\nAccepts a channel id (for example UCJ5v_MCY6GNUBTO8-D3XoAg) or common YouTube channel URLs (for example https://www.youtube.com/@WWE). Returns title, username, description, subscriber and view counts, join date, verification flags, avatar and banner images, keywords, and external links.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_youtube_channel_detailsArguments","required":["channel_id"],"properties":{"channel_id":{"type":"string","title":"Channel Id","maxLength":2048,"description":"YouTube channel id or URL (for example UCJ5v_MCY6GNUBTO8-D3XoAg or https://www.youtube.com/@WWE)."}}}},"changes":[{"kind":"name","detail":"Renamed \"youtube.channel_details\" → \"youtube_channel_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"youtube.channel_search","fixed":{"name":"youtube_channel_search","description":"Search public videos on a YouTube channel by keyword or phrase.\n\nAccepts a bare channel id (for example UCJ5v_MCY6GNUBTO8-D3XoAg), not a URL. Returns matching video entries and cursorNext for pagination.\n\nUse cursorNext from a prior response as cursor for the next page.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"search_youtube_channelArguments","required":["channel_id","query"],"properties":{"query":{"type":"string","title":"Query","maxLength":512,"description":"Search keywords or phrase within the channel."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from cursorNext."},"channel_id":{"type":"string","title":"Channel Id","maxLength":24,"description":"YouTube channel id (for example UCJ5v_MCY6GNUBTO8-D3XoAg, not a URL)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"youtube.channel_search\" → \"youtube_channel_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":249,"tokensAfter":249},{"name":"youtube.channel_videos","fixed":{"name":"youtube_channel_videos","description":"Fetch a paginated list of videos from a public YouTube channel by its channel id.\n\nAccepts a channel id (for example UCg6gPGh8HU2U01vaFCAsvmQ) or common YouTube channel URLs (for example https://www.youtube.com/@ChrisTitusTech). Use cursor from a prior response for the next page.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_youtube_channel_videosArguments","required":["channel_id"],"properties":{"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response cursor field."},"channel_id":{"type":"string","title":"Channel Id","maxLength":2048,"description":"YouTube channel id or URL (for example UCg6gPGh8HU2U01vaFCAsvmQ or https://www.youtube.com/@ChrisTitusTech)."}}}},"changes":[{"kind":"name","detail":"Renamed \"youtube.channel_videos\" → \"youtube_channel_videos\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":235,"tokensAfter":235},{"name":"youtube.playlist_details","fixed":{"name":"youtube_playlist_details","description":"Fetch metadata for a public YouTube playlist by playlist id.\n\nReturns title, description, creator summary, video and view counts, thumbnails, badges, and last updated timestamps.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_youtube_playlist_detailsArguments","required":["playlist_id"],"properties":{"playlist_id":{"type":"string","title":"Playlist Id","maxLength":512,"description":"YouTube playlist id (for example PLcirGkCPmbmFeQ1sm4wFciF03D_EroIfr)."}}}},"changes":[{"kind":"name","detail":"Renamed \"youtube.playlist_details\" → \"youtube_playlist_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"youtube.search","fixed":{"name":"youtube_search","description":"Search public YouTube content by keyword or phrase.\n\nReturns matching result cards, estimated result count, and spelling suggestions.\n\nUse filter parameters to apply multiple YouTube search filters:\n- upload_date: Last hour, Today, This week, This month, This year\n- content_type: Video, Channel, Playlist, Movie\n- duration: Under 4 minutes, 4 - 20 minutes, Over 20 minutes\n- features: Live, 4K, HD, Subtitles/CC, Creative Commons, 360°, VR180, 3D, HDR, Location, Purchased (multiple allowed)\n- sort_","inputSchema":{"type":"object","title":"search_youtubeArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query","maxLength":512,"description":"Search keywords or phrase."},"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from cursorNext."},"sort_by":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Sort By","default":null,"description":"Sort order. One of: Relevance, Upload date, View count, Rating."},"duration":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Duration","default":null,"description":"Duration filter. One of: Under 4 minutes, 4 - 20 minutes, Over 20 minutes."},"features":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":6},{"type":"null"}],"title":"Features","default":null,"description":"Feature filters. Multiple allowed. Each value must be one of: Live, 4K, HD, Subtitles/CC, Creative Commons, 360°, VR180, 3D, HDR, Location, Purchased."},"language":{"type":"string","title":"Language","default":"en","maxLength":10,"description":"Language code for localized results (for example en)."},"location":{"type":"string","title":"Location","default":"US","maxLength":10,"description":"Country code for localized results (for example US)."},"upload_date":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Upload Date","default":null,"description":"Upload date filter. One of: Last hour, Today, This week, This month, This year."},"content_type":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Content Type","default":null,"description":"Content type filter. One of: Video, Channel, Playlist, Movie."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"youtube.search\" → \"youtube_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":635,"tokensAfter":635},{"name":"youtube.search_autocomplete","fixed":{"name":"youtube_search_autocomplete","description":"Get YouTube search autocomplete suggestions for a partial query.\n\nReturns the normalized query and an array of suggested search phrases. Optional language and location codes localize suggestions (defaults: en, US).\n\nCost = 8 tokens.","inputSchema":{"type":"object","title":"get_youtube_search_autocompleteArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query","maxLength":512,"description":"Partial search keywords or phrase."},"language":{"type":"string","title":"Language","default":"en","maxLength":10,"description":"Language code for localized suggestions (for example en)."},"location":{"type":"string","title":"Location","default":"US","maxLength":10,"description":"Country code for localized suggestions (for example US)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"name","detail":"Renamed \"youtube.search_autocomplete\" → \"youtube_search_autocomplete\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"youtube.video_comments","fixed":{"name":"youtube_video_comments","description":"Fetch top-level comments for a public YouTube video by its 11-character video id.\n\nReturns comment text, author summary, vote and reply counts, pinned status, total comment count, and cursorNext for the next page.\n\nUse sort_by to choose comment order:\n- sort_by: Top comments, Newest first\n\nSort values are matched case-insensitively.\n\nUse cursor with the same video_id to paginate: pass cursorNext from a prior response. sort_by and cursor cannot be combined.\n\nCost = 15 tokens.","inputSchema":{"type":"object","title":"get_youtube_video_commentsArguments","required":["video_id"],"properties":{"cursor":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}],"title":"Cursor","default":null,"description":"Pagination cursor from a previous response cursorNext field."},"sort_by":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Sort By","default":null,"description":"Comment sort order. One of: Top comments, Newest first."},"video_id":{"type":"string","title":"Video Id","maxLength":11,"description":"YouTube video id (11 characters, not a URL)."}}}},"changes":[{"kind":"name","detail":"Renamed \"youtube.video_comments\" → \"youtube_video_comments\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":317,"tokensAfter":317},{"name":"youtube.video_details","fixed":{"name":"youtube_video_details","description":"Fetch metadata for a public YouTube video by video id or URL.\n\nAccepts a bare 11-character video id (for example PuQFESk0BrA) or common YouTube watch, youtu.be, Shorts, and embed URLs. Returns title, description, view count, duration, publish date, channel id, category, keywords, and thumbnails.\n\nCost = 10 tokens.","inputSchema":{"type":"object","title":"get_youtube_video_detailsArguments","required":["video_id"],"properties":{"video_id":{"type":"string","title":"Video Id","maxLength":2048,"description":"YouTube video id or URL (for example PuQFESk0BrA, https://youtu.be/PuQFESk0BrA, or https://www.youtube.com/watch?v=PuQFESk0BrA)."}}}},"changes":[{"kind":"name","detail":"Renamed \"youtube.video_details\" → \"youtube_video_details\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":193,"tokensAfter":193}],"toolsChanged":269,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}