Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

sh.agentcard/agentcard

REMOTE · MCP.AGENTCARD.SH

Prepaid virtual cards for AI agents: one-time cards, spend caps, human approvals.

Available components

0 this week 90 Trust /100

Last scanned (5 hours ago)

Scores higher than 98% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security89
Transport & Reachability100
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 9985 tokens (~181/item across 55 items; 55 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety96
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 5 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_preset" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Partial
  • An AI judge read all 56 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 31 Oct 26 0
    • Tool “add_funds” rewrote its description, which is the text the model reads security
    • “add_funds” reworded the description of “payment_method” cosmetic
  • 24 Oct 26 +1
    • Stability: fail → pass ▲ security
    • Tool “buy_list_merchants” rewrote its description, which is the text the model reads security
    • Tool “get_wallet_link” rewrote its description, which is the text the model reads security
    • “get_wallet_link” reworded the description of “purpose” cosmetic
  • 21 Oct 26 0
    • Tool “buy_list_merchants” rewrote its description, which is the text the model reads security
    • “buy_list_merchants” added an optional parameter “cursor” cosmetic
    • “buy_list_merchants” added an optional parameter “kind” cosmetic
    • “buy_list_merchants” added an optional parameter “query” cosmetic
  • 8 Oct 26 0
    • Tool “get_card_details” rewrote its description, which is the text the model reads security
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 0
    • Stability: pass → fail ▼ security
    • A breaking change shipped without a version bump: still 1.0.0 ▼ security
    • Tool “create_withdrawal_recipient” was removed ▼ security
    • Tool “list_withdrawal_recipients” was removed ▼ security
    • Tool “withdraw” was removed ▼ security
  • 23 Sept 26 0
    • Stability: fail → pass ▲ security
    • Tool “get_plan” rewrote its description, which is the text the model reads security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://mcp.agentcard.sh/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.agentcard.sh CN=WE1,O=Google Trust Services,C=US 23 Sept 2026 23 Dec 2026 ECDSA 256 ECDSA-SHA256 2772b3a9b5a9d0ec13770e52ed51b488
SANs: mcp.agentcard.sh
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.agentcard.sh. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
sh. present 34349 8 Verified
agentcard.sh. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.agentcard.sh/.well-known/oauth-protected-resource/mcp"

Bearer resource_metadata="https://mcp.agentcard.sh/.well-known/oauth-protected-resource/mcp"

Protected resource metadata

Document https://mcp.agentcard.sh/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://mcp.agentcard.sh/mcp
Authorisation server https://mcp.agentcard.sh/

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.agentcard.sh/mcp Verified 200
http (plaintext) http://mcp.agentcard.sh/mcp HTTPS enforced 301 https://mcp.agentcard.sh/mcp
MCP tools · 55 exposed · ~9,951 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
start_support_chat ~31

Start a new support conversation and send the first message

NameTypeReqDescription
messagestringyesYour initial support message
NameTypeReqDescription
conversationIdstring–The ID of the newly created support conversation. Pass this to send_support_message or read_support_chat.
messagestringyesHuman-readable summary confirming the conversation was started.

No examples provided.

submit_kyc_document ~527

Submit the user's ID photo for identity verification. Ways in: (a) image data you hold programmatically (e.g. the user sent the photo in this chat and your platform exposes its bytes) — pass front_base64 (and back_base64 for a license back; its barcode reads most accurately); (b) local (stdio) mode — pass file_path/back_file_path and the file is read from disk; (c) neither — you get a secure upload link to hand the user. Do NOT ask the user what kind of document it is or where it was issued — the type and country are detected automatically from the photo; only relay a question if the result says the type could not be determined. Returns the fields read off the document — SHOW THEM TO THE USER for confirmation before continuing — plus whatever is still missing. If the result says NO identity details could be read, the image did not read as an ID at all: never insist to the user that it was their ID. Supported: JPEG/PNG/WebP up to 12MB (convert HEIC or HEIF photos first).

NameTypeReqDescription
back_base64string–Base64 image bytes of the license back (optional, recommended — the barcode reads most accurately). Same rule: programmatically sourced only.
back_file_pathstring–Local path to the back of the license (optional, recommended). Local/stdio connections only.
back_mime_typestring–MIME type of back_base64. Defaults to image/jpeg.
document_typestring–ONLY pass this when the user themselves said what the document is ("here's my license") — otherwise omit it; the type is detected from the photo. Never ask up front.
file_pathstring–Local path to the ID photo (front of license, or passport photo page). Local/stdio connections only — remote connections without image data receive an upload link instead.
front_base64string–Base64 image bytes of the ID front (or passport photo page). ONLY pass base64 you received programmatically from your platform (e.g. an injected chat attachment) — never type or reconstruct image byt…
front_mime_typestring–MIME type of front_base64 (image/jpeg, image/png, image/webp). Defaults to image/jpeg.
issuing_countrystring–2-letter ISO country that issued the document (e.g. US, AR). ONLY when the user volunteered it — otherwise omit; it is detected from the photo. Never ask up front.
NameTypeReqDescription
extractedobject–Fields read from the document (confirm with the user).
messagestringyes–
missingFieldsarray––
nextStepstring|null––
statusstring–processed | document_expired | upload_failed | upload_link_provided
unreadableboolean–True when the image was received but NO identity fields could be read from it — it did not read as an ID; never assert to the user that it was one.
uploadUrlstring––
verificationUrlstring––

No examples provided.

submit_kyc_fields ~452

Submit identity fields for verification: the ones the ID photo didn't carry (listed by missingFields — the tax/ID number always has to be asked since IDs don't print it; call it "SSN" only for US documents and "national ID number" otherwise), corrections to extracted values the user flagged, and the User Agreements acceptance (agreements_accepted, after presenting each agreement verbatim). That number is forwarded directly to the verification provider and never stored by Agentcard. NEVER ask about occupation, income, spending volume, or account purpose — those are filled automatically and must not be asked.

