Unamused Agent API · live

Green Thumb Landscaping (demo)

AI agents can now book a site visit, request a quote. 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/deadbeef0003/mcp
OpenAPI 3.1 spec
https://unamused.app/a/deadbeef0003/openapi.json
Connector manifest
https://unamused.app/a/deadbeef0003/manifest.json

Your actions

ActionRuns viaApproval
Book a site visit
book_appointment — Book a free landscaping estimate visit. Demo: no real visit is scheduled.
link required
Request a quote
request_quote — Ask Green Thumb Landscaping for a project quote. 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/deadbeef0003/actions/book_appointment \
  -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": "Green Thumb Landscaping (demo) \u2014 Agent API",
    "version": "1.0.0",
    "description": "Machine-usable actions for Green Thumb Landscaping (demo) (https://example.com/green-thumb), 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/deadbeef0003/actions/book_appointment": {
      "post": {
        "summary": "Book a site visit",
        "description": "Book a free landscaping estimate visit. Demo: no real visit is scheduled. 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": "book_appointment",
        "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"
                  },
                  "preferred_time": {
                    "type": "string",
                    "description": "Preferred date/time"
                  }
                },
                "additionalProperties": false,
                "required": [
                  "name",
                  "phone_or_email"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Action result"
          }
        },
        "x-unamused-requires-approval": true
      }
    },
    "/a/deadbeef0003/actions/request_quote": {
      "post": {
        "summary": "Request a quote",
        "description": "Ask Green Thumb Landscaping for a project quote. Demo: goes to the echo service.",
        "operationId": "request_quote",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Customer's full name"
                  },
                  "details": {
                    "type": "string",
                    "description": "What you want quoted"
                  }
                },
                "additionalProperties": false,
                "required": [
                  "name",
                  "details"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Action result"
          }
        }
      }
    }
  }
}

Next: submit https://unamused.app/a/deadbeef0003/manifest.json to Meta's Muse connector directory so customers reach you just by asking their agent. Methodology and source: GitHub.