Unamused Agent API · live

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

ActionRuns viaApproval
Order pizza
place_order — Place a pickup order at Mario's Slice Shop. Demo: no real order is placed.
webhook required
Message the shop
contact_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.