{
  "name": "Keith Andre Rose agent",
  "description": "The site's own agent. Answers questions about what is published here and, where a shop is configured, points a buying agent at the protocol it should use. Read-only: it changes nothing and holds no tool that could.",
  "version": "0.3",
  "supportedInterfaces": [
    {
      "url": "https://keithandrerose.com/api/ai/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/ap2/v1",
        "description": "Verifies AP2 Checkout Mandates and returns signed Checkout Receipts. Merchant role.",
        "required": false
      }
    ]
  },
  "skills": [
    {
      "id": "site-enquiry",
      "name": "Site enquiry",
      "description": "Answers questions about this site and its work — projects, tools, writing and what the person behind it does. Reads only what the site already publishes.",
      "tags": [
        "questions",
        "portfolio",
        "documentation"
      ],
      "examples": [
        "What has Keith built with Cloudflare Workers?",
        "Which of these tools are open source?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain"
      ]
    },
    {
      "id": "market-catalogue",
      "name": "Catalogue enquiry",
      "description": "Describes what is for sale and how to buy it, and hands back the checkout surface to use — ACP, UCP, MPP or x402. Discovery and handoff only: it reports listed prices as published and never computes a total, because pricing has one implementation here and a second one would disagree with it.",
      "tags": [
        "commerce",
        "catalogue",
        "checkout"
      ],
      "examples": [
        "What do you sell?",
        "How would an agent buy the licence for that tool?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain"
      ]
    },
    {
      "id": "ap2-checkout-mandate",
      "name": "Checkout Mandate verification",
      "description": "Verifies an AP2 Checkout Mandate presented as an SD-JWT chain and returns a signed Checkout Receipt. Send the Mandate as a DataPart keyed `ap2.checkout_mandate`; the receipt comes back under `ap2.checkout_receipt`, on the refusing path as well as the accepting one, because a refusal a shopping agent cannot file against its open Mandate leaves that Mandate reusable.",
      "tags": [
        "commerce",
        "ap2",
        "mandate",
        "payments"
      ],
      "examples": [
        "Verify this Checkout Mandate against the Checkout you signed for session_1."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "provider": {
    "organization": "Keith Andre Rose",
    "url": "https://keithandrerose.com"
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain"
  ],
  "securitySchemes": {
    "bearer": {
      "httpAuthSecurityScheme": {
        "scheme": "bearer",
        "description": "An API key issued by the site operator, presented as a bearer token."
      }
    }
  },
  "securityRequirements": [
    {
      "schemes": {
        "bearer": {
          "list": []
        }
      }
    }
  ]
}