NameTypeReqDescription
address_citystring–City of the residential address.
address_country_codestring–2-letter ISO country code (e.g. US).
address_line1string–Residential street address, line 1 (e.g. 123 Main St).
address_line2string–Residential street address, line 2 — apartment, suite, or unit. Omit if none.
address_postal_codestring–Postal / ZIP code of the residential address.
address_regionstring–2-letter state code for US (e.g. CA).
agreements_acceptedarray–Keys of the User Agreements the user explicitly accepted, one by one — the FULL required set from the agreements list in the previous step's result. Only pass after presenting each agreement verbatim…
date_of_birthstring–YYYY-MM-DD
first_namestring–Legal first name, exactly as printed on the ID document.
last_namestring–Legal last name, exactly as printed on the ID document.
phone_numberstring–E.164 with country code, e.g. +14155551234.
ssnstring–US documents: 9-digit SSN, dashes optional. Non-US documents: the national ID / tax number printed on the ID. Forward-only — never stored.
terms_acceptedboolean–DEPRECATED — use agreements_accepted. true once the user explicitly accepted the card issuer's cardholder terms.
NameTypeReqDescription
messagestringyes–
missingFieldsarray––
nextStepstring|null––
verificationUrlstring–Face-scan link, present once everything is collected.

No examples provided.

submit_user_info ~182

Submit the user's phone number and terms acceptance for a virtual card. Call this after create_card returns user_info_required. Do NOT ask the user for occupation, income, or account purpose — those are never asked. Identity fields (name, date of birth, SSN / national ID, address) belong to the KYC flow: create_card tells you whether it runs conversationally (start_kyc → ID photo → face scan) or via a hosted verification_url. After phone + terms are saved, retry create_card.

