Papaya Pay Any Bill (USA)
This connector has been taken down for the time being
Server Details
Ready for a new way to bill pay? Pay any US bill in a snap, right from your AI assistant. Describe or snap a photo of your bill (electric, water, gas, internet, phone, medical, credit card, rent, parking tickets, traffic violations and more) and Papaya reads it, then hands you a secure link to pay by card. Fast, secure, and no juggling twelve logins, with full or partial payments and status updates. Available in the US only. Powered by Papaya (papayapay.com).
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 91.0% over 71 days
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct phase of the bill-payment lifecycle: analyze/create, optional card check, final confirmation, status lookup, auth refresh, and cancellation. The descriptions clearly delineate optional versus mandatory steps, so an agent can reliably select the right tool. No two tools share overlapping purposes.
All six tools follow a consistent snake_case verb_noun pattern (analyze_bill, check_payment_method, confirm_payment_intent, fetch_bill_status, get_new_auth_token, request_bill_cancellation). The verbs are distinct yet uniform in style, with no mixing of camelCase or other conventions.
With 6 tools, the set is well-scoped for a bill-payment server: it covers creation, verification, submission, status checking, cancellation, and authentication without extraneous operations. Each tool earns its place in the workflow.
The core lifecycle from bill analysis through payment, status check, and cancellation is covered, including an auth-refresh fallback. Minor gaps exist, such as no dedicated tool for listing/querying past bills or updating a user profile, but these can be worked around by re-running analyze_bill or using returned identifiers.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
analyze_bill10 fields changed- removed
Input schema / properties / bill_description / properties / amountDue / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / bill_description / properties / amountDue / defaultRemoved value: -null - changed
Input schema / properties / bill_description / properties / amountDue / descriptionPrevious value: -"Total balance due on the bill (the full amount owed), as read from the bill. This is NOT necessarily what the user will pay - see amount_to_pay."New value: +"Required. Total balance due on the bill (the full amount owed), as read from the bill. This is NOT necessarily what the user will pay - see amount_to_pay." - added
Input schema / properties / bill_description / properties / amountDue / typeAdded value: +"number" - removed
Input schema / properties / bill_description / properties / amount_to_pay / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / bill_description / properties / amount_to_pay / defaultRemoved value: -null - changed
Input schema / properties / bill_description / properties / amount_to_pay / descriptionPrevious value: -"The amount the user wants to pay now. May be a partial payment, distinct from amountDue (the bill total). Ask the user how much they want to pay before calling; set equal to amountDue to pay in full. Passing it previews any fee for that amount in the result."New value: +"Required. The amount to pay now (used to preview fees here; the charge happens at confirm_payment_intent). May be a partial payment, distinct from amountDue. Ask the user how much to pay - never invent it." - added
Input schema / properties / bill_description / properties / amount_to_pay / typeAdded value: +"number" - removed
Input schema / properties / bill_description / properties / user_amount_statementRemoved value: -{ - "anyOf": [ - { - "maxLength": 200, - "minLength": 3, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Required proof that you asked the user how much to pay and they answered: quote what the user actually said (e.g. 'pay the full 150' or 'just 50 this month'). You MUST have asked the user before setting amount_to_pay - never invent the amount or this quote.", - "title": "User Amount Statement" -} - changed
Input schema / properties / bill_description / requiredPrevious value: -[ - "remitAddress", - "billerName" -]New value: +[ + "remitAddress", + "amountDue", + "amount_to_pay", + "billerName" +]
- Changed
confirm_payment_intent2 fields changed- removed
Input schema / properties / confirm_input / properties / fee_approvedRemoved value: -{ - "description": "True if any fees on the payment have been disclosed to the user and they accepted them", - "title": "Fee Approved", - "type": "boolean" -} - changed
Input schema / properties / confirm_input / requiredPrevious value: -[ - "user_id", - "bill_id", - "auth_token", - "refresh_token", - "amount_to_pay", - "user_amount_statement", - "email", - "fee_approved" -]New value: +[ + "user_id", + "bill_id", + "auth_token", + "refresh_token", + "amount_to_pay", + "user_amount_statement", + "email" +]
1 tool update
- Changed
analyze_bill8 fields changed- removed
Input schema / properties / bill_description / properties / remitAddress / anyOfRemoved value: -[ - { - "properties": { - "address": { - "maxLength": 100, - "minLength": 5, - "pattern": "^[a-zA-Z0-9\\s\\-\\.',#]+$", - "title": "Address", - "type": "string" - }, - "city": { - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "title": "City", - "type": "string" - }, - "name": { - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "title": "Name", - "type": "string" - }, - "stateCode": { - "pattern": "^[A-Z]{2}$", - "title": "Statecode", - "type": "string" - }, - "zip": { - "pattern": "^\\d{5}(-\\d{4})?$", - "title": "Zip", - "type": "string" - } - }, - "required": [ - "name", - "address", - "city", - "stateCode", - "zip" - ], - "title": "BillingAddress", - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / bill_description / properties / remitAddress / defaultRemoved value: -null - changed
Input schema / properties / bill_description / properties / remitAddress / descriptionPrevious value: -"Biller remit-to address (where payment is sent). This is the key field for identifying the correct biller - an incorrect or missing remit-to address can cause the bill to be matched to the wrong biller, delaying or failing the payment. Always provide it from the bill. If the bill does not show a remit-to address, research the biller's official remit-to/payment address online and use that rather than leaving it empty."New value: +"Biller remit-to address (where payment is sent). REQUIRED - a bill cannot be analyzed without it. It is the key signal for safely identifying the biller; without a remit-to address (or another strong identifier) the biller may not be identifiable and the bill will be unpayable. Always provide it: take it from the bill, or if the bill does not show one, identify the biller and research their official remit-to / payment address online. Never omit it or invent a placeholder - if you cannot determine a real remit-to address, ask the user for it." - added
Input schema / properties / bill_description / properties / remitAddress / propertiesAdded value: +{ + "address": { + "maxLength": 100, + "minLength": 5, + "pattern": "^[a-zA-Z0-9\\s\\-\\.',#]+$", + "title": "Address", + "type": "string" + }, + "city": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "City", + "type": "string" + }, + "name": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "Name", + "type": "string" + }, + "stateCode": { + "pattern": "^[A-Z]{2}$", + "title": "Statecode", + "type": "string" + }, + "zip": { + "pattern": "^\\d{5}(-\\d{4})?$", + "title": "Zip", + "type": "string" + } +} - added
Input schema / properties / bill_description / properties / remitAddress / requiredAdded value: +[ + "name", + "address", + "city", + "stateCode", + "zip" +] - added
Input schema / properties / bill_description / properties / remitAddress / titleAdded value: +"BillingAddress" - added
Input schema / properties / bill_description / properties / remitAddress / typeAdded value: +"object" - changed
Input schema / properties / bill_description / requiredPrevious value: -[ - "billerName" -]New value: +[ + "remitAddress", + "billerName" +]
1 tool update
- Changed
analyze_bill3 fields changed- changed
Input schema / properties / bill_description / properties / account / descriptionPrevious value: -"User Account on the bill, if none ticket number"New value: +"The user's account or customer number on the bill (the biller's identifier for the user's account). Capture it whenever the bill shows one. Put any invoice, ticket, or reference number in otherInfo (in addition to the account number - some billers need both), not here." - changed
Input schema / properties / bill_description / properties / otherInfo / descriptionPrevious value: -"Other information extracted from the bill that helps identify the provider or complete the payment (like code, pin, pass ...). If the bill shows a payment phone number, include it here (e.g. 'pay_by_phone': '1-800-555-1234') - like the remit-to address it helps identify the correct biller. For a web-payment URL use the payUrl field instead, not this map."New value: +"Other information extracted from the bill that helps identify the provider or complete the payment (like code, pin, pass ...). Also capture the user's charge identifiers here - invoice number, ticket number, or reference number (e.g. 'invoice_number': '12345', 'reference_number': 'A1B2C3') - whenever the bill shows them, even if it also has an account number: some billers' payment automation needs the account number plus one of these. If the bill shows a payment phone number, include it here too (e.g. 'pay_by_phone': '1-800-555-1234') - like the remit-to address it helps identify the correct biller. For a web-payment URL use the payUrl field instead, not this map." - changed
Input schema / properties / bill_description / properties / userAddress / descriptionPrevious value: -"User address"New value: +"The payer's identity: the user's name and billing address (who is paying). Billers use this to attribute the payment to the right person, so a missing or wrong payer identity can cause the payment to be rejected or misapplied. Take it from the bill's account-holder / addressee section if shown; otherwise ask the user for their name and billing address rather than leaving it empty."
6 tool updates
- Changed
analyze_bill6 fields changed- removed
Input schema / $defsRemoved value: -{ - "BillDescription": { - "properties": { - "account": { - "anyOf": [ - { - "pattern": "^(([A-Za-z0-9\\s\\*\\.\\-#]{1,20})|(N/A))$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "User Account on the bill, if none ticket number", - "title": "Account" - }, - "amountDue": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Total balance due on the bill (the full amount owed), as read from the bill. This is NOT necessarily what the user will pay - see amount_to_pay.", - "title": "Amountdue" - }, - "amount_to_pay": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The amount the user wants to pay now. May be a partial payment, distinct from amountDue (the bill total). Ask the user how much they want to pay before calling; set equal to amountDue to pay in full. Passing it previews any fee for that amount in the result.", - "title": "Amount To Pay" - }, - "auth_token": { - "anyOf": [ - { - "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "authorization token attached to the user (if a user already exists from a previous bill payment). MUST be the most recent/current auth_token (check latest call with the same user id, possibly in a previous session). Depending how long ago the previous payment was made, may first need to obtain a new token.", - "title": "Auth Token" - }, - "billerName": { - "description": "Name of the biller", - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "title": "Billername", - "type": "string" - }, - "correspondenceAddress": { - "anyOf": [ - { - "$ref": "#/$defs/BillingAddress" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Biller correspondence address" - }, - "dueDate": { - "anyOf": [ - { - "pattern": "\\d{1,2}\\s?(/|-)\\s?\\d{1,2}\\s?(/|-)\\s?(\\d{4}|\\d{2})", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Due date for the bill in MM/DD/YYYY format MM/DD/YY is acceptable", - "title": "Duedate" - }, - "otherInfo": { - "default": {}, - "description": "Other information extracted from the bill that helps identify the provider or complete the payment (like code, pin, pass ...). If the bill shows a payment phone number, include it here (e.g. 'pay_by_phone': '1-800-555-1234') - like the remit-to address it helps identify the correct biller. For a web-payment URL use the payUrl field instead, not this map.", - "patternProperties": { - "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - }, - { - "maxLength": 75, - "minLength": 2, - "pattern": "^[a-zA-Z0-9 \\-\\./,'&@*#:?=+()]+$", - "type": "string" - } - ] - } - }, - "propertyNames": { - "maxLength": 50, - "minLength": 2 - }, - "title": "Otherinfo", - "type": "object" - }, - "payUrl": { - "anyOf": [ - { - "maxLength": 120, - "minLength": 4, - "pattern": "^[a-zA-Z0-9\\-._~:/?#\\[\\]@!$&'()*+,;=%]+$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The web address where the bill can be paid online (the 'pay at' / 'pay online' URL printed on the bill), e.g. https://www.biller.com/pay. Like the remit-to address it strongly identifies the correct biller, so include it whenever the bill shows one to reduce the risk of a misidentified, failed, or delayed payment. Must be a single URL of at most 120 characters (just the base 'pay online' address, no extra text); omit it rather than sending anything longer.", - "title": "Payurl" - }, - "remitAddress": { - "anyOf": [ - { - "$ref": "#/$defs/BillingAddress" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Biller remit-to address (where payment is sent). This is the key field for identifying the correct biller - an incorrect or missing remit-to address can cause the bill to be matched to the wrong biller, delaying or failing the payment. Always provide it from the bill. If the bill does not show a remit-to address, research the biller's official remit-to/payment address online and use that rather than leaving it empty." - }, - "userAddress": { - "anyOf": [ - { - "$ref": "#/$defs/BillingAddress" - }, - { - "type": "null" - } - ], - "default": null, - "description": "User address" - }, - "user_amount_statement": { - "anyOf": [ - { - "maxLength": 200, - "minLength": 3, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Required proof that you asked the user how much to pay and they answered: quote what the user actually said (e.g. 'pay the full 150' or 'just 50 this month'). You MUST have asked the user before setting amount_to_pay - never invent the amount or this quote.", - "title": "User Amount Statement" - }, - "user_id": { - "anyOf": [ - { - "pattern": "^[a-zA-Z0-9]{10}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "identifier for the user if a user already exists from a previous bill payment", - "title": "User Id" - } - }, - "required": [ - "billerName" - ], - "title": "BillDescription", - "type": "object" - }, - "BillingAddress": { - "properties": { - "address": { - "maxLength": 100, - "minLength": 5, - "pattern": "^[a-zA-Z0-9\\s\\-\\.',#]+$", - "title": "Address", - "type": "string" - }, - "city": { - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "title": "City", - "type": "string" - }, - "name": { - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "title": "Name", - "type": "string" - }, - "stateCode": { - "pattern": "^[A-Z]{2}$", - "title": "Statecode", - "type": "string" - }, - "zip": { - "pattern": "^\\d{5}(-\\d{4})?$", - "title": "Zip", - "type": "string" - } - }, - "required": [ - "name", - "address", - "city", - "stateCode", - "zip" - ], - "title": "BillingAddress", - "type": "object" - } -} - removed
Input schema / properties / bill_description / $refRemoved value: -"#/$defs/BillDescription" - added
Input schema / properties / bill_description / propertiesAdded value: +{ + "account": { + "anyOf": [ + { + "pattern": "^(([A-Za-z0-9\\s\\*\\.\\-#]{1,20})|(N/A))$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "User Account on the bill, if none ticket number", + "title": "Account" + }, + "amountDue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Total balance due on the bill (the full amount owed), as read from the bill. This is NOT necessarily what the user will pay - see amount_to_pay.", + "title": "Amountdue" + }, + "amount_to_pay": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The amount the user wants to pay now. May be a partial payment, distinct from amountDue (the bill total). Ask the user how much they want to pay before calling; set equal to amountDue to pay in full. Passing it previews any fee for that amount in the result.", + "title": "Amount To Pay" + }, + "auth_token": { + "anyOf": [ + { + "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "authorization token attached to the user (if a user already exists from a previous bill payment). MUST be the most recent/current auth_token (check latest call with the same user id, possibly in a previous session). Depending how long ago the previous payment was made, may first need to obtain a new token.", + "title": "Auth Token" + }, + "billerName": { + "description": "Name of the biller", + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "Billername", + "type": "string" + }, + "correspondenceAddress": { + "anyOf": [ + { + "properties": { + "address": { + "maxLength": 100, + "minLength": 5, + "pattern": "^[a-zA-Z0-9\\s\\-\\.',#]+$", + "title": "Address", + "type": "string" + }, + "city": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "City", + "type": "string" + }, + "name": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "Name", + "type": "string" + }, + "stateCode": { + "pattern": "^[A-Z]{2}$", + "title": "Statecode", + "type": "string" + }, + "zip": { + "pattern": "^\\d{5}(-\\d{4})?$", + "title": "Zip", + "type": "string" + } + }, + "required": [ + "name", + "address", + "city", + "stateCode", + "zip" + ], + "title": "BillingAddress", + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Biller correspondence address" + }, + "dueDate": { + "anyOf": [ + { + "pattern": "\\d{1,2}\\s?(/|-)\\s?\\d{1,2}\\s?(/|-)\\s?(\\d{4}|\\d{2})", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Due date for the bill in MM/DD/YYYY format MM/DD/YY is acceptable", + "title": "Duedate" + }, + "otherInfo": { + "default": {}, + "description": "Other information extracted from the bill that helps identify the provider or complete the payment (like code, pin, pass ...). If the bill shows a payment phone number, include it here (e.g. 'pay_by_phone': '1-800-555-1234') - like the remit-to address it helps identify the correct biller. For a web-payment URL use the payUrl field instead, not this map.", + "patternProperties": { + "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + }, + { + "maxLength": 75, + "minLength": 2, + "pattern": "^[a-zA-Z0-9 \\-\\./,'&@*#:?=+()]+$", + "type": "string" + } + ] + } + }, + "propertyNames": { + "maxLength": 50, + "minLength": 2 + }, + "title": "Otherinfo", + "type": "object" + }, + "payUrl": { + "anyOf": [ + { + "maxLength": 120, + "minLength": 4, + "pattern": "^[a-zA-Z0-9\\-._~:/?#\\[\\]@!$&'()*+,;=%]+$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The web address where the bill can be paid online (the 'pay at' / 'pay online' URL printed on the bill), e.g. https://www.biller.com/pay. Like the remit-to address it strongly identifies the correct biller, so include it whenever the bill shows one to reduce the risk of a misidentified, failed, or delayed payment. Must be a single URL of at most 120 characters (just the base 'pay online' address, no extra text); omit it rather than sending anything longer.", + "title": "Payurl" + }, + "remitAddress": { + "anyOf": [ + { + "properties": { + "address": { + "maxLength": 100, + "minLength": 5, + "pattern": "^[a-zA-Z0-9\\s\\-\\.',#]+$", + "title": "Address", + "type": "string" + }, + "city": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "City", + "type": "string" + }, + "name": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "Name", + "type": "string" + }, + "stateCode": { + "pattern": "^[A-Z]{2}$", + "title": "Statecode", + "type": "string" + }, + "zip": { + "pattern": "^\\d{5}(-\\d{4})?$", + "title": "Zip", + "type": "string" + } + }, + "required": [ + "name", + "address", + "city", + "stateCode", + "zip" + ], + "title": "BillingAddress", + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Biller remit-to address (where payment is sent). This is the key field for identifying the correct biller - an incorrect or missing remit-to address can cause the bill to be matched to the wrong biller, delaying or failing the payment. Always provide it from the bill. If the bill does not show a remit-to address, research the biller's official remit-to/payment address online and use that rather than leaving it empty." + }, + "userAddress": { + "anyOf": [ + { + "properties": { + "address": { + "maxLength": 100, + "minLength": 5, + "pattern": "^[a-zA-Z0-9\\s\\-\\.',#]+$", + "title": "Address", + "type": "string" + }, + "city": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "City", + "type": "string" + }, + "name": { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "title": "Name", + "type": "string" + }, + "stateCode": { + "pattern": "^[A-Z]{2}$", + "title": "Statecode", + "type": "string" + }, + "zip": { + "pattern": "^\\d{5}(-\\d{4})?$", + "title": "Zip", + "type": "string" + } + }, + "required": [ + "name", + "address", + "city", + "stateCode", + "zip" + ], + "title": "BillingAddress", + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "User address" + }, + "user_amount_statement": { + "anyOf": [ + { + "maxLength": 200, + "minLength": 3, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Required proof that you asked the user how much to pay and they answered: quote what the user actually said (e.g. 'pay the full 150' or 'just 50 this month'). You MUST have asked the user before setting amount_to_pay - never invent the amount or this quote.", + "title": "User Amount Statement" + }, + "user_id": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]{10}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "identifier for the user if a user already exists from a previous bill payment", + "title": "User Id" + } +} - added
Input schema / properties / bill_description / requiredAdded value: +[ + "billerName" +] - added
Input schema / properties / bill_description / titleAdded value: +"BillDescription" - added
Input schema / properties / bill_description / typeAdded value: +"object"
- Changed
check_payment_method7 fields changed- removed
Input schema / $defsRemoved value: -{ - "PaymentMethodCheckInput": { - "description": "Identifiers to look up whether a card has been set on a bill yet.", - "properties": { - "bill_id": { - "description": "identifier for the bill", - "pattern": "^[a-zA-Z0-9]{10}$", - "title": "Bill Id", - "type": "string" - }, - "user_id": { - "description": "identifier for the user the bill belongs to", - "pattern": "^[a-zA-Z0-9]{10}$", - "title": "User Id", - "type": "string" - } - }, - "required": [ - "user_id", - "bill_id" - ], - "title": "PaymentMethodCheckInput", - "type": "object" - } -} - removed
Input schema / properties / check_input / $refRemoved value: -"#/$defs/PaymentMethodCheckInput" - added
Input schema / properties / check_input / descriptionAdded value: +"Identifiers to look up whether a card has been set on a bill yet." - added
Input schema / properties / check_input / propertiesAdded value: +{ + "bill_id": { + "description": "identifier for the bill", + "pattern": "^[a-zA-Z0-9]{10}$", + "title": "Bill Id", + "type": "string" + }, + "user_id": { + "description": "identifier for the user the bill belongs to", + "pattern": "^[a-zA-Z0-9]{10}$", + "title": "User Id", + "type": "string" + } +} - added
Input schema / properties / check_input / requiredAdded value: +[ + "user_id", + "bill_id" +] - added
Input schema / properties / check_input / titleAdded value: +"PaymentMethodCheckInput" - added
Input schema / properties / check_input / typeAdded value: +"object"
- Changed
confirm_payment_intent6 fields changed- removed
Input schema / $defsRemoved value: -{ - "ConfirmInput": { - "properties": { - "amount_to_pay": { - "description": "The amount the user has chosen to pay - this is what gets charged. May be a partial payment (less than the bill's full balance). Use the amount the user agreed to when the bill was analyzed, unless they have since changed it.", - "title": "Amount To Pay", - "type": "number" - }, - "auth_token": { - "description": "authorization token attached to the user as obtained when submitting the bill, searching for a biller or getting a new auth token", - "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", - "title": "Auth Token", - "type": "string" - }, - "bill_id": { - "description": "identifier for the specific bill that was provided as a result of a bill extraction", - "pattern": "^[a-zA-Z0-9]{10}$", - "title": "Bill Id", - "type": "string" - }, - "email": { - "description": "The user's real email, used to send them payment-status updates. You MUST ask the user for it (or reuse an email they gave earlier in this conversation) and confirm the spelling. NEVER invent, guess, or derive it from their name or the bill - a made-up email means the user gets no updates and could send their payment notifications to a stranger.", - "maxLength": 254, - "pattern": "^[a-zA-Z0-9]+([a-zA-Z0-9._%+-]*[a-zA-Z0-9])?@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", - "title": "Email", - "type": "string" - }, - "entered_account": { - "anyOf": [ - { - "pattern": "^(([A-Za-z0-9\\s\\*\\.\\-#]{1,20})|(N/A))$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "(optional) if the user wishes to change the value extracted for the account by the bill analysis or provided during maual creation, provide the new value here", - "title": "Entered Account" - }, - "entered_provider": { - "anyOf": [ - { - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "(optional) if the user wishes to change the provider name extracted by bill analysis or use during manual bill creation provide the new value here", - "title": "Entered Provider" - }, - "extra_infos": { - "default": {}, - "description": "dictionary of information provided by the user as {<fieldname1>:<value1> , <fieldname2>:<value2> ,...}", - "patternProperties": { - "^[a-zA-Z0-9_]{2,20}$": { - "anyOf": [ - { - "maxLength": 50, - "minLength": 2, - "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", - "type": "string" - }, - { - "pattern": "^(([A-Za-z0-9\\s\\*\\.\\-#]{1,20})|(N/A))$", - "type": "string" - }, - { - "pattern": "\\d{1,2}\\s?(/|-)\\s?\\d{1,2}\\s?(/|-)\\s?\\d{4}", - "type": "string" - } - ] - } - }, - "title": "Extra Infos", - "type": "object" - }, - "fee_approved": { - "description": "True if any fees on the payment have been disclosed to the user and they accepted them", - "title": "Fee Approved", - "type": "boolean" - }, - "phone": { - "default": "2223334444", - "description": "phone number for the user (use the default if you do not have a real one)", - "pattern": "^(\\+?1[\\s.\\-]?)?(\\([2-9]\\d{2}\\)|[2-9]\\d{2})[\\s.\\-\\\\\\/]?\\d{3}[\\s.\\-\\\\\\/]?\\d{4}$", - "title": "Phone", - "type": "string" - }, - "refresh_token": { - "description": "Refresh token obtained when the user was created during a bill analysis or as input to a previous confirm_payment_intent tool call in previous bill payment sessions", - "pattern": "^r:[a-z0-9]{32}$", - "title": "Refresh Token", - "type": "string" - }, - "user_amount_statement": { - "description": "Required proof that you asked the user and they confirmed the amount: quote what the user actually said about how much to pay (e.g. 'pay the full 150' or 'just pay 50 this month'). You MUST have confirmed amount_to_pay with the user before calling this - never invent this.", - "maxLength": 200, - "minLength": 3, - "title": "User Amount Statement", - "type": "string" - }, - "user_id": { - "description": "identifier for the user that was provided as a result of bill extraction", - "pattern": "^[a-zA-Z0-9]{10}$", - "title": "User Id", - "type": "string" - } - }, - "required": [ - "user_id", - "bill_id", - "auth_token", - "refresh_token", - "amount_to_pay", - "user_amount_statement", - "email", - "fee_approved" - ], - "title": "ConfirmInput", - "type": "object" - } -} - removed
Input schema / properties / confirm_input / $refRemoved value: -"#/$defs/ConfirmInput" - added
Input schema / properties / confirm_input / propertiesAdded value: +{ + "amount_to_pay": { + "description": "The amount the user has chosen to pay - this is what gets charged. May be a partial payment (less than the bill's full balance). Use the amount the user agreed to when the bill was analyzed, unless they have since changed it.", + "title": "Amount To Pay", + "type": "number" + }, + "auth_token": { + "description": "authorization token attached to the user as obtained when submitting the bill, searching for a biller or getting a new auth token", + "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "title": "Auth Token", + "type": "string" + }, + "bill_id": { + "description": "identifier for the specific bill that was provided as a result of a bill extraction", + "pattern": "^[a-zA-Z0-9]{10}$", + "title": "Bill Id", + "type": "string" + }, + "email": { + "description": "The user's real email, used to send them payment-status updates. You MUST ask the user for it (or reuse an email they gave earlier in this conversation) and confirm the spelling. NEVER invent, guess, or derive it from their name or the bill - a made-up email means the user gets no updates and could send their payment notifications to a stranger.", + "maxLength": 254, + "pattern": "^[a-zA-Z0-9]+([a-zA-Z0-9._%+-]*[a-zA-Z0-9])?@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", + "title": "Email", + "type": "string" + }, + "entered_account": { + "anyOf": [ + { + "pattern": "^(([A-Za-z0-9\\s\\*\\.\\-#]{1,20})|(N/A))$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "(optional) if the user wishes to change the value extracted for the account by the bill analysis or provided during maual creation, provide the new value here", + "title": "Entered Account" + }, + "entered_provider": { + "anyOf": [ + { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "(optional) if the user wishes to change the provider name extracted by bill analysis or use during manual bill creation provide the new value here", + "title": "Entered Provider" + }, + "extra_infos": { + "default": {}, + "description": "dictionary of information provided by the user as {<fieldname1>:<value1> , <fieldname2>:<value2> ,...}", + "patternProperties": { + "^[a-zA-Z0-9_]{2,20}$": { + "anyOf": [ + { + "maxLength": 50, + "minLength": 2, + "pattern": "^(([a-zA-Z0-9 \\-\\_.,'&]+)|(N/A))$", + "type": "string" + }, + { + "pattern": "^(([A-Za-z0-9\\s\\*\\.\\-#]{1,20})|(N/A))$", + "type": "string" + }, + { + "pattern": "\\d{1,2}\\s?(/|-)\\s?\\d{1,2}\\s?(/|-)\\s?\\d{4}", + "type": "string" + } + ] + } + }, + "title": "Extra Infos", + "type": "object" + }, + "fee_approved": { + "description": "True if any fees on the payment have been disclosed to the user and they accepted them", + "title": "Fee Approved", + "type": "boolean" + }, + "phone": { + "default": "2223334444", + "description": "phone number for the user (use the default if you do not have a real one)", + "pattern": "^(\\+?1[\\s.\\-]?)?(\\([2-9]\\d{2}\\)|[2-9]\\d{2})[\\s.\\-\\\\\\/]?\\d{3}[\\s.\\-\\\\\\/]?\\d{4}$", + "title": "Phone", + "type": "string" + }, + "refresh_token": { + "description": "Refresh token obtained when the user was created during a bill analysis or as input to a previous confirm_payment_intent tool call in previous bill payment sessions", + "pattern": "^r:[a-z0-9]{32}$", + "title": "Refresh Token", + "type": "string" + }, + "user_amount_statement": { + "description": "Required proof that you asked the user and they confirmed the amount: quote what the user actually said about how much to pay (e.g. 'pay the full 150' or 'just pay 50 this month'). You MUST have confirmed amount_to_pay with the user before calling this - never invent this.", + "maxLength": 200, + "minLength": 3, + "title": "User Amount Statement", + "type": "string" + }, + "user_id": { + "description": "identifier for the user that was provided as a result of bill extraction", + "pattern": "^[a-zA-Z0-9]{10}$", + "title": "User Id", + "type": "string" + } +} - added
Input schema / properties / confirm_input / requiredAdded value: +[ + "user_id", + "bill_id", + "auth_token", + "refresh_token", + "amount_to_pay", + "user_amount_statement", + "email", + "fee_approved" +] - added
Input schema / properties / confirm_input / titleAdded value: +"ConfirmInput" - added
Input schema / properties / confirm_input / typeAdded value: +"object"
- Changed
fetch_bill_status6 fields changed- removed
Input schema / $defsRemoved value: -{ - "BillStatusInput": { - "properties": { - "auth_token": { - "description": "authorization token attached to the user as obtained when submitting the bill, searching for a biller or getting a new auth token", - "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", - "title": "Auth Token", - "type": "string" - }, - "bill_id": { - "description": "identifier for the specific bill that was provided as a result of a bill extraction", - "pattern": "^[a-zA-Z0-9]{10}$", - "title": "Bill Id", - "type": "string" - } - }, - "required": [ - "bill_id", - "auth_token" - ], - "title": "BillStatusInput", - "type": "object" - } -} - removed
Input schema / properties / bill_status_input / $refRemoved value: -"#/$defs/BillStatusInput" - added
Input schema / properties / bill_status_input / propertiesAdded value: +{ + "auth_token": { + "description": "authorization token attached to the user as obtained when submitting the bill, searching for a biller or getting a new auth token", + "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "title": "Auth Token", + "type": "string" + }, + "bill_id": { + "description": "identifier for the specific bill that was provided as a result of a bill extraction", + "pattern": "^[a-zA-Z0-9]{10}$", + "title": "Bill Id", + "type": "string" + } +} - added
Input schema / properties / bill_status_input / requiredAdded value: +[ + "bill_id", + "auth_token" +] - added
Input schema / properties / bill_status_input / titleAdded value: +"BillStatusInput" - added
Input schema / properties / bill_status_input / typeAdded value: +"object"
- Changed
get_new_auth_token6 fields changed- removed
Input schema / $defsRemoved value: -{ - "NewTokenInput": { - "properties": { - "refresh_token": { - "description": "a token used to refresh expired auth token provided by previous calls to analyze_bill or create_manual_bills", - "pattern": "^r:[a-z0-9]{32}$", - "title": "Refresh Token", - "type": "string" - } - }, - "required": [ - "refresh_token" - ], - "title": "NewTokenInput", - "type": "object" - } -} - removed
Input schema / properties / new_token_input / $refRemoved value: -"#/$defs/NewTokenInput" - added
Input schema / properties / new_token_input / propertiesAdded value: +{ + "refresh_token": { + "description": "a token used to refresh expired auth token provided by previous calls to analyze_bill or create_manual_bills", + "pattern": "^r:[a-z0-9]{32}$", + "title": "Refresh Token", + "type": "string" + } +} - added
Input schema / properties / new_token_input / requiredAdded value: +[ + "refresh_token" +] - added
Input schema / properties / new_token_input / titleAdded value: +"NewTokenInput" - added
Input schema / properties / new_token_input / typeAdded value: +"object"
- Changed
request_bill_cancellation6 fields changed- removed
Input schema / $defsRemoved value: -{ - "BillStatusInput": { - "properties": { - "auth_token": { - "description": "authorization token attached to the user as obtained when submitting the bill, searching for a biller or getting a new auth token", - "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", - "title": "Auth Token", - "type": "string" - }, - "bill_id": { - "description": "identifier for the specific bill that was provided as a result of a bill extraction", - "pattern": "^[a-zA-Z0-9]{10}$", - "title": "Bill Id", - "type": "string" - } - }, - "required": [ - "bill_id", - "auth_token" - ], - "title": "BillStatusInput", - "type": "object" - } -} - removed
Input schema / properties / bill_cancel_input / $refRemoved value: -"#/$defs/BillStatusInput" - added
Input schema / properties / bill_cancel_input / propertiesAdded value: +{ + "auth_token": { + "description": "authorization token attached to the user as obtained when submitting the bill, searching for a biller or getting a new auth token", + "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "title": "Auth Token", + "type": "string" + }, + "bill_id": { + "description": "identifier for the specific bill that was provided as a result of a bill extraction", + "pattern": "^[a-zA-Z0-9]{10}$", + "title": "Bill Id", + "type": "string" + } +} - added
Input schema / properties / bill_cancel_input / requiredAdded value: +[ + "bill_id", + "auth_token" +] - added
Input schema / properties / bill_cancel_input / titleAdded value: +"BillStatusInput" - added
Input schema / properties / bill_cancel_input / typeAdded value: +"object"
6 tool updates
- First observed
analyze_bill - First observed
check_payment_method - First observed
confirm_payment_intent - First observed
fetch_bill_status - First observed
get_new_auth_token - First observed
request_bill_cancellation
Related MCP Connectors
Pay any US bill in a snap, right from your chat — utilities, medical, rent, parking tickets & more.
Split bills from your AI: read bills & balances, create equal splits, request settlements.
Create a bill from a chat/photo and share it with anyone
Let your AI send invoices and take payment — card or ACH. Free.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceEnables AI agents to pay PIX bills and transfers using USDT on Polygon or Solana, without a conventional account or mandatory KYC. Provides local encrypted wallet management, on-chain balance checks, natural-language and document-based payment parsing, contacts, coupons, quotes, scheduled and recurring payments, receipts, and unresolved-operation alerts.2MIT- AlicenseNot gradedqualityBmaintenanceEnables integration with Abacate Pay API for managing payments, customers, and billing through AI assistants. Supports multi-tenancy, PIX QR codes, discount coupons, and payment simulation with secure per-request API key authentication.15 npm7MIT

TunaPay MCPofficial
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to pay for online purchases and subscriptions using one-time prepaid USD Visa cards drawn from the user's own wallet. Every charge requires explicit user approval, and each card is loaded with only the needed amount and freezes after a single payment.MIT- FlicenseAqualityBmaintenanceEnables AI agents to manage SplitBill bills and friends through natural language: create bills from receipts, list and filter bills, update payment statuses, search users, and view dashboard stats.7-
Glama MCP Gateway
Add one secure layer between your agents and this server.