{
  "protocolVersion": "0.3.0",
  "name": "edicola.shop",
  "version": "1.0.0",
  "description": "Italian magazine marketplace — browse catalog, search by title/EAN, fetch product/category content as Markdown. Operates as an MCP server and an A2A agent over JSON-RPC. Supports AP2 agent payments (shopper + merchant roles) via x402 demo and traditional Stripe/PayPal rails.",
  "url": "https://edicola.shop/mcp/",
  "preferredTransport": "JSONRPC",
  "supportedInterfaces": [
    {
      "transportProtocol": "JSONRPC",
      "transport": "JSONRPC",
      "url": "https://edicola.shop/mcp/",
      "serviceUrl": "https://edicola.shop/mcp/"
    }
  ],
  "additionalInterfaces": [
    {
      "transport": "JSONRPC",
      "url": "https://edicola.shop/mcp/"
    }
  ],
  "documentationUrl": "https://edicola.shop/llms.txt",
  "iconUrl": "https://edicola.shop/favicon.ico",
  "provider": {
    "organization": "edicola.shop",
    "url": "https://edicola.shop"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/ap2/tree/v0.1",
        "description": "edicola.shop participates in AP2 as merchant and shopper-facing agent. Signs Intent/Cart/Payment Mandate templates via Ed25519 (kid 'edicola-oauth-2026-06'). Settlement currently routes to Stripe + PayPal (traditional rails) and x402 demo (Base Sepolia).",
        "required": false,
        "params": {
          "roles": ["merchant", "shopper"],
          "mandate_template_endpoint": "https://edicola.shop/api-agent/ap2/mandate-template",
          "signing_key_url": "https://edicola.shop/.well-known/http-message-signatures-directory",
          "signing_algorithm": "EdDSA",
          "supported_mandates": ["IntentMandate", "CartMandate", "PaymentMandate"]
        }
      }
    ]
  },
  "defaultInputModes": ["application/json", "text/plain"],
  "defaultOutputModes": ["text/markdown", "text/plain", "application/json"],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://edicola.shop/oauth/authorize",
          "tokenUrl": "https://edicola.shop/oauth/token",
          "scopes": {
            "catalog:read": "Read product catalog",
            "category:read": "Read category trees",
            "llms:read": "Read llms.txt and Markdown pages"
          }
        }
      }
    },
    "anonymous": {
      "type": "openIdConnect",
      "openIdConnectUrl": "https://edicola.shop/.well-known/oauth-authorization-server"
    }
  },
  "security": [
    {},
    { "oauth2": ["catalog:read", "category:read", "llms:read"] }
  ],
  "skills": [
    {
      "id": "search",
      "name": "Search catalog",
      "description": "Search edicola.shop catalog by title, publisher, ISBN or EAN. Returns a search results URL the agent can fetch.",
      "tags": ["search", "catalog", "magazines"],
      "examples": [
        "search for 'National Geographic Italia'",
        "search EAN 9772038240007"
      ],
      "inputModes": ["application/json", "text/plain"],
      "outputModes": ["text/markdown", "application/json"]
    },
    {
      "id": "open_product",
      "name": "Get product detail",
      "description": "Fetch a specific product page as Markdown with Schema.org metadata.",
      "tags": ["product", "detail"],
      "examples": [
        "open product https://edicola.shop/some-product.html"
      ]
    },
    {
      "id": "open_category",
      "name": "Browse category",
      "description": "List products in a category. Top-level slugs: nuove-uscite, arretrati, abbonamenti, collezioni, fumetti-e-manga, libri.",
      "tags": ["category", "browse"],
      "examples": [
        "open category nuove-uscite",
        "open category fumetti-e-manga"
      ]
    },
    {
      "id": "get_llms_txt",
      "name": "Get site summary",
      "description": "Fetch llms.txt with brand info and content policy.",
      "tags": ["llms", "policy"],
      "examples": ["get llms.txt"]
    },
    {
      "id": "get_markdown",
      "name": "Get page as Markdown",
      "description": "Fetch any edicola.shop page with token-efficient Markdown rendering.",
      "tags": ["markdown", "fetch"],
      "examples": [
        "get markdown for /contacts/"
      ]
    },
    {
      "id": "ap2_mandate",
      "name": "Issue AP2 mandate template",
      "description": "Returns an unsigned IntentMandate/CartMandate template for an agent to fill and sign per AP2 v0.1. Server-side signed mandates available at /api-agent/ap2/mandate-template?signed=1.",
      "tags": ["ap2", "payment", "mandate"],
      "examples": [
        "get mandate template for 'buy National Geographic Italia under €15'"
      ]
    }
  ]
}
