Mario's Slice Shop (demo)
AI agents can now order pizza, message the shop. Point any MCP-capable agent (Muse, Claude, ChatGPT) at the endpoints below, or submit the manifest to Meta's Muse connector directory.
Endpoints
MCP server (agents connect here)
https://unamused.app/a/deadbeef0002/mcp
OpenAPI 3.1 spec
https://unamused.app/a/deadbeef0002/openapi.json
Connector manifest
https://unamused.app/a/deadbeef0002/manifest.json
Your actions
| Action | Runs via | Approval |
|---|---|---|
Order pizzaplace_order — Place a pickup order at Mario's Slice Shop. Demo: no real order is placed. |
webhook | required |
Message the shopcontact_business — Send a message to Mario's Slice Shop. Demo: goes to the echo service. |
webhook | no |
Try it
Call an action right from your terminal:
curl example
curl -X POST https://unamused.app/a/deadbeef0002/actions/place_order \
-H 'Content-Type: application/json' \
-d '{"name": "Jane Doe"}'
Actions marked approval required are gated server-side: the first call
validates your parameters and returns approval_required plus a single-use
approval_token (valid 10 minutes). Call again with
{"approval_token": "..."} after the human approves to execute.
Webhook deliveries are signed — verify X-Unamused-Signature (HMAC-SHA256 of
<timestamp>.<body>) and reject old X-Unamused-Timestamp
values to stop replays.
OpenAPI spec
openapi.json
{
"openapi": "3.1.0",
"info": {
"title": "Mario's Slice Shop (demo) \u2014 Agent API",
"version": "1.0.0",
"description": "Machine-usable actions for Mario's Slice Shop (demo) (https://example.com/marios-slice), generated free by Unamused. Submit this spec to an agent connector directory (e.g. Meta's Muse connector platform) to let AI agents act on behalf of customers."
},
"servers": [
{
"url": "https://unamused.app"
}
],
"paths": {
"/a/deadbeef0002/actions/place_order": {
"post": {
"summary": "Order pizza",
"description": "Place a pickup order at Mario's Slice Shop. Demo: no real order is placed. NOTE: this action commits the business (booking/order) and approval is enforced server-side. The first call only validates and returns approval_required + a single-use approval_token (10 min). Call again with {\"approval_token\": \"...\"} after the human approves to execute.",
"operationId": "place_order",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Customer's full name"
},
"phone_or_email": {
"type": "string",
"description": "Customer's phone or email"
},
"items": {
"type": "string",
"description": "Pizzas and sides to order"
}
},
"additionalProperties": false,
"required": [
"name",
"phone_or_email",
"items"
]
}
}
}
},
"responses": {
"200": {
"description": "Action result"
}
},
"x-unamused-requires-approval": true
}
},
"/a/deadbeef0002/actions/contact_business": {
"post": {
"summary": "Message the shop",
"description": "Send a message to Mario's Slice Shop. Demo: goes to the echo service.",
"operationId": "contact_business",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Your name"
},
"message": {
"type": "string",
"description": "Your message"
}
},
"additionalProperties": false,
"required": [
"name",
"message"
]
}
}
}
},
"responses": {
"200": {
"description": "Action result"
}
}
}
}
}
}
Next: submit https://unamused.app/a/deadbeef0002/manifest.json to Meta's
Muse connector directory so customers reach you just by asking their agent.
Methodology and source: GitHub.