Agentic Commerce Protocol sandbox: agent builds a cart, human approves a real PayPal payment.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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.
Cancel an open checkout. Nothing is charged.
Sandbox key from create_checkout (not needed if the connection already carries one).
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Cancel an open checkout. Nothing is charged.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| session_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"session_id": {
"type": "string"
}
}
}Place the order. With payment "paypal" the approved PayPal payment is captured first, and the order only goes through if PayPal confirms the money for the exact total. "mock" skips real payment (testing only).
| Argument | Type | Description |
|---|---|---|
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| payment | string | |
| session_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"payment": {
"enum": [
"paypal",
"mock"
],
"type": "string",
"default": "paypal"
},
"session_id": {
"type": "string"
}
}
}Start a checkout (an Agentic Commerce Protocol checkout session) with the products and quantities the user wants. Returns the session id, the cart and its total. If no api_key is given, a sandbox key is created and returned.
| Argument | Type | Description |
|---|---|---|
| items* | array | Products to buy, by product_id from list_products. |
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| buyer_email | string | The buyer's email, if the user gave one. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"product_id",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 99,
"exclusiveMinimum": 0
},
"product_id": {
"type": "string"
}
}
},
"minItems": 1,
"description": "Products to buy, by product_id from list_products."
},
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"buyer_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The buyer's email, if the user gave one."
}
}
}Read the current cart, total, payment status and order of a checkout.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| session_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"session_id": {
"type": "string"
}
}
}List everything the demo store sells, with product ids and prices. Prices are in USD.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Create a PayPal (sandbox) payment for the checkout's exact total. Returns approve_url, the PayPal link where the user approves the payment.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| session_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"session_id": {
"type": "string"
}
}
}Replace the items in an open checkout (e.g. the user changed their mind). Any PayPal payment created for the old total is dropped.
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| session_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"product_id",
"quantity"
],
"properties": {
"quantity": {
"type": "integer",
"maximum": 99,
"exclusiveMinimum": 0
},
"product_id": {
"type": "string"
}
}
},
"minItems": 1
},
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"session_id": {
"type": "string"
}
}
}Wait (up to 45s per call) until PayPal reports the user approved the payment. Returns still_waiting if the user has not approved yet.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Sandbox key from create_checkout (not needed if the connection already carries one). |
| session_id* | string | |
| timeout_seconds | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Sandbox key from create_checkout (not needed if the connection already carries one)."
},
"session_id": {
"type": "string"
},
"timeout_seconds": {
"type": "integer",
"default": 45,
"maximum": 45,
"minimum": 1
}
}
}