Card snapshot
singlefax.com
·
2026-10-15 05:58:44 UTC
·
a5390a5496190847b79a16a60c897a64b817b3bdbeabbe129d3f71b46ebf37d0
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"name": "SingleFax",
"description": "Send and track faxes for a SingleFax account: quote, upload, create a fax draft with hosted Stripe Checkout, and read fax history and credit balance. AP2 credit-pack purchases use signed mandates, separate account-owner passkey approval and a scoped Stripe Shared Payment Token. Uses the MCP OAuth server with explicit scopes. Not for PHI.",
"supportedInterfaces": [
{
"url": "https://singlefax.com/a2a",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Monocube LLC (SingleFax)",
"url": "https://singlefax.com"
},
"version": "1.3.0",
"documentationUrl": "https://singlefax.com/auth.md",
"iconUrl": "https://singlefax.com/favicon.ico",
"capabilities": {
"streaming": false,
"pushNotifications": false,
"extendedAgentCard": false,
"extensions": [
{
"uri": "https://github.com/google-agentic-commerce/AP2/tree/v0.1.0",
"required": true,
"description": "Required for AP2 credit-pack payment skills. Explicit passkey approval precedes any charge.",
"params": {
"roles": [
"merchant"
],
"version": "0.1.0",
"checkout_modes": [
"human_present"
],
"payment_methods": [
"stripe_shared_payment_token"
],
"documentation_url": "https://singlefax.com/ap2.md",
"jwks_uri": "https://singlefax.com/.well-known/ap2/jwks.json"
}
}
]
},
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"description": "Same authorization server as https://singlefax.com/mcp. Register a client (RFC 7591), use authorization code + PKCE (S256) and request resource https://singlefax.com/mcp. Bearer tokens only on /a2a.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://api.singlefax.com/api/auth/oauth2/authorize",
"tokenUrl": "https://api.singlefax.com/api/auth/oauth2/token",
"refreshUrl": "https://api.singlefax.com/api/auth/oauth2/token",
"scopes": {
"fax:read": "Read fax status and history",
"fax:draft": "Create fax drafts (MCP Checkout or page-pool send)",
"fax:send": "Upload documents and send faxes",
"inbox:read": "Read received faxes (non-HIPAA transcripts and fields)",
"credits:read": "Read prepaid credit balance",
"credits:checkout": "Start credit purchases; AP2 charges require separate passkey approval",
"offline_access": "Refresh token for long-lived agent sessions"
},
"pkceRequired": true
}
},
"oauth2MetadataUrl": "https://api.singlefax.com/.well-known/oauth-authorization-server/api/auth"
}
}
},
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:read"
]
}
}
}
],
"defaultInputModes": [
"application/json"
],
"defaultOutputModes": [
"application/json",
"text/plain"
],
"skills": [
{
"id": "quote_fax",
"name": "Quote a fax",
"description": "Price a fax before sending. Arguments: to (destination fax number, E.164), pages (1-50, default 10) or base64 of a small original document with optional contentType. Read-only: never charges or sends.",
"tags": [
"fax",
"pricing",
"read-only"
],
"examples": [
"{\"skill\":\"quote_fax\",\"arguments\":{\"to\":\"+12025551234\",\"pages\":3}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:read"
]
}
}
}
]
},
{
"id": "create_upload",
"name": "Upload a document",
"description": "Get a one-time upload link for a document too large to inline (about 20 KB or more). Returns uploadPageUrl (a person drops the file in a browser, no login), uploadUrl (HTTP PUT of the raw bytes) and uploadToken. Call again with { uploadToken } to check stored. Send the original Word, Excel, PDF or image; do not convert to PDF first.",
"tags": [
"fax",
"upload"
],
"examples": [
"{\"skill\":\"create_upload\",\"arguments\":{}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:send"
]
}
}
}
]
},
{
"id": "create_fax_draft",
"name": "Create a fax draft with a checkout link",
"description": "Create a fax to one destination from an uploadToken (or base64 for a file under about 20 KB). Over A2A this never spends account credit or plan pages: it returns status awaiting_payment with a Stripe Checkout link (checkoutUrl) and an orderId. The fax is sent only after a person pays at that link. Task state is input-required until then; poll with GetTask.",
"tags": [
"fax",
"send",
"checkout"
],
"examples": [
"{\"skill\":\"create_fax_draft\",\"arguments\":{\"to\":\"+12025551234\",\"uploadToken\":\"<from create_upload>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:draft"
]
}
}
}
]
},
{
"id": "create_checkout",
"name": "Get a checkout link for a product",
"description": "Get a Stripe Checkout link for a catalog SKU: credit_pack, inbound_30day, monthly-basic, annual-basic, monthly-business, annual-business, lifetime-basic or lifetime-pro. Over A2A it always returns a checkout link and never spends existing credit. HIPAA, EIN and IRS products are website-only. Not for sending a document; use create_fax_draft.",
"tags": [
"checkout",
"numbers",
"credits"
],
"examples": [
"{\"skill\":\"create_checkout\",\"arguments\":{\"sku\":\"inbound_30day\",\"country\":\"US\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:draft"
]
}
}
}
]
},
{
"id": "get_fax_status",
"name": "Fax status",
"description": "Read fulfillmentStatus and paymentStatus of one outbound fax order this account owns. Argument: id (the orderId UUID from create_fax_draft). Read-only.",
"tags": [
"fax",
"status",
"read-only"
],
"examples": [
"{\"skill\":\"get_fax_status\",\"arguments\":{\"id\":\"<orderId>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:read"
]
}
}
}
]
},
{
"id": "list_outbound_faxes",
"name": "List sent faxes",
"description": "List this account's outbound fax orders, newest first (id, destination, fulfillmentStatus, paymentStatus). Optional limit (default 20, max 50) and offset. Read-only.",
"tags": [
"fax",
"history",
"read-only"
],
"examples": [
"{\"skill\":\"list_outbound_faxes\",\"arguments\":{\"limit\":10}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"fax:read"
]
}
}
}
]
},
{
"id": "list_inbound_faxes",
"name": "List received faxes",
"description": "List faxes received on this account's numbers (envelope and AI summary state). Optional cursor and limit (max 50). HIPAA Secure and held faxes return the envelope only. Read-only.",
"tags": [
"fax",
"inbox",
"read-only"
],
"examples": [
"{\"skill\":\"list_inbound_faxes\",\"arguments\":{\"limit\":10}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"inbox:read"
]
}
}
}
]
},
{
"id": "get_inbound_fax",
"name": "Read a received fax",
"description": "Read one received fax: extracted fields and a bounded transcript slice for released non-HIPAA faxes. Arguments: id, optional offset. HIPAA Secure content stays on the website. Read-only.",
"tags": [
"fax",
"inbox",
"read-only"
],
"examples": [
"{\"skill\":\"get_inbound_fax\",\"arguments\":{\"id\":\"<received fax id>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"inbox:read"
]
}
}
}
]
},
{
"id": "get_credits",
"name": "Credit balance",
"description": "Read the prepaid credit balance (availableCents, reservedCents). Read-only.",
"tags": [
"credits",
"read-only"
],
"examples": [
"{\"skill\":\"get_credits\",\"arguments\":{}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"credits:read"
]
}
}
}
]
},
{
"id": "ap2_create_cart",
"name": "ap2 create cart",
"description": "ap2_create_cart: human-present AP2 v0.1 credit-pack purchase. Requires the AP2 extension and credits:checkout. Signed carts, passkey-bound approval and Stripe Shared Payment Tokens. See /ap2.md for the mandate schemas, arguments and approval flow.",
"tags": [
"ap2",
"credits",
"payments"
],
"examples": [
"{\"skill\":\"ap2_create_cart\",\"arguments\":{\"product_id\":\"credit-pack-20\",\"idempotency_key\":\"<unique key>\",\"intent_mandate\":\"<AP2 IntentMandate object>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"credits:checkout"
]
}
}
}
]
},
{
"id": "ap2_prepare_payment",
"name": "ap2 prepare payment",
"description": "ap2_prepare_payment: human-present AP2 v0.1 credit-pack purchase. Requires the AP2 extension and credits:checkout. Signed carts, passkey-bound approval and Stripe Shared Payment Tokens. See /ap2.md for the mandate schemas, arguments and approval flow.",
"tags": [
"ap2",
"credits",
"payments"
],
"examples": [
"{\"skill\":\"ap2_prepare_payment\",\"arguments\":{\"id\":\"<cart id>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"credits:checkout"
]
}
}
}
]
},
{
"id": "ap2_complete_payment",
"name": "ap2 complete payment",
"description": "ap2_complete_payment: human-present AP2 v0.1 credit-pack purchase. Requires the AP2 extension and credits:checkout. Signed carts, passkey-bound approval and Stripe Shared Payment Tokens. See /ap2.md for the mandate schemas, arguments and approval flow.",
"tags": [
"ap2",
"credits",
"payments"
],
"examples": [
"{\"skill\":\"ap2_complete_payment\",\"arguments\":{\"id\":\"<cart id>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"credits:checkout"
]
}
}
}
]
},
{
"id": "ap2_get_cart",
"name": "ap2 get cart",
"description": "ap2_get_cart: human-present AP2 v0.1 credit-pack purchase. Requires the AP2 extension and credits:checkout. Signed carts, passkey-bound approval and Stripe Shared Payment Tokens. See /ap2.md for the mandate schemas, arguments and approval flow.",
"tags": [
"ap2",
"credits",
"payments"
],
"examples": [
"{\"skill\":\"ap2_get_cart\",\"arguments\":{\"id\":\"<cart id>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"credits:checkout"
]
}
}
}
]
},
{
"id": "ap2_cancel_cart",
"name": "ap2 cancel cart",
"description": "ap2_cancel_cart: human-present AP2 v0.1 credit-pack purchase. Requires the AP2 extension and credits:checkout. Signed carts, passkey-bound approval and Stripe Shared Payment Tokens. See /ap2.md for the mandate schemas, arguments and approval flow.",
"tags": [
"ap2",
"credits",
"payments"
],
"examples": [
"{\"skill\":\"ap2_cancel_cart\",\"arguments\":{\"id\":\"<cart id>\"}}"
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json",
"text/plain"
],
"securityRequirements": [
{
"schemes": {
"oauth2": {
"list": [
"credits:checkout"
]
}
}
}
]
}
]
}