Authoryze
Server Details
Give your AI agent a spending limit: approval controls and single-use virtual cards.
- Status
- Healthy
- OAuth
- Not checked
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- kevinfee3/authoryze-mcp
- GitHub Stars
- 0
Available Tools
4 toolscheck_statusCheck purchase request statusARead-onlyInspect
Check the current status of a purchase request. Read-only: it never issues, draws, or reveals a card. Returns the status (and the denial reason when denied). When approved, it reports a retrievable boolean: true means the single-use card has not been drawn yet, so call retrieve_card ONCE when you are ready to pay; false means the card was already retrieved and cannot be shown again (start a new purchase if you need another). Safe to poll while a request is pending_review or processing.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The request_id returned by request_purchase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description explains the meaning of the retrievable boolean and the status values, and clarifies that it never issues, draws, or reveals a card. This adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a bit verbose but well-structured, covering all necessary aspects without unnecessary fluff. It is front-loaded with the primary purpose and then details conditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a status-checking tool, the description covers all essential aspects: what it does, what the returned boolean means, how to proceed, and when polling is safe. It is complete for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The request_id parameter is described as 'The request_id returned by request_purchase', which links it to a sibling tool and provides context. Since schema coverage is 100%, the description adds value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the current status of a purchase request, which is distinct from sibling tools like retrieve_card (which retrieves the card) and get_spending_summary (which shows spending).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to call retrieve_card once when approved and retrievable is true, and notes it is safe to poll while pending. This gives clear when-to-use guidance and directs to the appropriate sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spending_summaryGet spending summaryARead-onlyInspect
Get current spending vs. configured limits. Per-agent fields (daily_spent, weekly_spent, monthly_spent, total_budget_spent) reflect rules set on this agent. The optional user_aggregate object reports the owner's cross-agent caps — these apply across every agent on the account and will deny a purchase even if this agent's per-agent rules are not exceeded. Only configured limits appear in the response.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description adds valuable behavioral context: only configured limits appear, the optional user_aggregate object covers account-wide caps, and those caps can deny a purchase even when per-agent rules are not exceeded. This goes well beyond the annotation and clarifies how the read-only result should be interpreted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, with the main purpose front-loaded and each subsequent sentence adding meaningful detail about response behavior. No filler or repetition of annotation/structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the responsibility of explaining the response. It names the relevant fields, distinguishes per-agent from account-wide limits, and notes the conditional presence of limits. This is sufficient for an agent to correctly invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden for the description to carry. The description instead explains the meaning of the response fields and the optional user_aggregate object, which is appropriate given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Get current spending vs. configured limits') and lists the exact fields returned. It is clearly distinct from siblings like request_purchase (a mutation) and retrieve_card (card data), so an agent can tell what this tool is for without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what the tool returns and explains the per-agent versus cross-agent distinction, making its purpose obvious. It does not explicitly state when not to use it or name alternatives, but with only zero parameters and clearly distinct siblings, the implied usage is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_purchaseRequest a purchaseADestructiveInspect
Submit a purchase request. Returns approved, pending_review, denied (with reason), or failed (a recoverable error, safe to retry, though some failures such as a missing Privacy.com key need the account owner to fix a setting first). A request that looks like a duplicate of another recent purchase on the account (same merchant and amount) is NOT auto-approved — it is escalated to pending_review for the account owner to approve, so poll check_status rather than retrying. IMPORTANT for retries: pass a stable idempotency_key that identifies this one distinct purchase intent, and reuse the SAME key if you retry after a timeout or error. Retries with the same key never issue a second card or charge a second fee — they return the original request's result. Use a fresh key only for a genuinely new, separate purchase.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Purchase amount in the specified currency | |
| currency | No | ISO 4217 currency code, defaults to USD | |
| description | Yes | What is being purchased | |
| merchant_url | Yes | Merchant domain (e.g. amazon.com, aws.amazon.com). Required. Used for whitelist/blacklist matching with subdomain support, so 'amazon.com' on the whitelist allows aws.amazon.com. | |
| category_hint | No | Merchant category slug (e.g. cloud_compute, software_saas) | |
| justification | Yes | Why this purchase is needed. Required for all requests | |
| merchant_name | No | Optional human-readable merchant name (e.g. 'AWS', 'GitHub') | |
| idempotency_key | No | Stable key for this one purchase intent. Reuse the SAME key when retrying so retries don't double-charge or double-issue a card (the server dedups on it atomically). Generate a fresh key only for a genuinely new purchase. Independent of the key, the server also runs a best-effort near-duplicate check on (merchant, amount) across the whole account and escalates suspected duplicates to owner approval; passing a stable key is still strongly recommended because it is the only fully atomic protection against concurrent double-submits. | |
| merchant_country_code | Yes | ISO 3166-1 alpha-2 country code of the MERCHANT (the store being purchased from, not the user's country). Required. Examples: 'US', 'GB', 'DE', 'CA', 'AU'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, so the mutation is known, but the description goes much further. It discloses the exact return states (approved, pending_review, denied with reason, failed), explains the duplicate-detection behavior (escalated to pending_review rather than auto-approved), and details idempotency guarantees for retries (no double card or fee). It also surfaces a specific failure mode (missing Privacy.com key) and its remedy. This is exceptional transparency beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but is well-structured: it opens with the core action, then covers return values, retry safety, duplicate handling, and idempotency guidance in logical order. Every sentence adds necessary information for correct invocation and error recovery. It is longer than minimal but not padded; the complexity of the tool justifies the length. A slight improvement would be breaking into bullets, but it remains highly readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 params, 5 required, no output schema), the description is thorough. It explains the return states and error handling, which substitutes for an output schema. It covers retry behavior and duplicate escalation. It does not explicitly detail prerequisites like authentication, but that is likely implicit in the platform context. For a mutation tool with this much nuance, the description is nearly complete, missing only minor operational details like timeout expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with every parameter described, so the baseline is 3. The description adds behavioral context for idempotency_key and merchant_url (whitelist matching), but these are already covered in the schema descriptions with comparable detail. The description does not introduce new parameter semantics beyond the schema; it reinforces but doesn't extend them, so 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Submit a purchase request.' This clearly states the action and what it acts on. The tool's function is unambiguous and distinct from siblings like check_status, get_spending_summary, and retrieve_card, which are all read-oriented; there is no confusion about which one to invoke for creating a purchase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to use this tool versus alternatives: after submitting, 'poll check_status rather than retrying' directly names the sibling used for follow-up. It also provides retry guidance (reuse same idempotency_key) and clarifies when a fresh key is appropriate ('only for a genuinely new, separate purchase'). These are concrete, actionable usage guidelines that leave no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_cardRetrieve the single-use cardADestructiveInspect
Draw and return the single-use virtual card for an APPROVED purchase request. Call this exactly ONCE, only when you are ready to pay. The card details (number, expiry, CVC) are returned inline and shown a SINGLE time — store them immediately and complete the purchase. Drawing the card consumes the purchase's spending envelope, so do NOT call this speculatively, to poll status (use check_status for that), or more than once. There is no re-draw: a second call returns already_retrieved. If the request is not yet approved, call check_status and wait until it is. The response also returns cardholder_name and billing_address (line1, line2, city, state, postal_code, country_code). Use them verbatim for the BILLING section of checkout: they are what the card issuer has on file, and the merchant's address check (AVS) compares against them, so substituting anything else will get the purchase declined. Any field the account owner has not filled in is null; if the merchant requires a field that came back null, say so rather than inventing a value. These are NOT a shipping address. If checkout needs somewhere to deliver to, ask the user for a shipping address separately and never reuse the billing address for it unless the user tells you they are the same.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The request_id returned by request_purchase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only carry destructiveHint: true, but the description adds critical behavioral context: the card is shown only once, a second call returns already_retrieved, and drawing consumes the spending envelope. It also explains AVS implications and the singleton nature of the display. This goes well beyond the annotation and is not contradicted by it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries weight — usage constraints, response fields, billing address handling, and null-value guidance are all essential. It is front-loaded with the most critical constraint ('Call exactly ONCE') and remains focused. Slightly long, but justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (single-use, spending envelope, AVS, null handling), the description covers all relevant aspects: when to call, what it returns, how to use billing address vs shipping address, and how to handle missing data. There is no output schema, so the description must convey response behavior, and it does thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single request_id parameter, and its description ('The request_id returned by request_purchase') is adequate. The tool description does not add extra parameter detail beyond that, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Draw and return') and the resource ('single-use virtual card for an APPROVED purchase request'), and explicitly distinguishes it from the sibling check_status by saying 'use check_status for that.' It is unambiguous about what the tool does and what it does not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use ('only when you are ready to pay'), when-not-to-use ('do NOT call this speculatively, to poll status, or more than once'), names the alternative tool (check_status), and instructs waiting for approval before calling. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
- First observed
check_status - First observed
get_spending_summary - First observed
request_purchase - First observed
retrieve_card
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
AI agent spending controls. Set limits, blocklists, and caps. Approve transactions from your phone.
Prepaid virtual cards for AI agents: one-time cards, spend caps, human approvals.
Payment infrastructure for AI agents: spending rules, approval flows, single-use virtual cards.
Budget & cost control for AI agents — per-agent spend caps + rate limits before each call.
Related MCP Servers
- AlicenseAqualityDmaintenanceSpending limits for AI agents. Create budgets, enforce limits, track spend across x402, cards, MPP, or any payment rail.718Apache 2.0
- -licenseNot gradedqualityDmaintenanceEnables AI agents to manage and use prepaid virtual Visa cards with hard budget limits for secure online transactions. It provides tools for creating cards, checking balances, and retrieving payment credentials with human-in-the-loop approvals.1-

Shatale MCP Serverofficial
AlicenseAqualityAmaintenanceAI-native payment infrastructure that enables AI agents to make purchases, issue virtual cards, and manage spending within delegated budgets and policy controls.7871MIT- AlicenseNot gradedqualityCmaintenanceAgentPay is the authorization layer between an AI agent and real spending. You define the rules — spending caps, allowed merchants, time windows — and every purchase attempt the agent makes is checked against them in real time. Approved transactions go through. Anything outside the mandate is blocked and logged. No more babysitting every agent action. No more runaway charges.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a distinct role in the purchase lifecycle: submitting, checking status, retrieving the card, and viewing spending limits. The descriptions carefully separate read-only status checks from the one-time card draw.
All tool names follow a clear verb_noun pattern: check_status, get_spending_summary, request_purchase, retrieve_card. The style is consistent and each verb accurately signals the action.
Four tools cover the full purchase request workflow without unnecessary extras. Each tool addresses a distinct and necessary step, and the count feels appropriately scoped for the server's purpose.
The core lifecycle of request, status check, card retrieval, and spending visibility is well covered. Minor gaps exist, such as no explicit way to cancel a pending request or list historical purchases, but agents can work around these.