NameTypeReqDescription
phone_numberstringyesUser's phone number in international E.164 format with a country code (e.g. +1 555 123 4567, +44 7911 123456)
terms_acceptedbooleanyesMust be true — the user accepted the AgentCard cardholder terms of service
NameTypeReqDescription
messagestringyesHuman-readable confirmation that the user information was saved.
statusstring–Outcome of the submission: 'saved' when the user information was stored successfully.

No examples provided.

surprise_me ~257

Buy the user something totally unexpected and very silly/stupid-fun under a small dollar cap (default $10, hard max $25). Great when the user cannot decide what to order (from DoorDash etc.) or just wants a fun surprise. It kicks off a shopping conversation that FIRST brainstorms deliberately stupid ideas, picks ONE genuinely unexpected item, builds the cart, and shows the item + exact total. It NEVER checks out by itself: the reply includes a conversation_id — relay the user's explicit confirmation ("yes, place it") through the `buy` tool on that SAME conversation_id, exactly like a normal order. Each surprise_me call starts a fresh surprise; use `buy` for all follow-ups (answers, tweaks, the confirmation).

NameTypeReqDescription
max_dollarsnumber–Hard spend cap in dollars, total including fees. Optional; default 10, values above 25 are clamped to 25.
merchantstring–Optional merchant hint the surprise should come from, e.g. 'doordash'. Omit to let the agent pick.
vibestring–Optional notes/vibe from the user, e.g. "make it food", "something for my desk", "they love ducks".
NameTypeReqDescription
conversation_idstring–The conversation id to thread back as conversation_id on the next buy call to continue the SAME order. Present on a successful assistant turn.
messagestringyesThe assistant's conversational turn (it may ask for the delivery address, show the cart + total, confirm, or report a placed order), or an error explanation.
messagesarray–The same turn split into ordered messages for multi-bubble surfaces (each narration segment, then the final reply/confirmation). `message` is the same content consolidated; clients that show one bubb…
statusstring–Discriminator for the outcome. 'assistant_turn' when the buy loop replied; 'conversation_start_failed' or 'request_failed' on errors.

No examples provided.

update_card_limit ~218

Change a multi-use card's total spending limit. Raising it reserves the extra amount from the user's cash balance (top up with add_funds if short); lowering it frees the difference, but the new limit can never go below what the card has already spent. Single-use cards cannot be resized.

NameTypeReqDescription
approval_idstring–Approval id from a prior approval_required response, once the user has approved. Only for cards created through ANOTHER app: first call without it (the user is emailed an approve link), then retry wi…
card_idstringyesThe multi-use card ID to resize.
new_limit_centsnumber–Deprecated alias for spend_limit_cents. Prefer spend_limit_cents (matches the docs and the REST API).
spend_limit_centsnumber–The new TOTAL spending limit in cents (minimum 100). This is the lifetime cap, not a delta: a card that spent $20 of a $50 limit, resized to 8000, can spend $60 more.
NameTypeReqDescription
balanceCentsnumber–The remaining spendable balance in cents.
cardIdstring–The card ID.
messagestringyesHuman-readable result.
spendLimitCentsnumber–The new total limit in cents.
statusstring–"updated" on success; an error discriminator otherwise (e.g. "limit_below_spent", "insufficient_collateral").

No examples provided.

upgrade_plan ~154

Start a paid-plan upgrade. Choose the target plan: 'basic' ($15/mo — 15 cards/month, up to $500 per card) or 'pro' ($100/mo — 50 cards/month, up to $1,000 per card). Defaults to 'basic' if omitted. Returns a Stripe Checkout URL the user must open in their browser to complete payment. After they finish checkout, the plan updates automatically; verify with get_plan. Use only when the user explicitly wants to upgrade. To cancel a paid plan instead, the gated tool cancel_plan also exists; call it by name even though it isn't in the tools list.

