Allowance MCP
Let agents buy safely.
Payment security for AI agents. Allowance lets agents request scoped human approval, receive limited virtual cards, complete checkout, and report receipts without exposing the human's real card.
https://mcp.useallowance.comAuthentication
Connect using OAuth. The hosted endpoint will direct MCP clients to the authorization server when they need a bearer token.
- Required for tool calls:
true - Supported scheme:
oauth2 - OAuth protected resource metadata:
/.well-known/oauth-protected-resource/ - OAuth authorization server metadata:
/.well-known/oauth-authorization-server
Tools
create_one_time_card
Create a scoped one-time card number for a human who explicitly wants card details now. This is not the default "buy/order this for me" checkout flow; use request_purchase_approval for agent-managed shopping and checkout. Inputs: expected_cents is the card spend cap in cents. merchant and reason are optional; when omitted, Allowance uses generic one-time-card labels for the approval request. Include merchant_url when known. This tool returns immediately after creating the approval request. If the response is pending, it includes approval_url, approval_link, and user_message. Show user_message to the human, then immediately call wait_for_one_time_card with the returned allowance_request_id in the same turn. Do not stop after creating the request, and do not wait for the human to say they approved.
Parameters
expected_cents(integer, required): Expected purchase amount in cents, including estimated tax and shipping.merchant(string, optional): Merchant or store where the agent intends to make the purchase.reason(string, optional): Human-readable approved purchase intent and criteria. It is shown to the human; Allowance does not parse or enforce it.currency(string, optional): Three-letter ISO currency code for the expected amount.merchant_url(string, optional): Optional product, cart, or checkout URL for the intended purchase.expires_at(string, optional): Optional ISO 8601 timestamp for when the approval request should expire.allowance_expires_at(string, optional): Optional allowance expiry: an ISO 8601 date/time, "default" (or null) for 24 hours after approval, or "max" for two weeks after approval.timeout_seconds(number, optional): Maximum number of seconds to wait before returning the current status.checkout_merchant(string, optional): Merchant name shown at checkout where the card will be used.checkout_url(string, optional): Optional checkout page URL where the card will be used.
Behavior hints
wait_for_one_time_card
Wait for a pending one-time-card request, then issue the scoped card and return a secure reveal link after approval. Use this immediately after create_one_time_card returns a pending allowance_request_id, and use it again with the same id if a wait times out while the human is still approving. Inputs: allowance_request_id is the id returned by create_one_time_card. expected_cents is the card spend cap in cents. timeout_seconds controls how long this call waits for iPhone approval before returning pending; default is 120 seconds and the maximum is 600 seconds. checkout_merchant and checkout_url are optional checkout context for issuing the card after approval. If approved and ready, show only reveal_url to the human. Never show a card number, payment expiry, CVV, or an internal attempt id in chat. The reveal link is short-lived; its expiration is validated when opened, so this tool does not return a separate expiry. If card authorization is required, ask the human to approve on their phone and call wait_for_one_time_card again with the same allowance_request_id. If the request is still pending at timeout, show user_message to the human, then call wait_for_one_time_card again with the same allowance_request_id.
Parameters
allowance_request_id(string, required): Allowance request identifier returned when the request was created.expected_cents(integer, required): Expected purchase amount in cents, including estimated tax and shipping.timeout_seconds(number, optional): Maximum number of seconds to wait before returning the current status.checkout_merchant(string, optional): Merchant name shown at checkout where the card will be used.checkout_url(string, optional): Optional checkout page URL where the card will be used.
Behavior hints
request_purchase_approval
Create an iPhone approval request for a specific purchase intent. This does not issue a card or move money. expected_cents is the approved all-in ceiling; reason is the human-readable approved intent and criteria; merchant is optional and only restricts the card when supplied. Include merchant_url when known. allowance_expires_at accepts an ISO 8601 date/time, null or "default" for 24 hours from approval, or "max" for two weeks from approval. If the response is pending, it includes approval_url and approval_link for the human to approve in Allowance. Immediately call wait_for_purchase_approval with the returned allowance_request_id. Do not create a duplicate request while one is pending. If the response is failed, explain the failure naturally and stop unless the human changes the request.
Parameters
expected_cents(integer, required): Expected purchase amount in cents, including estimated tax and shipping.reason(string, required): Human-readable approved purchase intent and criteria. It is shown to the human; Allowance does not parse or enforce it.merchant(string, optional): Merchant or store where the agent intends to make the purchase.requires_shipping(boolean, optional): Whether the intended purchase requires a shipping address.currency(string, optional): Three-letter ISO currency code for the expected amount.merchant_url(string, optional): Optional product, cart, or checkout URL for the intended purchase.expires_at(string, optional): Optional ISO 8601 timestamp for when the approval request should expire.allowance_expires_at(string, optional): Optional allowance expiry: an ISO 8601 date/time, "default" (or null) for 24 hours after approval, or "max" for two weeks after approval.
Behavior hints
wait_for_purchase_approval
Wait for a purchase approval request to become approved, denied, canceled, expired, failed, or timed out. Use this immediately after request_purchase_approval returns a pending allowance_request_id, and use it again with the same id if a wait times out while the human is still approving. If approved, the result is authoritative for allowance_id, requires_shipping, and shipping_overridden_by_user. Complete checkout using your available capability. If denied, canceled, expired, or failed, tell the human and do not retry automatically.
Parameters
allowance_request_id(string, required): Allowance request identifier returned when the request was created.timeout_seconds(number, optional): Maximum number of seconds to wait before returning the current status.
Behavior hints
get_checkout_context
Fetch the approved checkout context: allowance metadata, final shipping truth, contact details, shipping address, and billing address. Use only after approval and only when checkout asks for contact, shipping, or billing fields. Use the returned contact fields for name, email, and phone. Use shipping only when final requires_shipping is true. Use billing when the merchant asks for billing fields. Do not ask the human to reconfirm these non-secret details after approval unless the tool returns missing data. This tool never returns card number, expiry, or CVV.
Parameters
allowance_id(string, required): Allowance identifier returned by an approved request.
Behavior hints
issue_card
Issue scoped virtual card credentials for an approved checkout allowance. Keep the returned card fields private by default. Use only when the merchant payment form is visible and ready for card entry with the final amount known. Do not call while still browsing products, cart, login, shipping, delivery, discounts, or review pages; issued cards have a short TTL. Pass allowance_id, expected_cents for the final charge, checkout_merchant as shown on the checkout page, and checkout_url when available. Type returned card credentials directly into the merchant form through browser automation unless the human explicitly asks to see them; then show the returned card number, payment expiry, CVV, network, and limit in chat. If status is pending_auth, ask the human to approve on their phone, then call complete_purchase_auth. If the amount exceeds approval, stop and ask the human to update the allowance in the app before continuing.
Parameters
allowance_id(string, required): Allowance identifier returned by an approved request.expected_cents(integer, required): Expected purchase amount in cents, including estimated tax and shipping.checkout_merchant(string, required): Merchant name shown at checkout where the card will be used.checkout_url(string, optional): Optional checkout page URL where the card will be used.
Behavior hints
complete_purchase_auth
Complete a payment/card authorization challenge after issue_card returned pending_auth. Use only for that case. Ask the human to approve on their phone, then call this with allowance_id and attempt_id. If this returns card credentials, type them directly into the merchant form unless the human explicitly asks to see them; then show the returned card number, payment expiry, CVV, network, and limit in chat. If checkout still needs contact/address fields, use get_checkout_context separately.
Parameters
allowance_id(string, required): Allowance identifier returned by an approved request.attempt_id(string, required): Purchase attempt identifier returned when a virtual card was issued.
Behavior hints
report_purchase_result
Close out a local checkout attempt after the merchant succeeds or fails. Always call this for local checkout, including failures after a card was issued. For success, pass status="success", allowance_id, attempt_id, and charged_cents. For failure, pass status="failure" or status="failed", allowance_id, attempt_id, error_code, and merchant_message when available. error_code must be one of: card_declined, card_declined_avs, card_declined_cvv, checkout_abandoned, checkout_error, checkout_timeout, item_unavailable, merchant_rejected, price_mismatch, unsupported_card. If the payment processor or merchant returns a code outside this list, use checkout_error and include the raw merchant message when useful.
Parameters
allowance_id(string, required): Allowance identifier returned by an approved request.attempt_id(string, required): Purchase attempt identifier returned when a virtual card was issued.status(string, required): Purchase result status.charged_cents(integer, optional): Final charged amount in cents after checkout completed.error_code(string, optional): Machine-readable purchase failure reason from the supported error-code list. Allowed values:card_declined,card_declined_avs,card_declined_cvv,checkout_abandoned,checkout_error,checkout_timeout,item_unavailable,merchant_rejected,price_mismatch,unsupported_card.merchant_message(string, optional): Optional checkout or card-decline message shown by the merchant.
Behavior hints
manage_allowances
View or manage existing allowances. This is account management, not part of the normal purchase checkout path. Use action="list" to list allowances. List output is intentionally concise and limited by default; summarize the returned rows and use action="get" with allowance_id to inspect one allowance in full detail, including after the human updates a cap in the app. Use action="purchase_attempts" with allowance_id to inspect attempts. Use action="pause" or action="revoke" only when the human explicitly asks for that account-management action. Revocation is permanent and cannot be undone; get explicit human confirmation before revoke.
Parameters
action(string, optional): Operation to perform within this grouped Allowance tool.allowance_id(string, optional): Allowance identifier returned by an approved request.limit(integer, optional): Maximum number of list items to return in concise MCP output.