{"name":"io.github.Vee3io/vee3","slug":"vee3io-vee3","title":"Vee3","description":"Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.","url":"https://mcp.market/server/vee3io-vee3","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"seo","tags":["seo","ai","search","media"],"presence":{"score":21,"stars":1,"forks":1,"downloads_week":null,"last_push_at":"2026-07-20T11:50:08.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:30:48.012Z","last_ok_at":"2026-11-04T05:30:48.012Z","latency_ms":160},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/Vee3io/vee3","website":"https://vee3.io/capabilities","version":"1.1.0","remotes":[{"type":"streamable-http","url":"https://mcp.vee3.io/mcp","headers":[{"description":"API key from https://app.vee3.io/dashboard/keys","isRequired":true,"format":"string","isSecret":true,"name":"VEE3_API_KEY"}]}],"packages":[],"tools":[{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Domain hostname to add.","title":"Name","type":"string"},"is_satellite":{"description":"Whether this is a satellite domain.","title":"Is Satellite","type":"boolean"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"proxy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Proxy URL when using a satellite domain behind a reverse proxy.","title":"Proxy Url"}},"required":["name","is_satellite"],"title":"add_clerk_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_ids":{"description":"List of one or more Clerk user ids (user_...) to ban.","items":{"type":"string"},"title":"User Ids","type":"array"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_ids"],"title":"ban_clerk_usersArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"home_url":{"description":"New home URL for the instance domain.","title":"Home Url","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"is_secondary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, change the secondary domain instead of the primary.","title":"Is Secondary"}},"required":["home_url"],"title":"change_clerk_instance_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter query forwarded to Clerk (email, phone, username, or external id).","title":"Query"}},"title":"count_clerk_usersArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) of the user being impersonated.","title":"User Id","type":"string"},"actor_sub":{"description":"Clerk user id (user_...) of the impersonating actor (maps to actor.sub).","title":"Actor Sub","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"expires_in_seconds":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Actor token lifetime in seconds (minimum 1). Defaults to 3600 (1 hour).","title":"Expires In Seconds"},"session_max_duration_in_seconds":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum duration in seconds for the session created from this token (minimum 1). Defaults to 1800 (30 minutes).","title":"Session Max Duration In Seconds"}},"required":["user_id","actor_sub"],"title":"create_clerk_actor_tokenArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional organization id (org_...) to scope the admin portal link.","title":"Organization Id"},"it_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional opaque IT contact reference for the link.","title":"It Contact Id"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional scopes for the link (for example \"admin_portal:read\").","title":"Scopes"},"seconds_until_expiration":{"anyOf":[{"maximum":86400,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Link token lifetime in seconds (default 3600, max 86400).","title":"Seconds Until Expiration"}},"title":"create_clerk_admin_portal_link_tokenArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier":{"description":"Identifier to allowlist: email, wildcard domain (*@example.com), E.164 phone (+15555555555), or Web3 wallet address.","title":"Identifier","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"notify":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, notify the user by email or SMS that they were added to the allowlist.","title":"Notify"}},"required":["identifier"],"title":"create_clerk_allowlist_identifierArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Human-readable name for the new API key.","title":"Name","type":"string"},"subject":{"description":"Subject the API key is scoped to (user_... or org_...).","title":"Subject","type":"string"},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"API key type (typically \"api_key\").","title":"Key Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional description for the API key.","title":"Description"},"claims":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Custom claims to embed in tokens minted from this API key.","title":"Claims"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Permission scopes to grant the API key.","title":"Scopes"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"User id to record as the creator of this API key.","title":"Created By"},"seconds_until_expiration":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Seconds from creation until the API key expires.","title":"Seconds Until Expiration"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["name","subject"],"title":"create_clerk_api_keyArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier":{"description":"Identifier to block: email, domain, E.164 phone (+15555555555), or Web3 wallet address.","title":"Identifier","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["identifier"],"title":"create_clerk_blocklist_identifierArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to retrieve or modify.","title":"User Id","type":"string"},"email_address":{"description":"Email address to create for the user.","title":"Email Address","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, the email address is created as verified.","title":"Verified"},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, set this email as the user's primary email address.","title":"Primary"}},"required":["user_id","email_address"],"title":"create_clerk_email_addressArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Display name for the enterprise connection.","title":"Name","type":"string"},"provider":{"description":"Identity provider key (for example saml_custom or oidc_custom).","title":"Provider","type":"string"},"domains":{"description":"Email domains that may use this connection.","items":{"type":"string"},"title":"Domains","type":"array"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk organization id (org_...) to link to this connection.","title":"Organization Id"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the connection is active.","title":"Active"},"sync_user_attributes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to sync user attributes on each sign-in.","title":"Sync User Attributes"},"disable_additional_identifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to block additional identifications for this connection.","title":"Disable Additional Identifications"},"allow_organization_account_linking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether account linking via organization membership is allowed.","title":"Allow Organization Account Linking"},"saml":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"SAML IdP configuration when provider uses SAML.","title":"Saml"},"oidc":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"OIDC client configuration when provider uses OAuth.","title":"Oidc"},"custom_attributes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"description":"Custom attribute mappings from the IdP to user metadata.","title":"Custom Attributes"}},"required":["name","provider","domains"],"title":"create_clerk_enterprise_connectionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test.","title":"Connection Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["connection_id"],"title":"create_clerk_enterprise_connection_test_runArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"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).","items":{"additionalProperties":true,"type":"object"},"title":"Invitations","type":"array"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["invitations"],"title":"create_clerk_invitationsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Unique JWT template name.","title":"Name","type":"string"},"claims":{"additionalProperties":true,"description":"JWT claims template as a JSON object.","title":"Claims","type":"object"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"lifetime":{"anyOf":[{"maximum":315360000,"minimum":30,"type":"integer"},{"type":"null"}],"default":null,"description":"Token lifetime in seconds (30–315360000).","title":"Lifetime"},"allowed_clock_skew":{"anyOf":[{"maximum":300,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Allowed clock skew in seconds (0–300).","title":"Allowed Clock Skew"},"custom_signing_key":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to use a custom signing key and algorithm.","title":"Custom Signing Key"},"signing_algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Custom signing algorithm (required when custom_signing_key is true).","title":"Signing Algorithm"},"signing_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Custom signing private key (required when custom_signing_key is true).","title":"Signing Key"}},"required":["name","claims"],"title":"create_clerk_jwt_templateArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_secret_key":{"description":"Machine secret key (msk_...) used to authenticate the create request.","title":"Machine Secret Key","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"token_format":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Token format: \"opaque\" (default) or \"jwt\".","title":"Token Format"},"seconds_until_expiration":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Token lifetime in seconds.","title":"Seconds Until Expiration"},"claims":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional custom claims embedded in the token.","title":"Claims"},"min_remaining_ttl_seconds":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"For opaque tokens, reuse an existing token with at least this TTL remaining.","title":"Min Remaining Ttl Seconds"}},"required":["machine_secret_key"],"title":"create_clerk_m2m_tokenArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Machine display name (1–255 characters).","title":"Name","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"scoped_machines":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Machine ids (mch_...) this machine may access (max 150).","title":"Scoped Machines"},"default_token_ttl":{"anyOf":[{"maximum":315360000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Default M2M token lifetime in seconds (minimum 1).","title":"Default Token Ttl"}},"required":["name"],"title":"create_clerk_machineArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"to_machine_id":{"description":"Target machine id (mch_...) to grant access to.","title":"To Machine Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["machine_id","to_machine_id"],"title":"create_clerk_machine_scopeArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Display name for the new OAuth application.","title":"Name","type":"string"},"redirect_uris":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Allowed redirect URIs for the OAuth authorization flow.","title":"Redirect Uris"},"scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Space-delimited scopes (e.g. profile email public_metadata).","title":"Scopes"},"consent_screen_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to show the OAuth consent screen during authorization.","title":"Consent Screen Enabled"},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this is a public OAuth client (no client secret; PKCE-capable).","title":"Public"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["name"],"title":"create_clerk_oauth_applicationArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Organization display name.","title":"Name","type":"string"},"created_by":{"description":"Clerk user id (user_...) of the user creating the organization.","title":"Created By","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional URL-friendly slug for the organization.","title":"Slug"},"max_allowed_memberships":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional maximum number of memberships allowed.","title":"Max Allowed Memberships"},"public_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional public metadata as a JSON object.","title":"Public Metadata"},"private_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional private metadata as a JSON object.","title":"Private Metadata"}},"required":["name","created_by"],"title":"create_clerk_organizationArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"name":{"description":"Domain name to add (for example example.com).","title":"Name","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"enrollment_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter or set enrollment mode: manual_invitation, automatic_invitation, or automatic_suggestion.","title":"Enrollment Mode"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the domain is verified. Defaults to true when omitted.","title":"Verified"}},"required":["organization_id","name"],"title":"create_clerk_organization_domainArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"invitations":{"description":"One or more invitation objects. Each item requires email_address (string) and role (string, e.g. org:admin, org:member).","items":{"additionalProperties":true,"type":"object"},"title":"Invitations","type":"array"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id","invitations"],"title":"create_clerk_organization_invitationsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to add the member to.","title":"Organization Id","type":"string"},"user_id":{"description":"Clerk user id (user_...) of the user to add.","title":"User Id","type":"string"},"role":{"description":"Role to assign to the user in the organization (e.g. org:member, org:admin).","title":"Role","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id","user_id","role"],"title":"create_clerk_organization_membershipArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Permission display name.","title":"Name","type":"string"},"key":{"description":"Unique permission key.","title":"Key","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Permission description.","title":"Description"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["name","key"],"title":"create_clerk_organization_permissionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Role display name.","title":"Name","type":"string"},"key":{"description":"Unique role key.","title":"Key","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Role description.","title":"Description"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Permission keys to assign to the new role.","title":"Permissions"},"include_in_initial_role_set":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to include this role in the initial role set.","title":"Include In Initial Role Set"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["name","key"],"title":"create_clerk_organization_roleArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to retrieve or modify.","title":"User Id","type":"string"},"phone_number":{"description":"Phone number in E.164 format (e.g. +15551234567).","title":"Phone Number","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the phone number should be marked verified. Defaults to false.","title":"Verified"},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this should be the user's primary phone number.","title":"Primary"},"reserved_for_second_factor":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to reserve this number for multi-factor authentication.","title":"Reserved For Second Factor"}},"required":["user_id","phone_number"],"title":"create_clerk_phone_numberArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"description":"Redirect URL to allow for sign-in and sign-up flows.","title":"Url","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["url"],"title":"create_clerk_redirect_urlArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to create a session for.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id"],"title":"create_clerk_sessionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"session_id":{"description":"Clerk session id (sess_...) to retrieve or modify.","title":"Session Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional JWT template name. When set, the session token is created from that template.","title":"Template Name"}},"required":["session_id"],"title":"create_clerk_session_tokenArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to retrieve or modify.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"expires_in_seconds":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Token lifetime in seconds (minimum 1). Defaults to 2592000 (30 days).","title":"Expires In Seconds"}},"required":["user_id"],"title":"create_clerk_sign_in_tokenArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"create_clerk_svix_appArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"create_clerk_svix_dashboard_urlArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email_address":{"description":"Primary email address for the new Clerk user.","title":"Email Address","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional first name.","title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional last name.","title":"Last Name"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional password. Omit to create a user without a password.","title":"Password"}},"required":["email_address"],"title":"create_clerk_userArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"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).","items":{"additionalProperties":true,"type":"object"},"title":"Waitlist Entries","type":"array"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["waitlist_entries"],"title":"create_clerk_waitlist_entriesArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier_id":{"description":"Allowlist or blocklist identifier id (alid_... or blid_...) to delete.","title":"Identifier Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["identifier_id"],"title":"delete_clerk_allowlist_identifierArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key_id":{"description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke.","title":"Api Key Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["api_key_id"],"title":"delete_clerk_api_keyArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"identifier_id":{"description":"Allowlist or blocklist identifier id (alid_... or blid_...) to delete.","title":"Identifier Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["identifier_id"],"title":"delete_clerk_blocklist_identifierArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"description":"Clerk organization domain id (dmn_...) to update, delete, or verify.","title":"Domain Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["domain_id"],"title":"delete_clerk_domainArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email_address_id":{"description":"Clerk email address id (idn_...) to retrieve or modify.","title":"Email Address Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["email_address_id"],"title":"delete_clerk_email_addressArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test.","title":"Connection Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["connection_id"],"title":"delete_clerk_enterprise_connectionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"template_id":{"description":"Clerk JWT template id (jtmp_...) to retrieve, update, or delete.","title":"Template Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["template_id"],"title":"delete_clerk_jwt_templateArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["machine_id"],"title":"delete_clerk_machineArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"scope_id":{"description":"Target machine id (mch_...) for the scope to remove.","title":"Scope Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["machine_id","scope_id"],"title":"delete_clerk_machine_scopeArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"oauth_application_id":{"description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete.","title":"Oauth Application Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["oauth_application_id"],"title":"delete_clerk_oauth_applicationArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id"],"title":"delete_clerk_organizationArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"description":"Clerk organization domain id (dmn_...) to update, delete, or verify.","title":"Domain Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["domain_id"],"title":"delete_clerk_organization_domainArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to remove the member from.","title":"Organization Id","type":"string"},"user_id":{"description":"Clerk user id (user_...) of the member to remove.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id","user_id"],"title":"delete_clerk_organization_membershipArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"permission_id":{"description":"Clerk organization permission id to update or delete.","title":"Permission Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["permission_id"],"title":"delete_clerk_organization_permissionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"role_id":{"description":"Clerk organization role id to retrieve, update, or delete.","title":"Role Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["role_id"],"title":"delete_clerk_organization_roleArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"phone_number_id":{"description":"Clerk phone number id (idn_... or phn_...) to retrieve or modify.","title":"Phone Number Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["phone_number_id"],"title":"delete_clerk_phone_numberArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"redirect_url_id":{"description":"Clerk redirect URL id to retrieve or delete.","title":"Redirect Url Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["redirect_url_id"],"title":"delete_clerk_redirect_urlArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"delete_clerk_svix_appArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to delete.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id"],"title":"delete_clerk_userArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to operate on.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id"],"title":"delete_clerk_user_backup_codesArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to operate on.","title":"User Id","type":"string"},"external_account_id":{"description":"External account id (for example ea_...) to unlink.","title":"External Account Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id","external_account_id"],"title":"delete_clerk_user_external_accountArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to operate on.","title":"User Id","type":"string"},"passkey_id":{"description":"Passkey identification id to delete.","title":"Passkey Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id","passkey_id"],"title":"delete_clerk_user_passkeyArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to operate on.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id"],"title":"delete_clerk_user_totpArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to operate on.","title":"User Id","type":"string"},"web3_wallet_id":{"description":"Web3 wallet identification id to delete.","title":"Web3 Wallet Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id","web3_wallet_id"],"title":"delete_clerk_user_web3_walletArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"waitlist_entry_id":{"description":"Clerk waitlist entry id (wle_...) to operate on.","title":"Waitlist Entry Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["waitlist_entry_id"],"title":"delete_clerk_waitlist_entryArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to operate on.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id"],"title":"disable_clerk_user_mfaArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key_id":{"description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke.","title":"Api Key Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["api_key_id"],"title":"get_clerk_api_keyArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key_id":{"description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke.","title":"Api Key Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["api_key_id"],"title":"get_clerk_api_key_secretArguments"}},{"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 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_clerk_connected_accountsArguments"}},{"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 created before Publishable Keys were stored, ask the user to reconnect the Clerk application at https://vee3.io/dashboard/connections.\n\nCost = 5 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_development_api_keysArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email_address_id":{"description":"Clerk email address id (idn_...) to retrieve or modify.","title":"Email Address Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["email_address_id"],"title":"get_clerk_email_addressArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test.","title":"Connection Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["connection_id"],"title":"get_clerk_enterprise_connectionArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_instanceArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_instance_communication_settingsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_instance_oauth_settingsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_instance_organization_settingsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_instance_settingsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"get_clerk_jwksArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"template_id":{"description":"Clerk JWT template id (jtmp_...) to retrieve, update, or delete.","title":"Template Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["template_id"],"title":"get_clerk_jwt_templateArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["machine_id"],"title":"get_clerk_machineArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["machine_id"],"title":"get_clerk_machine_secret_keyArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"oauth_application_id":{"description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete.","title":"Oauth Application Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["oauth_application_id"],"title":"get_clerk_oauth_applicationArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id"],"title":"get_clerk_organizationArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"invitation_id":{"description":"Clerk organization invitation id (orginv_...).","title":"Invitation Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id","invitation_id"],"title":"get_clerk_organization_invitationArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"role_id":{"description":"Clerk organization role id to retrieve, update, or delete.","title":"Role Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["role_id"],"title":"get_clerk_organization_roleArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"phone_number_id":{"description":"Clerk phone number id (idn_... or phn_...) to retrieve or modify.","title":"Phone Number Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["phone_number_id"],"title":"get_clerk_phone_numberArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"redirect_url_id":{"description":"Clerk redirect URL id to retrieve or delete.","title":"Redirect Url Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["redirect_url_id"],"title":"get_clerk_redirect_urlArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"session_id":{"description":"Clerk session id (sess_...) to retrieve or modify.","title":"Session Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["session_id"],"title":"get_clerk_sessionArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sign_up_id":{"description":"Clerk sign-up id (su_...) to retrieve.","title":"Sign Up Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["sign_up_id"],"title":"get_clerk_sign_upArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to retrieve.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id"],"title":"get_clerk_userArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"waitlist_entry_id":{"description":"Clerk waitlist entry id (wle_...) to operate on.","title":"Waitlist Entry Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"ignore_existing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, create an invitation even if one already exists for this email.","title":"Ignore Existing"}},"required":["waitlist_entry_id"],"title":"invite_clerk_waitlist_entryArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"default":10,"description":"Maximum number of identifiers to return (1–500).","title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of identifiers to skip before returning results.","title":"Offset","type":"integer"}},"title":"list_clerk_allowlist_identifiersArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"subject":{"description":"Subject to list API keys for (user_... or org_...).","title":"Subject","type":"string"},"key_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by API key type (typically \"api_key\").","title":"Key Type"},"include_invalid":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, include revoked or expired API keys.","title":"Include Invalid"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of API keys to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of API keys to skip before returning results.","title":"Offset"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Search query to filter API keys by name.","title":"Query"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["subject"],"title":"list_clerk_api_keysArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"default":10,"description":"Maximum number of identifiers to return (1–500).","title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of identifiers to skip before returning results.","title":"Offset","type":"integer"}},"title":"list_clerk_blocklist_identifiersArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"list_clerk_domainsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test.","title":"Connection Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of results to skip before returning.","title":"Offset"},"status":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Filter by test run status: \"pending\", \"success\", or \"failed\".","title":"Status"}},"required":["connection_id"],"title":"list_clerk_enterprise_connection_test_runsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of results to skip before returning.","title":"Offset"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter connections linked to this Clerk organization id (org_...).","title":"Organization Id"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Filter by active status. Omit to return all connections.","title":"Active"}},"title":"list_clerk_enterprise_connectionsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"default":10,"description":"Maximum number of invitations to return (1–500).","title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of invitations to skip before returning results.","title":"Offset","type":"integer"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional status filter: \"pending\", \"accepted\", \"revoked\", or \"expired\".","title":"Status"}},"title":"list_clerk_invitationsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"list_clerk_jwt_templatesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"subject":{"description":"Machine id (mch_...) whose tokens to list.","title":"Subject","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"revoked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include revoked tokens (default false).","title":"Revoked"},"expired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include expired tokens (default false).","title":"Expired"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of results to skip before returning.","title":"Offset"}},"required":["subject"],"title":"list_clerk_m2m_tokensArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of results to skip before returning.","title":"Offset"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by machine id (exact) or name (partial match).","title":"Query"},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sort by name or created_at; prefix with - for descending (default -created_at).","title":"Order By"}},"title":"list_clerk_machinesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"list_clerk_oauth_applicationsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter domains to a specific Clerk organization id (org_...).","title":"Organization Id"},"verified":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by verification status: \"true\" or \"false\".","title":"Verified"},"enrollment_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter or set enrollment mode: manual_invitation, automatic_invitation, or automatic_suggestion.","title":"Enrollment Mode"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Query"},"limit":{"default":10,"description":"Maximum number of results to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of results to skip before returning.","minimum":0,"title":"Offset","type":"integer"}},"title":"list_clerk_organization_domainsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter invitations to a specific Clerk organization id (org_...).","title":"Organization Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by invitation status: pending, accepted, revoked, or expired.","title":"Status"},"limit":{"default":10,"description":"Maximum number of results to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of results to skip before returning.","minimum":0,"title":"Offset","type":"integer"}},"title":"list_clerk_organization_invitationsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) whose members to list.","title":"Organization Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of organization memberships to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of organization memberships to skip before returning results.","title":"Offset"}},"required":["organization_id"],"title":"list_clerk_organization_membershipsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":10,"description":"Maximum number of results to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of results to skip before returning.","minimum":0,"title":"Offset","type":"integer"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Search by name or key.","title":"Query"},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sort order with optional + or - prefix (for example -created_at or name). Defaults to -created_at.","title":"Order By"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"list_clerk_organization_permissionsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":10,"description":"Maximum number of results to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of results to skip before returning.","minimum":0,"title":"Offset","type":"integer"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Search by name or key.","title":"Query"},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sort order with optional + or - prefix (for example -created_at or name). Defaults to -created_at.","title":"Order By"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"title":"list_clerk_organization_rolesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional search string to filter organizations by name or slug.","title":"Query"},"limit":{"default":10,"description":"Maximum number of organizations to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of organizations to skip before returning results.","minimum":0,"title":"Offset","type":"integer"}},"title":"list_clerk_organizationsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"default":10,"description":"Maximum number of redirect URLs to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of redirect URLs to skip before returning results.","minimum":0,"title":"Offset","type":"integer"}},"title":"list_clerk_redirect_urlsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter sessions to those belonging to this Clerk client id (client_...).","title":"Client Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter sessions by status. Accepted values: abandoned, active, ended, expired, removed, replaced, revoked.","title":"Status"},"limit":{"default":10,"description":"Maximum number of sessions to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of sessions to skip before returning results.","minimum":0,"title":"Offset","type":"integer"}},"title":"list_clerk_sessionsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) whose memberships to list.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of organization memberships to return (1–500).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of organization memberships to skip before returning results.","title":"Offset"}},"required":["user_id"],"title":"list_clerk_user_organization_membershipsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"default":10,"description":"Maximum number of users to return (1–500).","maximum":500,"minimum":1,"title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of users to skip before returning results.","minimum":0,"title":"Offset","type":"integer"}},"title":"list_clerk_usersArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"limit":{"default":10,"description":"Maximum number of waitlist entries to return (1–500).","title":"Limit","type":"integer"},"offset":{"default":0,"description":"Number of waitlist entries to skip before returning results.","title":"Offset","type":"integer"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by email address or waitlist entry id.","title":"Query"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional status filter: \"pending\", \"invited\", \"rejected\", or \"completed\".","title":"Status"},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: created_at, email_address, or invited_at with optional + or - prefix. Defaults to -created_at.","title":"Order By"}},"title":"list_clerk_waitlist_entriesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"waitlist_entry_id":{"description":"Clerk waitlist entry id (wle_...) to operate on.","title":"Waitlist Entry Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["waitlist_entry_id"],"title":"reject_clerk_waitlist_entryArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) whose metadata to replace.","title":"User Id","type":"string"},"metadata_type":{"description":"Metadata namespace to replace.","title":"Metadata Type","type":"string"},"metadata":{"additionalProperties":true,"description":"New metadata dict that fully replaces the chosen namespace. Pass an empty object to clear all keys.","title":"Metadata","type":"object"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_id","metadata_type","metadata"],"title":"replace_clerk_user_metadataArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"actor_token_id":{"description":"Clerk actor token id to revoke.","title":"Actor Token Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["actor_token_id"],"title":"revoke_clerk_actor_tokenArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"admin_portal_link_token_id":{"description":"Admin portal link token id (aplt_...) to revoke.","title":"Admin Portal Link Token Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"revocation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional reason recorded when revoking the link token.","title":"Revocation Reason"}},"required":["admin_portal_link_token_id"],"title":"revoke_clerk_admin_portal_link_tokenArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key_id":{"description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke.","title":"Api Key Id","type":"string"},"revocation_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional reason recorded when revoking the API key.","title":"Revocation Reason"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["api_key_id"],"title":"revoke_clerk_api_keyArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"invitation_id":{"description":"Clerk application invitation id (inv_...) to revoke.","title":"Invitation Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["invitation_id"],"title":"revoke_clerk_invitationArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"m2m_token_id":{"description":"Clerk M2M token id (mt_...) to revoke.","title":"M2M Token Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["m2m_token_id"],"title":"revoke_clerk_m2m_tokenArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"invitation_id":{"description":"Clerk organization invitation id (orginv_...).","title":"Invitation Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id","invitation_id"],"title":"revoke_clerk_organization_invitationArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"session_id":{"description":"Clerk session id (sess_...) to retrieve or modify.","title":"Session Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["session_id"],"title":"revoke_clerk_sessionArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sign_in_token_id":{"description":"Clerk sign-in token id to revoke.","title":"Sign In Token Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["sign_in_token_id"],"title":"revoke_clerk_sign_in_tokenArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"previous_token_ttl":{"description":"Seconds the previous secret key remains valid after rotation (0–28800).","maximum":28800,"minimum":0,"title":"Previous Token Ttl","type":"integer"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["machine_id","previous_token_ttl"],"title":"rotate_clerk_machine_secret_keyArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"oauth_application_id":{"description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete.","title":"Oauth Application Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["oauth_application_id"],"title":"rotate_clerk_oauth_application_secretArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_ids":{"description":"List of one or more Clerk user ids (user_...) to unban.","items":{"type":"string"},"title":"User Ids","type":"array"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["user_ids"],"title":"unban_clerk_usersArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key_id":{"description":"Clerk API key id (ak_...) to retrieve, update, delete, or revoke.","title":"Api Key Id","type":"string"},"claims":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Updated custom claims for tokens minted from this API key.","title":"Claims"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Updated permission scopes for the API key.","title":"Scopes"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated description for the API key.","title":"Description"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated subject (user_... or org_...).","title":"Subject"},"seconds_until_expiration":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Updated seconds until expiration from now.","title":"Seconds Until Expiration"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["api_key_id"],"title":"update_clerk_api_keyArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"description":"Clerk organization domain id (dmn_...) to update, delete, or verify.","title":"Domain Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated domain hostname.","title":"Name"},"proxy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated proxy URL for a satellite domain.","title":"Proxy Url"}},"required":["domain_id"],"title":"update_clerk_domainArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email_address_id":{"description":"Clerk email address id (idn_...) to retrieve or modify.","title":"Email Address Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, mark the email address as verified.","title":"Verified"},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, set this email as the user's primary email address.","title":"Primary"}},"required":["email_address_id"],"title":"update_clerk_email_addressArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"description":"Clerk enterprise connection id (entc_...) to retrieve, update, delete, or test.","title":"Connection Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated display name for the connection.","title":"Name"},"domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Updated domain list (replaces existing domains when provided).","title":"Domains"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the connection is active.","title":"Active"},"sync_user_attributes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to sync user attributes on each sign-in.","title":"Sync User Attributes"},"disable_additional_identifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to block additional identifications for this connection.","title":"Disable Additional Identifications"},"allow_organization_account_linking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether account linking via organization membership is allowed.","title":"Allow Organization Account Linking"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk organization id (org_...) to link to this connection.","title":"Organization Id"},"saml":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Updated SAML IdP configuration.","title":"Saml"},"oidc":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Updated OIDC client configuration.","title":"Oidc"},"custom_attributes":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"description":"Updated custom attribute mappings.","title":"Custom Attributes"}},"required":["connection_id"],"title":"update_clerk_enterprise_connectionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"blocked_country_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"ISO country codes to block from receiving SMS messages (up to 250).","title":"Blocked Country Codes"}},"title":"update_clerk_instance_communication_settingsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"dynamic_oauth_client_registration":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether dynamic OAuth client registration should be enabled.","title":"Dynamic Oauth Client Registration"},"oauth_jwt_access_tokens":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether OAuth access tokens should be issued as JWTs.","title":"Oauth Jwt Access Tokens"}},"title":"update_clerk_instance_oauth_settingsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether organizations should be enabled for the instance.","title":"Enabled"},"max_allowed_memberships":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum organization memberships allowed per user.","title":"Max Allowed Memberships"},"creator_role":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Default role assigned to the organization creator.","title":"Creator Role"},"admin_delete_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether organization admins can delete their organization.","title":"Admin Delete Enabled"},"domains_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether organization domains should be enabled.","title":"Domains Enabled"},"domains_enrollment_modes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Allowed organization domain enrollment modes: manual_invitation, automatic_invitation, or automatic_suggestion.","title":"Domains Enrollment Modes"},"domains_default_role":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Default role for members who join via a verified organization domain.","title":"Domains Default Role"},"initial_role_set_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Initial role set key applied to new organizations.","title":"Initial Role Set Key"}},"title":"update_clerk_instance_organization_settingsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"allowlist":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the allowlist restriction should be enabled.","title":"Allowlist"},"blocklist":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the blocklist restriction should be enabled.","title":"Blocklist"},"allowlist_blocklist_disabled_on_sign_in":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether allowlist and blocklist checks should be skipped during sign-in.","title":"Allowlist Blocklist Disabled On Sign In"},"block_email_subaddresses":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether email subaddresses (plus-addressing) should be blocked.","title":"Block Email Subaddresses"},"block_disposable_email_domains":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether disposable email domains should be blocked.","title":"Block Disposable Email Domains"}},"title":"update_clerk_instance_restrictionsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"test_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the instance should run in test mode.","title":"Test Mode"},"hibp":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether Have I Been Pwned password checking should be enabled.","title":"Hibp"},"support_email":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Support email address shown to end users.","title":"Support Email"},"clerk_js_version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Pinned Clerk.js version for the instance.","title":"Clerk Js Version"},"development_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Development origin URL for local testing.","title":"Development Origin"},"allowed_origins":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Allowed browser origins for the instance.","title":"Allowed Origins"},"url_based_session_syncing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether URL-based session syncing should be enabled.","title":"Url Based Session Syncing"},"preferred_sign_in_strategy_when_password_required":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Preferred sign-in strategy when a password is required: \"password\" or \"otp\".","title":"Preferred Sign In Strategy When Password Required"}},"title":"update_clerk_instance_settingsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"template_id":{"description":"Clerk JWT template id (jtmp_...) to retrieve, update, or delete.","title":"Template Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new unique template name.","title":"Name"},"claims":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional new JWT claims template as a JSON object.","title":"Claims"},"lifetime":{"anyOf":[{"maximum":315360000,"minimum":30,"type":"integer"},{"type":"null"}],"default":null,"description":"Optional new token lifetime in seconds (30–315360000).","title":"Lifetime"},"allowed_clock_skew":{"anyOf":[{"maximum":300,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Optional new allowed clock skew in seconds (0–300).","title":"Allowed Clock Skew"},"custom_signing_key":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Optional flag to enable or disable a custom signing key.","title":"Custom Signing Key"},"signing_algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional custom signing algorithm.","title":"Signing Algorithm"},"signing_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional custom signing private key.","title":"Signing Key"}},"required":["template_id"],"title":"update_clerk_jwt_templateArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"machine_id":{"description":"Clerk machine id (mch_...) to retrieve or modify.","title":"Machine Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated machine display name.","title":"Name"},"default_token_ttl":{"anyOf":[{"maximum":315360000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Updated default M2M token lifetime in seconds.","title":"Default Token Ttl"}},"required":["machine_id"],"title":"update_clerk_machineArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"oauth_application_id":{"description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete.","title":"Oauth Application Id","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New display name for the OAuth application.","title":"Name"},"redirect_uris":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Replacement list of allowed redirect URIs.","title":"Redirect Uris"},"scopes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Space-delimited scopes (e.g. profile email public_metadata).","title":"Scopes"},"consent_screen_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to show the OAuth consent screen during authorization.","title":"Consent Screen Enabled"},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this is a public OAuth client (no client secret; PKCE-capable).","title":"Public"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["oauth_application_id"],"title":"update_clerk_oauth_applicationArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new display name for the organization.","title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new URL-friendly slug.","title":"Slug"},"max_allowed_memberships":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional new maximum number of memberships allowed.","title":"Max Allowed Memberships"},"public_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional public metadata to merge into the organization.","title":"Public Metadata"},"private_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional private metadata to merge into the organization.","title":"Private Metadata"}},"required":["organization_id"],"title":"update_clerk_organizationArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"description":"Clerk organization domain id (dmn_...) to update, delete, or verify.","title":"Domain Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"enrollment_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter or set enrollment mode: manual_invitation, automatic_invitation, or automatic_suggestion.","title":"Enrollment Mode"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the domain is verified.","title":"Verified"}},"required":["domain_id"],"title":"update_clerk_organization_domainArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) containing the member.","title":"Organization Id","type":"string"},"user_id":{"description":"Clerk user id (user_...) of the member to update.","title":"User Id","type":"string"},"role":{"description":"New role for the member (e.g. org:member, org:admin).","title":"Role","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["organization_id","user_id","role"],"title":"update_clerk_organization_membershipArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) containing the membership.","title":"Organization Id","type":"string"},"user_id":{"description":"Clerk user id (user_...) of the member.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"public_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Public metadata to merge into the membership.","title":"Public Metadata"},"private_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Private metadata to merge into the membership.","title":"Private Metadata"}},"required":["organization_id","user_id"],"title":"update_clerk_organization_membership_metadataArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"organization_id":{"description":"Clerk organization id (org_...) to operate on.","title":"Organization Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"public_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Public metadata to merge into the organization.","title":"Public Metadata"},"private_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Private metadata to merge into the organization.","title":"Private Metadata"}},"required":["organization_id"],"title":"update_clerk_organization_metadataArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"permission_id":{"description":"Clerk organization permission id to update or delete.","title":"Permission Id","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated permission display name.","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated permission description.","title":"Description"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["permission_id"],"title":"update_clerk_organization_permissionArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"role_id":{"description":"Clerk organization role id to retrieve, update, or delete.","title":"Role Id","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated role display name.","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated role description.","title":"Description"},"is_creator_eligible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this role may be assigned as organization creator.","title":"Is Creator Eligible"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Permission keys to assign to the role.","title":"Permissions"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["role_id"],"title":"update_clerk_organization_roleArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"phone_number_id":{"description":"Clerk phone number id (idn_... or phn_...) to retrieve or modify.","title":"Phone Number Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the phone number should be marked verified.","title":"Verified"},"primary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether this should be the user's primary phone number.","title":"Primary"},"reserved_for_second_factor":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to reserve this number for multi-factor authentication.","title":"Reserved For Second Factor"}},"required":["phone_number_id"],"title":"update_clerk_phone_numberArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) to update.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional first name.","title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional last name.","title":"Last Name"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional username.","title":"Username"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional external id for the user.","title":"External Id"}},"required":["user_id"],"title":"update_clerk_userArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"Clerk user id (user_...) whose metadata to update.","title":"User Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"},"public_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Public metadata fields to merge. Existing keys not listed are preserved.","title":"Public Metadata"},"private_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Private metadata fields to merge. Existing keys not listed are preserved.","title":"Private Metadata"},"unsafe_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Unsafe metadata fields to merge. Existing keys not listed are preserved.","title":"Unsafe Metadata"}},"required":["user_id"],"title":"update_clerk_user_metadataArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"oauth_application_id":{"description":"Clerk OAuth application id (oa_...) to retrieve, update, or delete.","title":"Oauth Application Id","type":"string"},"file_name":{"description":"Stored file name from files.list_uploaded_files. Upload with files.upload_file first.","title":"File Name","type":"string"},"uploader_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk user id (user_...) credited with the image upload.","title":"Uploader User Id"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["oauth_application_id","file_name"],"title":"upload_clerk_oauth_application_logoArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain_id":{"description":"Clerk organization domain id (dmn_...) to update, delete, or verify.","title":"Domain Id","type":"string"},"clerk_instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Clerk instance id (ins_...) from clerk.get_connected_accounts. Omit to use the default connected account.","title":"Clerk Instance Id"}},"required":["domain_id"],"title":"verify_clerk_organization_domain_ownershipArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Managed domain name (for example example.com).","title":"Domain","type":"string"},"host_name":{"description":"Host label to create, for example @, www, or mail.","title":"Host Name","type":"string"},"record_type":{"description":"DNS record type. Supported values: A, AAAA, ALIAS, CAA, CNAME, MX, MXE, NS, TXT, URL, URL301, FRAME.","title":"Record Type","type":"string"},"address":{"description":"Record value (IP, hostname, URL, or TXT content depending on type).","title":"Address","type":"string"},"ttl":{"default":1800,"description":"TTL in seconds (60 to 60000). Defaults to 1800.","maximum":60000,"minimum":60,"title":"Ttl","type":"integer"},"mx_pref":{"anyOf":[{"maximum":65535,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"MX preference. Required when record_type is MX or MXE.","title":"Mx Pref"}},"required":["domain","host_name","record_type","address"],"title":"add_dns_hostArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domains":{"description":"Domain names to check (maximum 10).","items":{"type":"string"},"maxItems":10,"minItems":1,"title":"Domains","type":"array"}},"required":["domains"],"title":"check_domain_availabilityArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to look up (for example example.com).","maxLength":253,"title":"Domain","type":"string"},"subdomain":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Optional subdomain label to include (for example www or blog).","title":"Subdomain"}},"required":["domain"],"title":"get_domain_dns_recordsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Managed domain name (for example example.com).","title":"Domain","type":"string"}},"required":["domain"],"title":"get_dns_hostsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Managed domain name to look up (for example example.com).","title":"Domain","type":"string"}},"required":["domain"],"title":"get_managed_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":50,"description":"Maximum number of domains to return.","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"page":{"default":1,"description":"Page number for paginated results.","minimum":1,"title":"Page","type":"integer"}},"title":"list_managed_domainsArguments"}},{"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 availability).\n\nCost = 2 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"search":{"anyOf":[{"maxLength":63,"type":"string"},{"type":"null"}],"default":null,"description":"Return TLDs whose suffix contains this substring.","title":"Search"},"availability":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by registration phase: general-availability (normal public registration) or sunrise (early trademark-holder period).","title":"Availability"},"tld_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by TLD category: country-code, generic, generic-restricted, infrastructure, or sponsored.","title":"Tld Type"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of TLDs to return. Defaults to 100 when omitted.","title":"Limit"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number for paginated results.","title":"Page"}},"title":"list_domain_tldsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to look up (for example example.com).","title":"Domain","type":"string"}},"required":["domain"],"title":"get_domain_lookupArguments"}},{"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 flow categories).\n\nCost = 40 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to analyze (for example example.com).","maxLength":253,"title":"Domain","type":"string"}},"required":["domain"],"title":"get_domain_metricsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to look up (for example example.com).","maxLength":253,"title":"Domain","type":"string"}},"required":["domain"],"title":"get_domain_rdapArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to register (for example example.com).","title":"Domain","type":"string"},"expected_token_cost":{"description":"Token cost from a fresh domains.registration_quote response. Required to prevent surprise charges.","title":"Expected Token Cost","type":"integer"},"contact":{"additionalProperties":true,"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.","title":"Contact","type":"object"},"years":{"default":1,"description":"Registration term in years.","maximum":10,"minimum":1,"title":"Years","type":"integer"},"enable_privacy":{"default":true,"description":"Whether to enable free WhoisGuard privacy protection when available.","title":"Enable Privacy","type":"boolean"}},"required":["domain","expected_token_cost","contact"],"title":"register_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to quote (for example example.com).","title":"Domain","type":"string"},"years":{"default":1,"description":"Registration term in years.","maximum":10,"minimum":1,"title":"Years","type":"integer"}},"required":["domain"],"title":"get_domain_registration_quoteArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Managed domain name (for example example.com).","title":"Domain","type":"string"},"host_id":{"description":"Host record id from domains.get_dns_hosts.","title":"Host Id","type":"string"}},"required":["domain","host_id"],"title":"remove_dns_hostArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Managed domain name to renew (for example example.com).","title":"Domain","type":"string"},"expected_token_cost":{"description":"Token cost from a fresh domains.renewal_quote response. Required to prevent surprise charges.","title":"Expected Token Cost","type":"integer"},"years":{"default":1,"description":"Renewal term in years. Premium domains support 1 year only.","maximum":10,"minimum":1,"title":"Years","type":"integer"}},"required":["domain","expected_token_cost"],"title":"renew_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Managed domain name to quote for renewal (for example example.com).","title":"Domain","type":"string"},"years":{"default":1,"description":"Renewal term in years. Premium domains support 1 year only.","maximum":10,"minimum":1,"title":"Years","type":"integer"}},"required":["domain"],"title":"get_domain_renewal_quoteArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tld":{"description":"TLD suffix to look up without a leading dot (for example io).","maxLength":63,"title":"Tld","type":"string"}},"required":["tld"],"title":"get_domain_tld_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"description":"Domain name to look up (for example example.com).","title":"Domain","type":"string"},"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.","title":"Include Registrar","type":"boolean"}},"required":["domain"],"title":"get_domain_whoisArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_name":{"description":"Relative file name or path to delete. Use files.list_uploaded_files to see available names.","maxLength":255,"title":"File Name","type":"string"}},"required":["file_name"],"title":"delete_fileArguments"}},{"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.15 or newer and run with NODE_OPTIONS=--use-system-ca, or configure npm to trust your network's root certificate.\n\nDownload codes can be resolved within 60 minutes of reserve.\n\nCost = 0 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"file_name":{"description":"Relative file name or path to download. Use files.list_uploaded_files to see available names.","maxLength":255,"title":"File Name","type":"string"}},"required":["file_name"],"title":"download_fileArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"file_name":{"description":"Relative file name or path to extend. Use files.list_uploaded_files and choose a file that includes retained_until.","maxLength":255,"title":"File Name","type":"string"},"additional_retention_days":{"description":"Days to add to the file's retention schedule.","maximum":90,"minimum":1,"title":"Additional Retention Days","type":"integer"}},"required":["file_name","additional_retention_days"],"title":"extend_fileArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"folder":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"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.","title":"Folder"}},"title":"list_uploaded_filesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"source_file_name":{"description":"Current relative file name or path. Use files.list_uploaded_files to see available names.","maxLength":255,"title":"Source File Name","type":"string"},"destination_file_name":{"description":"New relative file name or path. Must not already exist in account storage.","maxLength":255,"title":"Destination File Name","type":"string"}},"required":["source_file_name","destination_file_name"],"title":"move_fileArguments"}},{"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_or_folder_path}` in the terminal. The CLI accepts a file or a folder. A folder uploads every nested file in one command and stores each file under the reserved file_name prefix, preserving relative paths. The CLI resolves the code to signed upload URLs, streams the local file or files to Vee3 storage, and prints each stored file_name after the upload finishes. Use those file_name values in files.list_uploaded_files and other capabilities. The CLI does not need an API key. When a stored file already uses the same name, the upload stops, skips that file, or replaces it.\n\nIf installation fails with a TLS or certificate error (common on networks that inspect HTTPS traffic), use Node 22.15 or newer and run with NODE_OPTIONS=--use-system-ca, or configure npm to trust your network's root certificate.\n\nEach file can be up to 2 GB. One folder upload can include up to 500 files. Retention is chosen at reserve time (default 7 days) and applies to every file in the folder. After each upload is detected, Vee3 bills `max(1, ceil(size_gibibytes * retention_days * 2))` tokens per file. Upload codes can be resolved within 60 minutes of reserve.\n\nUse `files.list_uploaded_files` to list stored uploads for follow-up work.\n\nCost = 0 tokens to reserve. After upload completes, billing is max(1, ceil(size_gibibytes * retention_days * 2)) tokens.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_name":{"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.","maxLength":255,"title":"File Name","type":"string"},"retention_days":{"anyOf":[{"maximum":90,"minimum":1,"type":"integer"},{"type":"null"}],"default":7,"description":"How many days to keep the file after upload completes. Default 7. Billing uses size and this retention.","title":"Retention Days"},"existing_files":{"anyOf":[{"enum":["stop","continue","replace"],"type":"string"},{"type":"null"}],"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.","title":"Existing Files"}},"required":["file_name"],"title":"upload_fileArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_google_maps_languagesArguments"}},{"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 only when pagination cursors are available. Additional upstream fields may appear.\n\nCost = 10 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"location":{"description":"Latitude and longitude of the search point (for example 40,-110).","maxLength":64,"title":"Location","type":"string"},"radius":{"anyOf":[{"maximum":50000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Search radius in meters (default 1000).","title":"Radius"},"open_now":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, return only places open for business at query time.","title":"Open Now"},"min_price":{"anyOf":[{"maximum":4,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Minimum price level (0–4, inclusive).","title":"Min Price"},"max_price":{"anyOf":[{"maximum":4,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum price level (0–4, inclusive).","title":"Max Price"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from cursor_next on a previous response.","title":"Cursor"},"language":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for results (for example en).","title":"Language"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"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.","title":"Region"},"place_type":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict results to a single Google Maps place type (for example restaurant).","title":"Place Type"},"sort_by":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Result ordering: \"Relevance\" (default) or \"Distance\".","title":"Sort By"},"keyword":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null,"description":"Keyword to match nearby places (for example restaurant).","title":"Keyword"}},"required":["location"],"title":"search_google_maps_nearbyArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"description":"Google Maps place identifier (for example ChIJk_grnPDq9EcRE7gOH9gAPZA). Also accepts the business identifier form (for example 0x47f4eb87e91f866d:0x9629fabb993eb66).","maxLength":256,"title":"Place Id","type":"string"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"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.","title":"Region"},"language":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for results (for example en).","title":"Language"}},"required":["place_id"],"title":"get_google_maps_place_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"description":"Google Maps place identifier (for example ChIJk_grnPDq9EcRE7gOH9gAPZA). Also accepts the business identifier form (for example 0x47f4eb87e91f866d:0x9629fabb993eb66).","maxLength":256,"title":"Place Id","type":"string"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"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.","title":"Region"},"language":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for results (for example en).","title":"Language"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from cursor_next on a previous response.","title":"Cursor"}},"required":["place_id"],"title":"get_google_maps_place_photosArguments"}},{"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. Additional upstream fields may appear.\n\nCost = 3 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"description":"Google Maps place identifier (for example ChIJk_grnPDq9EcRE7gOH9gAPZA). Also accepts the business identifier form (for example 0x47f4eb87e91f866d:0x9629fabb993eb66).","maxLength":256,"title":"Place Id","type":"string"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"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.","title":"Region"},"language":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for results (for example en).","title":"Language"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from cursor_next on a previous response.","title":"Cursor"},"sort_by":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Review sort order: \"Relevant\" (default), \"Lowest\", \"Highest\", or \"Newest\".","title":"Sort By"}},"required":["place_id"],"title":"get_google_maps_place_reviewsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_google_maps_place_typesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"review_id":{"description":"Google Maps review identifier.","maxLength":512,"title":"Review Id","type":"string"}},"required":["review_id"],"title":"get_google_maps_review_detailsArguments"}},{"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 may appear.\n\nCost = 10 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search query for places (for example restaurants in Paris).","maxLength":512,"title":"Query","type":"string"},"location":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Optional latitude and longitude bias point (for example 40,-110). A location embedded in the query may override this.","title":"Location"},"radius":{"anyOf":[{"maximum":50000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Search radius in meters (default 1000).","title":"Radius"},"open_now":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, return only places open for business at query time.","title":"Open Now"},"min_price":{"anyOf":[{"maximum":4,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Minimum price level (0–4, inclusive).","title":"Min Price"},"max_price":{"anyOf":[{"maximum":4,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum price level (0–4, inclusive).","title":"Max Price"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from cursor_next on a previous response.","title":"Cursor"},"language":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Language code for results (for example en).","title":"Language"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"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.","title":"Region"},"place_type":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Restrict results to a single Google Maps place type (for example restaurant).","title":"Place Type"}},"required":["query"],"title":"search_google_mapsArguments"}},{"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. Domains that are not managed by Vee3 return DNS TXT instructions so the user or agent can prove ownership, then retry this tool.\n\nAfter a site is added, call google-search-console.list_sites to see it, then use the other Search Console tools.\n\nCost = 10 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"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/).","title":"Site Url","type":"string"}},"required":["site_url"],"title":"add_google_search_console_siteArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"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.","title":"Feed Path","type":"string"},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"}},"required":["feed_path"],"title":"delete_google_search_console_sitemapArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"}},"title":"get_google_search_console_siteArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"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.","title":"Feed Path","type":"string"},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"}},"required":["feed_path"],"title":"get_google_search_console_sitemapArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inspection_url":{"description":"Fully qualified URL to inspect within the selected property.","title":"Inspection Url","type":"string"},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional BCP-47 language code for localized inspection results.","title":"Language Code"}},"required":["inspection_url"],"title":"inspect_google_search_console_urlArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"},"sitemap_index":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional sitemap index URL. When set, only child sitemaps under that index are returned.","title":"Sitemap Index"}},"title":"list_google_search_console_sitemapsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"list_google_search_console_sitesArguments"}},{"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 to ten days.\n\nCost = 20 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start_date":{"description":"Inclusive range start date in YYYY-MM-DD format.","title":"Start Date","type":"string"},"end_date":{"description":"Inclusive range end date in YYYY-MM-DD format.","title":"End Date","type":"string"},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"},"dimensions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"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.","title":"Dimensions"},"search_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Search type filter. Defaults to web.","title":"Search Type"},"row_limit":{"anyOf":[{"maximum":25000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of rows to return. Defaults to 1000.","title":"Row Limit"},"start_row":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Zero-based row offset for pagination. Defaults to 0.","title":"Start Row"},"data_state":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Data State"},"dimension_filter_groups":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"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.","title":"Dimension Filter Groups"}},"required":["start_date","end_date"],"title":"query_google_search_console_search_analyticsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"feed_path":{"description":"Full sitemap URL for the property, for example https://example.com/sitemap.xml.","title":"Feed Path","type":"string"},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"Site Url"}},"required":["feed_path"],"title":"submit_google_search_console_sitemapArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Partial search keywords or phrase.","maxLength":512,"title":"Query","type":"string"}},"required":["query"],"title":"get_google_search_autocompleteArguments"}},{"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 (informational, navigational, commercial, or transactional).\n\nCost = 20 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"keyword":{"description":"Seed keyword to get traffic insights and suggestions for.","maxLength":512,"title":"Keyword","type":"string"},"language":{"description":"Language code for the search market (for example en).","maxLength":16,"title":"Language","type":"string"},"location":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Optional country or region code for localized traffic (for example US). Omit for global keyword insights.","title":"Location"},"mode":{"default":"all","description":"Keyword suggestion filter: exact returns only suggestions that exactly match the seed keyword; all returns all suggestions (default).","title":"Mode","type":"string"},"min_search_volume":{"default":0,"description":"Minimum monthly search volume; only keywords at or above this threshold are returned.","minimum":0,"title":"Min Search Volume","type":"integer"},"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by search intent: informational, navigational, commercial, or transactional.","title":"Intent"}},"required":["keyword","language"],"title":"get_seo_keyword_traffic_insightsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_google_search_languagesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_google_search_locationsArguments"}},{"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).\n\nCost = 20 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"description":"Public http or https URL to get traffic insights and suggestions for.","maxLength":2048,"title":"Url","type":"string"},"language":{"description":"Language code for the search market (for example en).","maxLength":16,"title":"Language","type":"string"},"location":{"anyOf":[{"maxLength":16,"type":"string"},{"type":"null"}],"default":null,"description":"Optional country or region code for localized traffic (for example US). Omit for global URL keyword insights.","title":"Location"},"min_search_volume":{"default":0,"description":"Minimum monthly search volume; only keywords at or above this threshold are returned.","minimum":0,"title":"Min Search Volume","type":"integer"},"intent":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by search intent: informational, navigational, commercial, or transactional.","title":"Intent"}},"required":["url","language"],"title":"get_seo_url_traffic_insightsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_google_trends_categoriesArguments"}},{"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.\n\nCost = 40 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"keywords":{"description":"Up to five keywords to compare.","items":{"type":"string"},"maxItems":5,"minItems":1,"title":"Keywords","type":"array"},"start":{"description":"Range start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100).","maxLength":64,"title":"Start","type":"string"},"end":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Range end in datetime-with-timezone form. Defaults to now.","title":"End"},"country":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Country name for geo filtering. Defaults to global.","title":"Country"},"region":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Region within country. Requires country when set.","title":"Region"},"category":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null,"description":"Trends category or subcategory. Defaults to all.","title":"Category"},"gprop":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Google property filter (for example images, news, youtube, froogle). Defaults to all.","title":"Gprop"},"resolution":{"default":"COUNTRY","description":"Geographic resolution: COUNTRY (default) or REGION.","enum":["COUNTRY","REGION"],"title":"Resolution","type":"string"}},"required":["keywords","start"],"title":"get_google_trends_interest_by_regionArguments"}},{"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 omitted or empty.\n\nCost = 40 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"keywords":{"description":"Up to five keywords to compare.","items":{"type":"string"},"maxItems":5,"minItems":1,"title":"Keywords","type":"array"},"start":{"description":"Range start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100).","maxLength":64,"title":"Start","type":"string"},"end":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Range end in datetime-with-timezone form. Defaults to now.","title":"End"},"country":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Country name for geo filtering. Defaults to global.","title":"Country"},"region":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Region within country. Requires country when set.","title":"Region"},"category":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null,"description":"Trends category or subcategory. Defaults to all.","title":"Category"},"gprop":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Google property filter (for example images, news, youtube, froogle). Defaults to all.","title":"Gprop"}},"required":["keywords","start"],"title":"get_google_trends_interest_over_timeArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_google_trends_regionsArguments"}},{"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-trends.categories and google-trends.regions to discover valid category, country, and region values.\n\nCost = 40 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"keywords":{"description":"Up to five keywords to compare.","items":{"type":"string"},"maxItems":5,"minItems":1,"title":"Keywords","type":"array"},"start":{"description":"Range start in datetime-with-timezone form (for example 2020-05-01T00:43:37+0100).","maxLength":64,"title":"Start","type":"string"},"end":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Range end in datetime-with-timezone form. Defaults to now.","title":"End"},"country":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Country name for geo filtering. Defaults to global.","title":"Country"},"region":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Region within country. Requires country when set.","title":"Region"},"category":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null,"description":"Trends category or subcategory. Defaults to all.","title":"Category"},"gprop":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Google property filter (for example images, news, youtube, froogle). Defaults to all.","title":"Gprop"}},"required":["keywords","start"],"title":"get_google_trends_related_queriesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"keyword":{"description":"Keyword or phrase to get suggestions for.","maxLength":512,"title":"Keyword","type":"string"}},"required":["keyword"],"title":"get_google_trends_suggestionsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"prompt":{"description":"Text description of the image to generate or of the edit to apply.","maxLength":4000,"title":"Prompt","type":"string"},"images":{"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.","items":{"type":"string"},"maxItems":8,"minItems":1,"title":"Images","type":"array"},"n":{"default":1,"description":"Number of images to generate (1 to 10). Each returned image costs 50 tokens.","maximum":10,"minimum":1,"title":"N","type":"integer"},"size":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"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.","title":"Size"},"output_format":{"default":"webp","description":"Encoding of the returned image. webp is smaller; png is lossless.","enum":["webp","png","jpeg"],"title":"Output Format","type":"string"},"file_name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"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.","title":"File Name"}},"required":["prompt","images"],"title":"edit_imageArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"prompt":{"description":"Text description of the image to generate or of the edit to apply.","maxLength":4000,"title":"Prompt","type":"string"},"n":{"default":1,"description":"Number of images to generate (1 to 10). Each returned image costs 50 tokens.","maximum":10,"minimum":1,"title":"N","type":"integer"},"size":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"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.","title":"Size"},"output_format":{"default":"webp","description":"Encoding of the returned image. webp is smaller; png is lossless.","enum":["webp","png","jpeg"],"title":"Output Format","type":"string"},"file_name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"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.","title":"File Name"}},"required":["prompt"],"title":"generate_imageArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tool_name":{"description":"MCP tool name (for example `x-twitter.create_post`) or capability id (for example `create-x-post`).","maxLength":128,"title":"Tool Name","type":"string"}},"required":["tool_name"],"title":"describe_toolArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"list_all_toolsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"group_id":{"description":"Group id to list tools for (for example website-screenshots).","maxLength":128,"title":"Group Id","type":"string"}},"required":["group_id"],"title":"list_group_toolsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"list_groupsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"summary":{"description":"Short title describing the issue.","maxLength":200,"title":"Summary","type":"string"},"description":{"description":"Detailed explanation of what went wrong, what was expected, and steps to reproduce if known.","maxLength":8000,"title":"Description","type":"string"},"related_capability_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"MCP tool name or capability id involved in the issue, if applicable.","title":"Related Capability Id"},"error_details":{"anyOf":[{"maxLength":8000,"type":"string"},{"type":"null"}],"default":null,"description":"Raw error message, stack trace, or API response that shows the failure.","title":"Error Details"}},"required":["summary","description"],"title":"report_bugArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"summary":{"description":"Short title describing the requested capability or feature.","maxLength":200,"title":"Summary","type":"string"},"description":{"description":"Detailed explanation of what is needed, why it cannot be done with existing tools, and how it would help.","maxLength":8000,"title":"Description","type":"string"},"related_capability_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Capability id this request extends or relates to, if applicable.","title":"Related Capability Id"},"use_case":{"anyOf":[{"maxLength":8000,"type":"string"},{"type":"null"}],"default":null,"description":"Example workflow or scenario where this feature would be used.","title":"Use Case"}},"required":["summary","description"],"title":"request_featureArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Keywords or short task description (for example `tiktok video comments` or `domain availability`).","maxLength":256,"title":"Query","type":"string"},"group_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Optional group id to narrow results (for example `x-twitter`).","title":"Group Id"},"limit":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum results to return (1–20).","title":"Limit"}},"required":["query"],"title":"search_toolsArguments"}},{"name":"meta-tools.token_balance","description":"Get the current API token balance for the authenticated account.\n\nReturns tokens used, tokens remaining, monthly allowance, billing plan, and when the allowance resets (billing_period_end). Use this before expensive calls or when you receive a 402 insufficient_tokens response\n\nCost = 0 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_token_balanceArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"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.","maxLength":48,"title":"Slug","type":"string"},"name":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Optional display name for the page. Does not change the public URL. At most 80 characters.","title":"Name"}},"required":["slug"],"title":"createArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id to delete.","title":"Page Id","type":"string"}},"required":["page_id"],"title":"deleteArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id returned by pages.create.","title":"Page Id","type":"string"},"files":{"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.","items":{"additionalProperties":true,"type":"object"},"maxItems":500,"minItems":1,"title":"Files","type":"array"}},"required":["page_id","files"],"title":"deployArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id to update.","title":"Page Id","type":"string"},"name":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"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.","title":"Name"},"slug":{"anyOf":[{"maxLength":48,"type":"string"},{"type":"null"}],"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.","title":"Slug"}},"required":["page_id"],"title":"editArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id to look up.","title":"Page Id","type":"string"}},"required":["page_id"],"title":"getArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":50,"description":"Maximum number of pages to return.","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"page":{"default":1,"description":"Page number for paginated results.","minimum":1,"title":"Page","type":"integer"}},"title":"list_pagesArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id to detach the custom domain from.","title":"Page Id","type":"string"}},"required":["page_id"],"title":"remove_custom_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id to attach the custom domain to.","title":"Page Id","type":"string"},"custom_domain":{"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.","maxLength":253,"title":"Custom Domain","type":"string"}},"required":["page_id","custom_domain"],"title":"set_custom_domainArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"description":"Page id returned by pages.create.","title":"Page Id","type":"string"},"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Inclusive UTC start date (YYYY-MM-DD). Defaults to 6 days before date_to.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Inclusive UTC end date (YYYY-MM-DD). Defaults to today UTC.","title":"Date To"}},"required":["page_id"],"title":"get_statisticsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"celebrity_slug":{"description":"Celebrity slug (for example morgan-freeman).","maxLength":512,"title":"Celebrity Slug","type":"string"}},"required":["celebrity_slug"],"title":"get_rotten_tomatoes_celebrity_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"movie_slug":{"description":"Movie slug (for example shawshank-redemption).","maxLength":512,"title":"Movie Slug","type":"string"}},"required":["movie_slug"],"title":"get_rotten_tomatoes_movie_cast_and_crewArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"movie_slug":{"description":"Movie slug (for example shawshank-redemption).","maxLength":512,"title":"Movie Slug","type":"string"}},"required":["movie_slug"],"title":"get_rotten_tomatoes_movie_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"movie_slug":{"description":"Movie slug (for example shawshank-redemption).","maxLength":512,"title":"Movie Slug","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response pageInfo.endCursor field.","title":"Cursor"},"review_type":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Review filter. Use critic for critic reviews; omit for the default set.","title":"Review Type"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of review pages to return (1–50, default 20).","title":"Limit"}},"required":["movie_slug"],"title":"get_rotten_tomatoes_movie_reviewsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search query for movies, TV series, or celebrities.","maxLength":256,"title":"Query","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of search results to return (1–50, default 20).","title":"Limit"}},"required":["query"],"title":"search_rotten_tomatoesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tv_show_slug":{"description":"TV series slug (for example breaking-bad).","maxLength":512,"title":"Tv Show Slug","type":"string"}},"required":["tv_show_slug"],"title":"get_rotten_tomatoes_tv_show_cast_and_crewArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tv_show_slug":{"description":"TV series slug (for example breaking-bad).","maxLength":512,"title":"Tv Show Slug","type":"string"}},"required":["tv_show_slug"],"title":"get_rotten_tomatoes_tv_show_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tv_show_slug":{"description":"TV series slug (for example breaking-bad).","maxLength":512,"title":"Tv Show Slug","type":"string"},"season_number":{"description":"Season number as one or two digits (for example 1 or 01).","maxLength":2,"title":"Season Number","type":"string"},"episode_number":{"description":"Episode number as one or two digits (for example 1 or 01).","maxLength":2,"title":"Episode Number","type":"string"}},"required":["tv_show_slug","season_number","episode_number"],"title":"get_rotten_tomatoes_tv_show_episodeArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tv_show_slug":{"description":"TV series slug (for example breaking-bad).","maxLength":512,"title":"Tv Show Slug","type":"string"},"season_number":{"description":"Season number as one or two digits (for example 1 or 01).","maxLength":2,"title":"Season Number","type":"string"}},"required":["tv_show_slug","season_number"],"title":"get_rotten_tomatoes_tv_show_seasonArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tv_show_slug":{"description":"TV series slug (for example breaking-bad).","maxLength":512,"title":"Tv Show Slug","type":"string"},"season_number":{"description":"Season number as one or two digits (for example 1 or 01).","maxLength":2,"title":"Season Number","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response pageInfo.endCursor field.","title":"Cursor"},"review_type":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Review filter. Use critic for critic reviews; omit for the default set.","title":"Review Type"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of review pages to return (1–50, default 20).","title":"Limit"}},"required":["tv_show_slug","season_number"],"title":"get_rotten_tomatoes_tv_show_season_reviewsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"description":"Public website URL to check for backlinks.","maxLength":2048,"title":"Url","type":"string"},"include_subdomains":{"default":true,"description":"When true (default), include backlinks to the domain and its subdomains. When false, analyze only the exact URL.","title":"Include Subdomains","type":"boolean"}},"required":["url"],"title":"get_seo_backlinksArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"description":"Public website URL to analyze (for example https://example.com).","maxLength":2048,"title":"Url","type":"string"}},"required":["url"],"title":"get_seo_basic_metricsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"list_seo_country_codesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"keyword":{"description":"Search keyword or phrase to analyze.","maxLength":512,"title":"Keyword","type":"string"},"country":{"default":"us","description":"2-letter ISO country code for the target market (default us). Use seo.country_codes for supported values.","maxLength":2,"title":"Country","type":"string"}},"required":["keyword"],"title":"get_seo_keyword_metricsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"description":"Public page URL to analyze.","maxLength":2048,"title":"Url","type":"string"}},"required":["url"],"title":"get_seo_url_metricsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"description":"TikTok video id.","maxLength":32,"title":"Video Id","type":"string"},"comment_id":{"description":"TikTok comment id.","maxLength":32,"title":"Comment Id","type":"string"},"count":{"anyOf":[{"maximum":40,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of replies to return (max 40).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["video_id","comment_id"],"title":"get_tiktok_comment_repliesArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"music_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok music id.","title":"Music Id"},"music_url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok music page URL.","title":"Music Url"},"file_name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Optional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name.","title":"File Name"}},"title":"download_tiktok_musicArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video id.","title":"Video Id"},"video_url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video URL.","title":"Video Url"},"file_name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Optional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name.","title":"File Name"}},"title":"download_tiktok_music_from_videoArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video id.","title":"Video Id"},"video_url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video URL.","title":"Video Url"},"quality":{"default":"standard","description":"Video quality to download. 'standard' is default quality; 'hd' is high definition. Only one selected quality is downloaded.","enum":["standard","hd"],"title":"Quality","type":"string"},"file_name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Optional account-relative storage path for the video. If omitted, the file is stored under downloads/ with a generated name.","title":"File Name"}},"title":"download_tiktok_videoArguments"}},{"name":"tiktok.for_you_feed","description":"Fetch for-you feed videos for a region. Requires region.\n\nCost = 4 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"region":{"description":"Region code (for example us, jp, kr).","maxLength":8,"title":"Region","type":"string"},"count":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of videos to return (max 20).","title":"Count"}},"required":["region"],"title":"get_tiktok_for_you_feedArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"music_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok music id.","title":"Music Id"},"music_url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok music page URL.","title":"Music Url"}},"title":"get_tiktok_music_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"music_id":{"description":"TikTok music id.","maxLength":64,"title":"Music Id","type":"string"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 30).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["music_id"],"title":"get_tiktok_music_videosArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search keywords.","maxLength":512,"title":"Query","type":"string"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":null,"description":"Region code (for example us, jp, kr).","title":"Region"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 30).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["query"],"title":"search_tiktok_photosArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search keywords.","maxLength":512,"title":"Query","type":"string"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 30).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"},"follower_count":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"0","description":"Follower count filter: 0-4.","title":"Follower Count"}},"required":["query"],"title":"search_tiktok_usersArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search keywords.","maxLength":512,"title":"Query","type":"string"},"region":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":null,"description":"Region code (for example us, jp, kr).","title":"Region"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 30).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"},"publish_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Publish time filter: 0, 1, 7, 30, 90, or 180.","title":"Publish Time"},"sort_by":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"relevance","description":"Sort order: relevance, like_count, or date_posted.","title":"Sort By"}},"required":["query"],"title":"search_tiktok_videosArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"TikTok numeric user id.","maxLength":128,"title":"User Id","type":"string"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 200).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["user_id"],"title":"get_tiktok_user_followersArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"description":"TikTok numeric user id.","maxLength":128,"title":"User Id","type":"string"},"count":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 200).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["user_id"],"title":"get_tiktok_user_followingArguments"}},{"name":"tiktok.user_info","description":"Look up a TikTok user profile. Provide either user_id or unique_id, not both.\n\nCost = 2 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok numeric user id.","title":"User Id"},"unique_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok unique id (username).","title":"Unique Id"}},"title":"get_tiktok_user_infoArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok numeric user id.","title":"User Id"},"unique_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok unique id (username).","title":"Unique Id"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 30).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"title":"get_tiktok_user_repostsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok numeric user id.","title":"User Id"},"unique_id":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok unique id (username).","title":"Unique Id"},"count":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items to return (max 30).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"},"latest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"When true, return latest videos. When false, return top videos.","title":"Latest"}},"title":"get_tiktok_user_videosArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video id.","title":"Video Id"},"video_url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video URL.","title":"Video Url"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of comments to return (max 50).","title":"Count"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"title":"get_tiktok_video_commentsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video id.","title":"Video Id"},"video_url":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"default":null,"description":"TikTok video URL.","title":"Video Url"}},"title":"get_tiktok_video_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"description":"Public http or https URL to capture. Private, localhost, and internal network addresses are blocked.","maxLength":2048,"title":"Url","type":"string"},"full_page":{"default":false,"description":"Capture the full scrollable page. When false, only the viewport area is captured.","title":"Full Page","type":"boolean"},"viewport_width":{"default":1280,"description":"Browser viewport width in pixels.","maximum":3840,"minimum":320,"title":"Viewport Width","type":"integer"},"viewport_height":{"default":720,"description":"Browser viewport height in pixels.","maximum":2160,"minimum":240,"title":"Viewport Height","type":"integer"},"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).","enum":["load","domcontentloaded","networkidle"],"title":"Wait Until","type":"string"},"timeout_seconds":{"default":30,"description":"Maximum seconds to wait for the page to load before failing.","maximum":60,"minimum":5,"title":"Timeout Seconds","type":"integer"},"post_load_wait":{"default":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.","maximum":20,"minimum":0,"title":"Post Load Wait","type":"integer"},"format":{"default":"png","description":"Output image format. 'png' preserves lossless quality (default). 'jpeg' produces smaller files.","enum":["png","jpeg"],"title":"Format","type":"string"},"quality":{"default":80,"description":"JPEG compression quality from 0 (smallest) to 100 (best). Only applies when format is 'jpeg'; ignored for PNG.","maximum":100,"minimum":0,"title":"Quality","type":"integer"},"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.","title":"Dark Mode","type":"boolean"},"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.","title":"Block Cookie Banners","type":"boolean"},"file_name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Optional account-relative storage path for the screenshot. If omitted, the file is stored under downloads/ with a generated name.","title":"File Name"}},"required":["url"],"title":"capture_website_screenshotArguments"}},{"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 = 0 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_x_connected_accountsArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"post_id":{"description":"Numeric id of the post to bookmark.","title":"Post Id","type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"}},"required":["post_id"],"title":"create_x_bookmarkArguments"}},{"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 is required.\n\nSupports text, polls, media attachments, reply settings, paid partnership disclosure, AI-generated labels, super-follower exclusivity, nullcast posts, cards, communities, and direct-message deep links.\n\nTo attach media, upload files with files.upload_file and the @vee3/upload CLI, then pass file_name values returned by files.list_uploaded_files in the media array (up to 4 files). Only files listed by list_uploaded_files can be attached. poll, media, and card_uri are mutually exclusive in the X API.\n\nToken pricing: 60 tokens base for text posts. Posts whose text includes a URL are billed 1000 tokens base instead. Attaching only media (an image or video) without a URL in the text does not trigger the URL rate. Each attached image adds 50 tokens. Each attached video adds 150 tokens plus 50 tokens per 5 MB of video size.\n\nX rate limit: 100 POST /2/tweets requests per connected user per 15 minutes. Wait and retry if posting is temporarily blocked.\n\nIf X authorization fails, reconnect the account in the Vee3 dashboard. Read the error message when X rejects a post and adjust the request.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"text":{"anyOf":[{"maxLength":25000,"type":"string"},{"type":"null"}],"default":null,"description":"Post text content. At least one of text, poll, media, or card_uri is required.","title":"Text"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"},"media":{"default":null,"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.","items":{"type":"string"},"maxItems":4,"minItems":1,"title":"Media","type":"array"},"reply_settings":{"anyOf":[{"enum":["following","mentionedUsers","subscribers","verified"],"type":"string"},{"type":"null"}],"default":null,"description":"Who can reply to the post.","title":"Reply Settings"},"poll":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Poll object with options (2-4 strings) and duration_minutes (5-10080).","title":"Poll"},"paid_partnership":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is a paid partnership.","title":"Paid Partnership"},"made_with_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post contains AI-generated media.","title":"Made With Ai"},"for_super_followers_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is exclusive to super followers.","title":"For Super Followers Only"},"nullcast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is promoted-only and hidden from the public timeline.","title":"Nullcast"},"card_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Card URI for the post. Mutually exclusive with poll and media.","title":"Card Uri"},"community_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Community id when posting to an X community.","title":"Community Id"},"direct_message_deep_link":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Deep link that moves the conversation into Direct Messages.","title":"Direct Message Deep Link"},"share_with_followers":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to share a community post with followers too.","title":"Share With Followers"}},"title":"create_x_postArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"post_id":{"description":"Numeric id of the bookmarked post to remove.","title":"Post Id","type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"}},"required":["post_id"],"title":"delete_x_bookmarkArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"post_id":{"description":"Numeric id of the post to delete.","title":"Post Id","type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"}},"required":["post_id"],"title":"delete_x_postArguments"}},{"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, upload files with files.upload_file and pass file_name values from files.list_uploaded_files.\n\nToken pricing matches x-twitter.create_post: 60 tokens base, 1000 with URL, plus media surcharges.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"post_id":{"description":"Numeric id of the post to edit.","title":"Post Id","type":"string"},"text":{"anyOf":[{"maxLength":25000,"type":"string"},{"type":"null"}],"default":null,"description":"Updated post text.","title":"Text"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"},"media":{"default":null,"description":"File names from files.list_uploaded_files to attach (up to 4). Upload with files.upload_file first.","items":{"type":"string"},"maxItems":4,"minItems":1,"title":"Media","type":"array"},"paid_partnership":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is a paid partnership.","title":"Paid Partnership"},"made_with_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post contains AI-generated media.","title":"Made With Ai"}},"required":["post_id"],"title":"edit_x_postArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of bookmarks to return (default 20, max 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response next_cursor field.","title":"Cursor"}},"title":"get_x_bookmarksArguments"}},{"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 is required, same as x-twitter.create_post.\n\nToken pricing matches x-twitter.create_post.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"reply_to_post_id":{"description":"Numeric id of the post to reply to.","title":"Reply To Post Id","type":"string"},"text":{"anyOf":[{"maxLength":25000,"type":"string"},{"type":"null"}],"default":null,"description":"Reply text content. At least one of text, poll, media, or card_uri is required.","title":"Text"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"},"auto_populate_reply_metadata":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to automatically populate reply metadata.","title":"Auto Populate Reply Metadata"},"exclude_reply_user_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"User ids to exclude from the reply mention list.","title":"Exclude Reply User Ids"},"media":{"default":null,"description":"File names from files.list_uploaded_files to attach (up to 4).","items":{"type":"string"},"maxItems":4,"minItems":1,"title":"Media","type":"array"},"reply_settings":{"anyOf":[{"enum":["following","mentionedUsers","subscribers","verified"],"type":"string"},{"type":"null"}],"default":null,"description":"Who can reply to the post.","title":"Reply Settings"},"poll":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Poll object with options (2-4 strings) and duration_minutes (5-10080).","title":"Poll"},"paid_partnership":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is a paid partnership.","title":"Paid Partnership"},"made_with_ai":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post contains AI-generated media.","title":"Made With Ai"},"for_super_followers_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is exclusive to super followers.","title":"For Super Followers Only"},"nullcast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the post is promoted-only and hidden from the public timeline.","title":"Nullcast"},"card_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Card URI for the post. Mutually exclusive with poll and media.","title":"Card Uri"},"community_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Community id when posting to an X community.","title":"Community Id"},"direct_message_deep_link":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Deep link that moves the conversation into Direct Messages.","title":"Direct Message Deep Link"},"share_with_followers":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether to share a community post with followers too.","title":"Share With Followers"}},"required":["reply_to_post_id"],"title":"reply_to_x_postArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"post_id":{"description":"Numeric id of the post to repost.","title":"Post Id","type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"}},"required":["post_id"],"title":"repost_x_postArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search keywords or phrase.","maxLength":512,"title":"Query","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response next_cursor field.","title":"Cursor"},"search_type":{"default":"Top","description":"Result ranking mode.","enum":["Top","Latest","Media","People","Lists"],"title":"Search Type","type":"string"}},"required":["query"],"title":"search_xArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"description":"Numeric tweet id.","maxLength":32,"title":"Id","type":"string"}},"required":["id"],"title":"get_x_tweet_infoArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"description":"Numeric tweet id.","maxLength":32,"title":"Id","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response next_cursor field.","title":"Cursor"}},"required":["id"],"title":"get_x_tweet_repliesArguments"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"post_id":{"description":"Numeric id of the original post to unrepost.","title":"Post Id","type":"string"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"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.","title":"User Name"}},"required":["post_id"],"title":"unrepost_x_postArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_name":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"X handle without the leading @ (for example elonmusk). Required when rest_id is omitted.","title":"User Name"},"rest_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Numeric X user id (rest_id). When provided, user_name is ignored.","title":"Rest Id"}},"title":"get_x_user_infoArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"user_name":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"X handle without the leading @ (for example elonmusk). Required when rest_id is omitted.","title":"User Name"},"rest_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Numeric X user id (rest_id). When provided, user_name is ignored.","title":"Rest Id"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response next_cursor field.","title":"Cursor"}},"title":"get_x_user_timelineArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"channel_id":{"description":"YouTube channel id or URL (for example UCJ5v_MCY6GNUBTO8-D3XoAg or https://www.youtube.com/@WWE).","maxLength":2048,"title":"Channel Id","type":"string"}},"required":["channel_id"],"title":"get_youtube_channel_detailsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"channel_id":{"description":"YouTube channel id (for example UCJ5v_MCY6GNUBTO8-D3XoAg, not a URL).","maxLength":24,"title":"Channel Id","type":"string"},"query":{"description":"Search keywords or phrase within the channel.","maxLength":512,"title":"Query","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from cursorNext.","title":"Cursor"}},"required":["channel_id","query"],"title":"search_youtube_channelArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"channel_id":{"description":"YouTube channel id or URL (for example UCg6gPGh8HU2U01vaFCAsvmQ or https://www.youtube.com/@ChrisTitusTech).","maxLength":2048,"title":"Channel Id","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response cursor field.","title":"Cursor"}},"required":["channel_id"],"title":"get_youtube_channel_videosArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"playlist_id":{"description":"YouTube playlist id (for example PLcirGkCPmbmFeQ1sm4wFciF03D_EroIfr).","maxLength":512,"title":"Playlist Id","type":"string"}},"required":["playlist_id"],"title":"get_youtube_playlist_detailsArguments"}},{"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_by: Relevance, Upload date, View count, Rating\n\nFilter values are matched case-insensitively. Only one option per group applies except features, which accepts multiple labels.\n\nWhen a requested filter cannot be applied, the API returns the best-effort results available so far and includes unappliedFilters with the labels that were skipped.\n\nUse cursor with the same query to paginate: pass cursorNext from a prior response. Filter parameters and cursor cannot be combined.\n\nCheck didYouMean when the query may be misspelled.\n\nCost = 20 tokens.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Search keywords or phrase.","maxLength":512,"title":"Query","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from cursorNext.","title":"Cursor"},"language":{"default":"en","description":"Language code for localized results (for example en).","maxLength":10,"title":"Language","type":"string"},"location":{"default":"US","description":"Country code for localized results (for example US).","maxLength":10,"title":"Location","type":"string"},"upload_date":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Upload date filter. One of: Last hour, Today, This week, This month, This year.","title":"Upload Date"},"content_type":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Content type filter. One of: Video, Channel, Playlist, Movie.","title":"Content Type"},"duration":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Duration filter. One of: Under 4 minutes, 4 - 20 minutes, Over 20 minutes.","title":"Duration"},"features":{"anyOf":[{"items":{"type":"string"},"maxItems":6,"type":"array"},{"type":"null"}],"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.","title":"Features"},"sort_by":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Sort order. One of: Relevance, Upload date, View count, Rating.","title":"Sort By"}},"required":["query"],"title":"search_youtubeArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Partial search keywords or phrase.","maxLength":512,"title":"Query","type":"string"},"language":{"default":"en","description":"Language code for localized suggestions (for example en).","maxLength":10,"title":"Language","type":"string"},"location":{"default":"US","description":"Country code for localized suggestions (for example US).","maxLength":10,"title":"Location","type":"string"}},"required":["query"],"title":"get_youtube_search_autocompleteArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"description":"YouTube video id (11 characters, not a URL).","maxLength":11,"title":"Video Id","type":"string"},"cursor":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response cursorNext field.","title":"Cursor"},"sort_by":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}],"default":null,"description":"Comment sort order. One of: Top comments, Newest first.","title":"Sort By"}},"required":["video_id"],"title":"get_youtube_video_commentsArguments"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_id":{"description":"YouTube video id or URL (for example PuQFESk0BrA, https://youtu.be/PuQFESk0BrA, or https://www.youtube.com/watch?v=PuQFESk0BrA).","maxLength":2048,"title":"Video Id","type":"string"}},"required":["video_id"],"title":"get_youtube_video_detailsArguments"}}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-26T16:34:00.943Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T16:34:00.937Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1456ms"]},"poisoning":{"score":15,"max":15,"notes":["269 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":12,"max":15,"notes":["last push 68 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.vee3.io/mcp","reachable":true,"authRequired":false,"latencyMs":1456,"serverInfo":{"name":"Vee3","version":"1.27.1"}}],"packages":[],"repo":{"found":true,"owner":"Vee3io","repo":"vee3","archived":false,"pushedAt":"2026-07-20T11:50:08Z","stars":1,"forks":1,"openIssues":2,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/291789843?v=4","ownerCreatedAt":"2026-06-08T12:59:22Z","license":"MIT"},"icon":{"url":"https://vee3.io/brand/favicon_white_black_bg.png","source":"site","width":1024,"height":1024},"presence":{"stars":1,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-07-20T11:50:08.000Z","score":21}}}},"grade_history":[],"reviews":[]}