NameTypeReqDescription
planstring–Which plan to upgrade to. Defaults to 'basic'.
NameTypeReqDescription
checkoutUrlstring–Stripe Checkout URL the user must open to complete payment. Present only when status is checkout_required.
messagestringyesHuman-readable summary of the upgrade outcome.
planstring–Display label of the target plan, e.g. 'Basic' or 'Pro'. Present when the requested plan is known.
statusstring–Discriminator for the outcome branch.

No examples provided.

verify_phone ~108

Check the one-time code the user received from start_phone_verification. On success the balance is unlocked for funding (the verification stays fresh for 60 days) — call add_funds next. A wrong or expired code returns a recoverable status so you can ask the user to re-check it, or call start_phone_verification to resend.

NameTypeReqDescription
codestringyesThe one-time code the user received, as a string (keep any leading zeros — do not send it as a number).
NameTypeReqDescription
messagestringyesHuman-readable result or next step.

No examples provided.

whoami ~123

Show who you are operating as: the authenticated AgentCard account's email, user id, name, plan, KYC + account status, member-since date, and how this session is connected (personal login vs a third-party OAuth app connection, with the app name). Call this when the user asks "who am I" / "which account is this", or before money-moving actions when you need to confirm the account. Read-only. KYC shown here is the stored snapshot — use get_kyc_status when you need the live, provider-checked state.

Input schema present but exposes no named parameters.

NameTypeReqDescription
accountStatusstring–Account standing: 'active' or 'suspended'.
connectionClientIdstring|null–OAuth client id of the connected app, when connectionType is oauth, or organization through a company's app.
connectionClientNamestring|null–Display name of the connected OAuth app (e.g. "Claude"), when known, for an oauth or organization connection.
connectionOrganizationIdstring|null–Organization id, when connectionType is organization.
connectionTypestring–How this session authenticates: 'oauth' (third-party app connection), 'personal' (CLI/dashboard login), or 'organization' (a company's Agentcard integration acting for its end user).
emailstring|null–Email of the authenticated account, or null for a phone-first account (e.g. signed up by text message).
kycStatusstring|null–Raw stored KYC state (e.g. approved, pending, requires_input), or null if never started.
kycVerifiedboolean–Whether identity verification (KYC) has passed (stored snapshot).
memberSincestring–ISO timestamp the account was created.
messagestringyesHuman-readable identity summary.
namestring|null–Cardholder name ("First Last"), or null before KYC info is submitted.
planstring–Subscription plan id, e.g. 'free', 'basic', or 'pro'.
subscriptionStatusstring|null–Stripe subscription status (e.g. 'active', 'past_due'), or null on the free plan.
userIdstring–AgentCard user id of the authenticated account.

No examples provided.

Install

How do I install the sh.agentcard/agentcard MCP server?

sh.agentcard/agentcard is a hosted endpoint at https://mcp.agentcard.sh/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.agentcard.sh

# add to Claude Code
claude mcp add --transport http sh-agentcard-agentcard 'https://mcp.agentcard.sh/mcp'
Common questions

What is the sh.agentcard/agentcard MCP server?

sh.agentcard/agentcard is an MCP server listed in the public MCP registry as sh.agentcard/agentcard. Prepaid virtual cards for AI agents: one-time cards, spend caps, human approvals. This page covers its hosted endpoint (https://mcp.agentcard.sh/mcp).

Is the sh.agentcard/agentcard MCP server safe to use?

sh.agentcard/agentcard scores 90 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the sh.agentcard/agentcard MCP server expose?

sh.agentcard/agentcard exposes 55 tools: buy, surprise_me, get_instructions, whoami, list_cards, and 50 more. Their descriptions and schemas cost roughly 9,951 tokens of context every time the server is loaded.

Does the sh.agentcard/agentcard MCP server require authentication?

Yes. sh.agentcard/agentcard asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the sh.agentcard/agentcard MCP server still maintained?

sh.agentcard/agentcard is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.