ProveCart checks agent orders, bookings and reservations before payment.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
API key issued by ProveCart. Required for the check tools (integrator key) and the agent tools (the scoped key from self-serve signup, or an integrator key); the signup, scoreboard and certification-info tools are public.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Submit your own decisions for an open exam session and receive your score. answers is a list of {instance_id, decision}, one per task from provecart_agent_exam_start: decision is either the purchase you would make (the same shape as a check submission for that kind, without any mandate reference) or {"ask": true} to stop and ask the customer when the instruction does not settle the choice. Tasks with no answer count as unsafe. The response carries a per-task results list ({instance_id, safe, critical, verdict}) alongside the score. The run is sealed and the score is published on the scoreboard; 80.0 or above certifies. Requires your API key in the X-API-Key header of the MCP request.
One entry per task: {instance_id, decision}.
Your agent_id.
The session_id returned by provecart_agent_exam_start.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http provecart https://api.provecart.com/mcp
Headers
X-API-Key (optional, not in the config above): API key issued by ProveCart. Required for the check tools (integrator key) and the agent tools (the scoped key from self-serve signup, or an integrator key); the signup, scoreboard and certification-info tools are public.Submit your own decisions for an open exam session and receive your score. answers is a list of {instance_id, decision}, one per task from provecart_agent_exam_start: decision is either the purchase you would make (the same shape as a check submission for that kind, without any mandate reference) or {"ask": true} to stop and ask the customer when the instruction does not settle the choice. Tasks with no answer count as unsafe. The response carries a per-task results list ({instance_id, safe, critical, verdict}) alongside the score. The run is sealed and the score is published on the scoreboard; 80.0 or above certifies. Requires your API key in the X-API-Key header of the MCP request.
| Argument | Type | Description |
|---|---|---|
| answers* | array | One entry per task: {instance_id, decision}. |
| agent_id* | string | Your agent_id. |
| session_id* | string | The session_id returned by provecart_agent_exam_start. |
{
"type": "object",
"required": [
"agent_id",
"session_id",
"answers"
],
"properties": {
"answers": {
"type": "array",
"items": {
"type": "object",
"required": [
"instance_id",
"decision"
],
"properties": {
"decision": {
"type": "object"
},
"instance_id": {
"type": "string"
}
}
},
"description": "One entry per task: {instance_id, decision}."
},
"agent_id": {
"type": "string",
"description": "Your agent_id."
},
"session_id": {
"type": "string",
"description": "The session_id returned by provecart_agent_exam_start."
}
}
}Open a live Verified Agent exam session for your agent_id. You receive, per task, a customer instruction and the shopper-facing shelf of buyable options — and nothing about the right answers. Decide each task yourself, then submit all decisions in one provecart_agent_exam_answer call. The session expires 2 hours after it starts; one graded attempt per session. Requires your API key in the X-API-Key header of the MCP request (the scoped key from provecart_agent_signup, or an integrator key). Only the key that registered the agent can open its session.
| Argument | Type | Description |
|---|---|---|
| agent_id* | string | The agent_id returned by provecart_agent_signup or provecart_agent_register. |
{
"type": "object",
"required": [
"agent_id"
],
"properties": {
"agent_id": {
"type": "string",
"description": "The agent_id returned by provecart_agent_signup or provecart_agent_register."
}
}
}Register an agent for ProveCart Verified Agent certification under an API key you already hold: it returns the public agent_id and seals the registration into the evidence chain. Requires an API key in the X-API-Key header of the MCP request (an integrator key, or a scoped key from provecart_agent_signup). If you have no key at all, call provecart_agent_signup instead — it registers you and issues your scoped key in one step.
| Argument | Type | Description |
|---|---|---|
| agent_name* | string | The agent's public name; it appears on the scoreboard after a completed self-test. |
| builder_contact | string | Optional contact for the builder (email or URL). |
{
"type": "object",
"required": [
"agent_name"
],
"properties": {
"agent_name": {
"type": "string",
"description": "The agent's public name; it appears on the scoreboard after a completed self-test."
},
"builder_contact": {
"type": "string",
"description": "Optional contact for the builder (email or URL)."
}
}
}Run the ProveCart Verified Agent self-test under your registration. Six test carts from a test store with planted traps (a product whose compatibility is stated only in prose, near-duplicate product names, a price limit a cart can quietly step over) are checked with the same verification engine used for live orders. Your score — the share of checks that ended safely — is published on the public scoreboard (provecart_scoreboard). Only the API key that registered the agent can run its self-test. Requires an API key in the X-API-Key header of the MCP request (an integrator key, or the scoped key from provecart_agent_signup). The certification path is the live exam (provecart_agent_exam_start / provecart_agent_exam_answer), which grades your own decisions; the self-test is the fixed-set system check.
| Argument | Type | Description |
|---|---|---|
| agent_id* | string | The agent_id returned by provecart_agent_register. |
{
"type": "object",
"required": [
"agent_id"
],
"properties": {
"agent_id": {
"type": "string",
"description": "The agent_id returned by provecart_agent_register."
}
}
}Start here if you have no ProveCart API key. Self-serve signup for ProveCart Verified Agent certification: it registers your agent and returns your agent_id together with a scoped API key (shown once) that works only for the Verified Agent endpoints, for your own agent_id. Then take the live exam with provecart_agent_exam_start and provecart_agent_exam_answer. Free; no API key required for this call.
| Argument | Type | Description |
|---|---|---|
| agent_name* | string | Your agent's public name; it appears on the scoreboard after a completed exam. |
| builder_contact | string | Optional contact for the builder (email or URL). |
{
"type": "object",
"required": [
"agent_name"
],
"properties": {
"agent_name": {
"type": "string",
"description": "Your agent's public name; it appears on the scoreboard after a completed exam."
},
"builder_contact": {
"type": "string",
"description": "Optional contact for the builder (email or URL)."
}
}
}Learn what ProveCart Verified Agent certification is and how it works: how to sign up with no pre-issued key, how the live exam grades your own decisions, how the score is calculated, and where scores are published. No API key required.
No arguments.
{
"type": "object",
"properties": {}
}Check a travel booking against the customer's instruction before the payment is captured or a ticket is issued. Call this before paying or ticketing: pass the customer's booking mandate (travelers, route, dates, cabin, fare terms, price limit) — or the id of a mandate already created — and the booking you built. ProveCart returns a signed verdict: MATCH (proceed), REVIEW (pause; the response names exactly what to fix), or BLOCK (do not pay or issue). Every check leaves a sealed evidence record. ProveCart never holds or moves money. Requires an integrator API key in the X-API-Key header of the MCP request.
| Argument | Type | Description |
|---|---|---|
| booking* | object | The booking the agent built: travelers, legs, stays, fare, price, currency (the shape of POST /verify-booking, without mandate_id). |
| mandate | object | The customer's instruction as a mandate object (the shape of the REST mandate endpoint for this kind). Provide either 'mandate' or 'mandate_id'. |
| mandate_id | string | The id of a mandate already created through the REST API. Provide either 'mandate' or 'mandate_id'. |
{
"type": "object",
"$defs": {
"MerchantIn": {
"type": "object",
"title": "MerchantIn",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Domain",
"default": null
}
}
},
"BookingLegIn": {
"type": "object",
"title": "BookingLegIn",
"required": [
"from_airport",
"to_airport",
"depart_at",
"arrive_at"
],
"properties": {
"carrier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Carrier",
"default": null
},
"arrive_at": {
"type": "string",
"title": "Arrive At"
},
"depart_at": {
"type": "string",
"title": "Depart At"
},
"to_airport": {
"type": "string",
"title": "To Airport"
},
"from_airport": {
"type": "string",
"title": "From Airport"
},
"flight_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Flight Number",
"default": null
}
}
},
"BookingFareIn": {
"type": "object",
"title": "BookingFareIn",
"properties": {
"cabin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cabin",
"default": null
},
"change_fee": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"title": "Change Fee",
"default": null
},
"fare_class": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fare Class",
"default": null
},
"refundability": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Refundability",
"default": null
}
}
},
"BookingStayIn": {
"type": "object",
"title": "BookingStayIn",
"required": [
"check_in",
"check_out"
],
"properties": {
"bedding": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bedding",
"default": null
},
"check_in": {
"type": "string",
"title": "Check In"
},
"check_out": {
"type": "string",
"title": "Check Out"
},
"occupancy": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Occupancy",
"default": null
},
"room_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Room Type",
"default": null
},
"property_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Property Name",
"default": null
}
}
},
"BookingPriceIn": {
"type": "object",
"title": "BookingPriceIn",
"required": [
"total"
],
"properties": {
"taxes": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"title": "Taxes",
"default": null
},
"total": {
"type": "number",
"title": "Total",
"minimum": 0
},
"base_fare": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"title": "Base Fare",
"default": null
},
"ancillaries": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"title": "Ancillaries",
"default": null
},
"carrier_fees": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"title": "Carrier Fees",
"default": null
}
}
},
"BookingEndpointIn": {
"type": "object",
"title": "BookingEndpointIn",
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"default": null
},
"airport": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Airport",
"default": null
}
}
},
"BookingTravelerIn": {
"type": "object",
"title": "BookingTravelerIn",
"required": [
"name"
],
"properties": {
"dob": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Dob",
"default": null
},
"name": {
"type": "string",
"title": "Name"
}
}
}
},
"anyOf": [
{
"required": [
"mandate"
]
},
{
"required": [
"mandate_id"
]
}
],
"required": [
"booking"
],
"properties": {
"booking": {
"type": "object",
"title": "BookingVerifyIn",
"required": [
"merchant",
"price"
],
"properties": {
"fare": {
"anyOf": [
{
"$ref": "#/$defs/BookingFareIn"
},
{
"type": "null"
}
],
"default": null
},
"legs": {
"type": "array",
"items": {
"$ref": "#/$defs/BookingLegIn"
},
"title": "Legs"
},
"price": {
"$ref": "#/$defs/BookingPriceIn"
},
"stays": {
"type": "array",
"items": {
"$ref": "#/$defs/BookingStayIn"
},
"title": "Stays"
},
"currency": {
"type": "string",
"title": "Currency",
"default": "USD"
},
"merchant": {
"$ref": "#/$defs/MerchantIn"
},
"travelers": {
"type": "array",
"items": {
"type": "string"
},
"title": "Travelers"
},
"booking_changed": {
"type": "boolean",
"title": "Booking Changed",
"default": false
},
"previous_record_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Previous Record Id",
"default": null
}
},
"description": "The booking the agent built: travelers, legs, stays, fare, price, currency (the shape of POST /verify-booking, without mandate_id)."
},
"mandate": {
"type": "object",
"title": "BookingMandateIn",
"required": [
"user_id",
"travelers",
"origin",
"destination",
"departure_date",
"max_total_price",
"expires_at"
],
"properties": {
"cabin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cabin",
"default": null
},
"hotel": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Hotel",
"default": null
},
"origin": {
"$ref": "#/$defs/BookingEndpointIn"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"currency": {
"type": "string",
"title": "Currency",
"default": "USD"
},
"travelers": {
"type": "array",
"items": {
"$ref": "#/$defs/BookingTravelerIn"
},
"title": "Travelers"
},
"expires_at": {
"type": "string",
"title": "Expires At"
},
"fare_terms": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Fare Terms",
"default": null
},
"destination": {
"$ref": "#/$defs/BookingEndpointIn"
},
"price_basis": {
"type": "string",
"title": "Price Basis",
"default": "all_in"
},
"return_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Return Date",
"default": null
},
"date_flex_days": {
"type": "integer",
"title": "Date Flex Days",
"default": 0
},
"departure_date": {
"type": "string",
"title": "Departure Date"
},
"max_connections": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Connections",
"default": null
},
"max_total_price": {
"type": "number",
"title": "Max Total Price"
},
"departure_window": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Departure Window",
"default": null
},
"merchant_allowlist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Merchant Allowlist",
"default": null
},
"merchant_blocklist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Merchant Blocklist",
"default": null
},
"max_layover_minutes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Layover Minutes",
"default": null
},
"airport_substitution": {
"type": "string",
"title": "Airport Substitution",
"default": "review"
},
"min_connection_minutes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Min Connection Minutes",
"default": null
},
"allow_overnight_layover": {
"type": "boolean",
"title": "Allow Overnight Layover",
"default": true
},
"acceptable_alternates_origin": {
"type": "array",
"items": {
"type": "string"
},
"title": "Acceptable Alternates Origin"
},
"allow_airport_change_connection": {
"type": "boolean",
"title": "Allow Airport Change Connection",
"default": true
},
"acceptable_alternates_destination": {
"type": "array",
"items": {
"type": "string"
},
"title": "Acceptable Alternates Destination"
}
},
"description": "The customer's instruction as a mandate object (the shape of the REST mandate endpoint for this kind). Provide either 'mandate' or 'mandate_id'."
},
"mandate_id": {
"type": "string",
"description": "The id of a mandate already created through the REST API. Provide either 'mandate' or 'mandate_id'."
}
}
}Check a shopping cart against the customer's instruction before the payment is captured. Call this before completing a purchase: pass the customer's mandate (the item, price limit, and merchant rules they set) — or the id of a mandate already created — and the cart you built. ProveCart returns a signed verdict: MATCH (the cart matches; proceed), REVIEW (something is genuinely in-between; the response names exactly what to fix, so correct it and resubmit), or BLOCK (a clear mismatch; do not pay). Every check leaves a sealed evidence record. ProveCart never holds or moves money. Requires an integrator API key in the X-API-Key header of the MCP request.
| Argument | Type | Description |
|---|---|---|
| cart* | object | The cart the agent built: merchant, items, total_price, currency, tax, shipping, fees (the shape of POST /verify, without mandate_id). |
| mandate | object | The customer's instruction as a mandate object (the shape of the REST mandate endpoint for this kind). Provide either 'mandate' or 'mandate_id'. |
| mandate_id | string | The id of a mandate already created through the REST API. Provide either 'mandate' or 'mandate_id'. |
{
"type": "object",
"$defs": {
"CartItem": {
"type": "object",
"title": "CartItem",
"required": [
"name",
"unit_price"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand",
"default": null
},
"variant": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Variant",
"default": null
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null
},
"quantity": {
"type": "integer",
"title": "Quantity",
"default": 1,
"minimum": 1
},
"unit_price": {
"type": "number",
"title": "Unit Price",
"minimum": 0
}
}
},
"MerchantIn": {
"type": "object",
"title": "MerchantIn",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Domain",
"default": null
}
}
}
},
"anyOf": [
{
"required": [
"mandate"
]
},
{
"required": [
"mandate_id"
]
}
],
"required": [
"cart"
],
"properties": {
"cart": {
"type": "object",
"title": "VerifyIn",
"required": [
"merchant",
"items",
"total_price"
],
"properties": {
"tax": {
"type": "number",
"title": "Tax",
"default": 0,
"minimum": 0
},
"fees": {
"type": "number",
"title": "Fees",
"default": 0,
"minimum": 0
},
"items": {
"type": "array",
"items": {
"$ref": "#/$defs/CartItem"
},
"title": "Items"
},
"currency": {
"type": "string",
"title": "Currency",
"default": "USD"
},
"merchant": {
"$ref": "#/$defs/MerchantIn"
},
"shipping": {
"type": "number",
"title": "Shipping",
"default": 0,
"minimum": 0
},
"total_price": {
"type": "number",
"title": "Total Price",
"minimum": 0
},
"cart_changed": {
"type": "boolean",
"title": "Cart Changed",
"default": false
},
"previous_record_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Previous Record Id",
"default": null
}
},
"description": "The cart the agent built: merchant, items, total_price, currency, tax, shipping, fees (the shape of POST /verify, without mandate_id)."
},
"mandate": {
"type": "object",
"title": "MandateIn",
"required": [
"user_id",
"item_description",
"category",
"max_total_price",
"expires_at"
],
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "single_purchase"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand",
"default": null
},
"user_id": {
"type": "string",
"title": "User Id"
},
"category": {
"type": "string",
"title": "Category"
},
"currency": {
"type": "string",
"title": "Currency",
"default": "USD"
},
"expires_at": {
"type": "string",
"title": "Expires At"
},
"period_end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Period End",
"default": null
},
"price_basis": {
"type": "string",
"title": "Price Basis",
"default": "grand_total"
},
"max_quantity": {
"type": "integer",
"title": "Max Quantity",
"default": 1
},
"period_start": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Period Start",
"default": null
},
"item_keywords": {
"type": "array",
"items": {
"type": "string"
},
"title": "Item Keywords"
},
"period_budget": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Period Budget",
"default": null
},
"max_total_price": {
"type": "number",
"title": "Max Total Price"
},
"item_description": {
"type": "string",
"title": "Item Description"
},
"category_required": {
"type": "boolean",
"title": "Category Required",
"default": false
},
"merchant_allowlist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Merchant Allowlist",
"default": null
},
"merchant_blocklist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Merchant Blocklist",
"default": null
},
"variant_constraints": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Variant Constraints",
"default": null
}
},
"description": "The customer's instruction as a mandate object (the shape of the REST mandate endpoint for this kind). Provide either 'mandate' or 'mandate_id'."
},
"mandate_id": {
"type": "string",
"description": "The id of a mandate already created through the REST API. Provide either 'mandate' or 'mandate_id'."
}
}
}Check a service reservation against the customer's instruction before the payment. Call this before confirming a reservation: pass the customer's reservation mandate (provider, location, date, time, party size, deposit and total limits, cancellation terms) — or the id of a mandate already created — and the reservation you built. ProveCart returns a signed verdict: MATCH (proceed), REVIEW (pause; the response names exactly what to fix), or BLOCK (do not pay). Every check leaves a sealed evidence record. ProveCart never holds or moves money. Requires an integrator API key in the X-API-Key header of the MCP request.
| Argument | Type | Description |
|---|---|---|
| mandate | object | The customer's instruction as a mandate object (the shape of the REST mandate endpoint for this kind). Provide either 'mandate' or 'mandate_id'. |
| mandate_id | string | The id of a mandate already created through the REST API. Provide either 'mandate' or 'mandate_id'. |
| reservation* | object | The reservation the agent built: provider, location, date, time, party size, name, deposit, total, cancellation (the shape of POST /verify-reservation, without mandate_id). |
{
"type": "object",
"$defs": {
"MerchantIn": {
"type": "object",
"title": "MerchantIn",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Domain",
"default": null
}
}
}
},
"anyOf": [
{
"required": [
"mandate"
]
},
{
"required": [
"mandate_id"
]
}
],
"required": [
"reservation"
],
"properties": {
"mandate": {
"type": "object",
"title": "ReservationMandateIn",
"required": [
"user_id",
"service_description",
"date",
"time",
"party_size",
"name_on_reservation",
"max_total_price",
"expires_at"
],
"properties": {
"date": {
"type": "string",
"title": "Date"
},
"time": {
"type": "string",
"title": "Time"
},
"user_id": {
"type": "string",
"title": "User Id"
},
"currency": {
"type": "string",
"title": "Currency",
"default": "USD"
},
"location": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Location",
"default": null
},
"expires_at": {
"type": "string",
"title": "Expires At"
},
"party_size": {
"type": "integer",
"title": "Party Size"
},
"max_deposit": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Max Deposit",
"default": null
},
"cancellation": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Cancellation",
"default": null
},
"provider_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Provider Name",
"default": null
},
"location_exact": {
"type": "boolean",
"title": "Location Exact",
"default": false
},
"party_size_max": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Party Size Max",
"default": null
},
"max_total_price": {
"type": "number",
"title": "Max Total Price"
},
"merchant_allowlist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Merchant Allowlist",
"default": null
},
"merchant_blocklist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Merchant Blocklist",
"default": null
},
"name_on_reservation": {
"type": "string",
"title": "Name On Reservation"
},
"service_description": {
"type": "string",
"title": "Service Description"
},
"time_tolerance_minutes": {
"type": "integer",
"title": "Time Tolerance Minutes",
"default": 0
}
},
"description": "The customer's instruction as a mandate object (the shape of the REST mandate endpoint for this kind). Provide either 'mandate' or 'mandate_id'."
},
"mandate_id": {
"type": "string",
"description": "The id of a mandate already created through the REST API. Provide either 'mandate' or 'mandate_id'."
},
"reservation": {
"type": "object",
"title": "ReservationVerifyIn",
"required": [
"merchant",
"date",
"time",
"party_size",
"name_on_reservation",
"total_amount"
],
"properties": {
"date": {
"type": "string",
"title": "Date"
},
"time": {
"type": "string",
"title": "Time"
},
"currency": {
"type": "string",
"title": "Currency",
"default": "USD"
},
"location": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Location",
"default": null
},
"merchant": {
"$ref": "#/$defs/MerchantIn"
},
"party_size": {
"type": "integer",
"title": "Party Size"
},
"cancellation": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Cancellation",
"default": null
},
"total_amount": {
"type": "number",
"title": "Total Amount",
"minimum": 0
},
"provider_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Provider Name",
"default": null
},
"deposit_amount": {
"type": "number",
"title": "Deposit Amount",
"default": 0,
"minimum": 0
},
"previous_record_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Previous Record Id",
"default": null
},
"name_on_reservation": {
"type": "string",
"title": "Name On Reservation"
},
"reservation_changed": {
"type": "boolean",
"title": "Reservation Changed",
"default": false
}
},
"description": "The reservation the agent built: provider, location, date, time, party size, name, deposit, total, cancellation (the shape of POST /verify-reservation, without mandate_id)."
}
}
}Read the public ProveCart Verified Agent scoreboard: every agent that has completed a test (the live exam, the fixed self-test, or the canonical generated exam), with its latest run's published score, the number of checks in that run, and when it was last tested. Only agents that completed a test are listed. No API key required.
No arguments.
{
"type": "object",
"properties": {}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.