{
  "openapi": "3.1.0",
  "info": {
    "title": "AgentShopping catalog API",
    "version": "0.1.0",
    "description": "Read-only, static JSON catalog of buyer-agent transaction intents and supply offers. No authentication, no write operations, no funds. Prices and specifications are never asserted.",
    "contact": {
      "name": "Disclosure",
      "url": "https://agentshopping.org/disclosure.html"
    },
    "license": {
      "name": "CC0-1.0",
      "url": "https://creativecommons.org/publicdomain/zero/1.0/"
    }
  },
  "servers": [
    {
      "url": "https://agentshopping.org"
    }
  ],
  "tags": [
    {
      "name": "intents",
      "description": "Buyer transaction intent catalog"
    },
    {
      "name": "offers",
      "description": "Supply offers"
    },
    {
      "name": "match",
      "description": "Deterministic requirement matching"
    }
  ],
  "paths": {
    "/api/v1/intents/index.json": {
      "get": {
        "tags": [
          "intents"
        ],
        "summary": "List 100 buyer intents",
        "operationId": "listIntents",
        "responses": {
          "200": {
            "description": "Intent index",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/intents/{id}.json": {
      "get": {
        "tags": [
          "intents"
        ],
        "summary": "Get one intent",
        "operationId": "getIntent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "buy-vps"
          }
        ],
        "responses": {
          "200": {
            "description": "One intent",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Unknown intent"
          }
        }
      }
    },
    "/api/v1/offers.json": {
      "get": {
        "tags": [
          "offers"
        ],
        "summary": "List supply offers",
        "operationId": "listOffers",
        "responses": {
          "200": {
            "description": "Supply catalog",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matches/{workload}.json": {
      "get": {
        "tags": [
          "match"
        ],
        "summary": "Match or reject a workload",
        "operationId": "matchWorkload",
        "parameters": [
          {
            "name": "workload",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "personal_proxy",
                "background_jobs",
                "self_hosted_automation",
                "production_service",
                "gpu_inference",
                "managed_app"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Explainable match result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Unknown workload"
          }
        }
      }
    },
    "/api/v1/schema.json": {
      "get": {
        "tags": [
          "match"
        ],
        "summary": "Match request JSON Schema",
        "operationId": "getRequestSchema",
        "responses": {
          "200": {
            "description": "JSON Schema",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/match.py": {
      "get": {
        "tags": [
          "match"
        ],
        "summary": "Reference matcher implementation",
        "operationId": "getMatcher",
        "responses": {
          "200": {
            "description": "Python source",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "tags": [
          "mcp"
        ],
        "summary": "MCP Streamable HTTP JSON-RPC endpoint",
        "operationId": "mcpRpc",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC result"
          },
          "202": {
            "description": "Notification, no response"
          },
          "400": {
            "description": "Parse error"
          },
          "413": {
            "description": "Request too large"
          }
        }
      }
    },
    "/api/v1/ecosystem.json": {
      "get": {
        "tags": [
          "intents"
        ],
        "summary": "Open-source project relationship record",
        "operationId": "getEcosystem",
        "responses": {
          "200": {
            "description": "Ecosystem record",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  }
}
