{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-11-25",
  "serverInfo": {
    "name": "adam-hale-school-signals",
    "title": "School Signals and DfE AI safety evidence (USDC on Base)",
    "version": "1.0.0",
    "websiteUrl": "https://pay.adamhaleworks.workers.dev/"
  },
  "description": "UK school edtech procurement intelligence and a DfE AI-safety evidence toolkit for agents: free buyer search; paid renewal queries ($0.03) and buyer briefs ($0.20) via x402 in USDC on Base; the England snapshot (295 USDC) and the toolkit (149 USDC) via x402 or a verified plain USDC transfer.",
  "iconUrl": "https://pay.adamhaleworks.workers.dev/favicon.svg",
  "documentationUrl": "https://pay.adamhaleworks.workers.dev/#agents",
  "transport": {
    "type": "streamable-http",
    "endpoint": "/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authentication": {
    "required": false,
    "schemes": []
  },
  "instructions": "School Signals (English school edtech contract renewals and buyer briefs) and the DfE AI safety evidence toolkit. Start with school_signals_search (free). Paid tools settle in USDC on Base (eip155:8453) to 0x491Fcf30a5aa0483B3cd8C0041d21801F195B3AF via x402 v2: without payment they return the PaymentRequired object; sign it and retry with _meta[\"x402/payment\"]. Files can also be bought by plain transfer (create_transfer_order, then check_transfer_order). Coverage is partial (only published notices). The toolkit is not certification. HTTP docs: https://pay.adamhaleworks.workers.dev/ and https://pay.adamhaleworks.workers.dev/openapi.json. This server never asks for private keys.",
  "tools": [
    {
      "name": "school_signals_search",
      "title": "Find an English school, trust or council (free)",
      "description": "Free. Find buyer ids (school:<URN>, trust:<UID>, org:<slug>) with counts of published edtech contracts, renewals in the next 12 months, live tenders and trust changes. Use before school_buyer_brief.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "maxLength": 120,
            "description": "Name (3-120 characters), URN or GIAS group UID."
          }
        },
        "required": [
          "q"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Find an English school, trust or council (free)",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "school_renewals",
      "title": "Upcoming school edtech contract renewals ($0.03)",
      "description": "Paid $0.03 USDC. Up to 25 published edtech contracts at English schools, trusts and councils ending in a window, with incumbent, value, extensions, estimated re-procurement window and official notice links. Empty results and invalid filters are refused before payment.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ending_within_months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24,
            "description": "Window from today, 1-24 months (default 12)."
          },
          "include_recently_ended": {
            "type": "boolean",
            "description": "Also contracts that ended in the last 6 months."
          },
          "category": {
            "type": "string",
            "maxLength": 120,
            "description": "Edtech category.",
            "enum": [
              "CCTV, access & visitor management",
              "Classroom AV & interactive displays",
              "Cloud, licences & productivity",
              "Cyber security, filtering & safeguarding tech",
              "Devices & end-user hardware",
              "IT managed services & support",
              "Learning platforms, content & assessment",
              "MIS & school administration software",
              "Networks, Wi-Fi & connectivity",
              "Parent communication, payments & cashless",
              "Print & MFD",
              "School websites & digital",
              "Telephony"
            ]
          },
          "region": {
            "type": "string",
            "maxLength": 120,
            "description": "English region.",
            "enum": [
              "East Midlands",
              "East of England",
              "London",
              "North East",
              "North West",
              "South East",
              "South West",
              "West Midlands",
              "Yorkshire and the Humber"
            ]
          },
          "supplier": {
            "type": "string",
            "maxLength": 120,
            "description": "Incumbent supplier name contains this text."
          },
          "buyer": {
            "type": "string",
            "maxLength": 120,
            "description": "Buyer id from school_signals_search."
          },
          "x402_payment": {
            "type": "string",
            "maxLength": 16384,
            "description": "Optional, paid tools only: a signed x402 v2 PaymentPayload, base64. Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Upcoming school edtech contract renewals ($0.03)",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "school_buyer_brief",
      "title": "Buyer brief for one school, trust or council ($0.20)",
      "description": "Paid $0.20 USDC. Hierarchy, published edtech contracts and incumbents, upcoming renewals with estimated windows, live tenders, recent trust changes and official links for one buyer. Unknown, ambiguous (candidates returned) or evidence-free buyers are refused before payment.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "buyer": {
            "type": "string",
            "maxLength": 120,
            "description": "school:<URN>, trust:<UID>, org:<slug>, a URN or an exact name."
          },
          "x402_payment": {
            "type": "string",
            "maxLength": 16384,
            "description": "Optional, paid tools only: a signed x402 v2 PaymentPayload, base64. Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
          }
        },
        "required": [
          "buyer"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Buyer brief for one school, trust or council ($0.20)",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_products",
      "title": "Products, prices and payment terms (free)",
      "description": "Free. Every product with its price in USDC, route, licence and how to pay (x402 or plain transfer on Base).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Products, prices and payment terms (free)",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "buy_file_x402",
      "title": "Buy the England snapshot or the AI safety toolkit via x402",
      "description": "Paid 295 USDC (school-signals-england-snapshot) or 149 USDC (dfe-ai-safety-toolkit) via x402; returns a signed 48-hour download link, the file SHA-256 and an order URL. Without payment returns the x402 terms. If your client caps automatic payments, use create_transfer_order instead.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "maxLength": 120,
            "description": "File to buy.",
            "enum": [
              "school-signals-england-snapshot",
              "dfe-ai-safety-toolkit"
            ]
          },
          "x402_payment": {
            "type": "string",
            "maxLength": 16384,
            "description": "Optional, paid tools only: a signed x402 v2 PaymentPayload, base64. Prefer params._meta[\"x402/payment\"]. Never a private key or seed phrase."
          }
        },
        "required": [
          "product"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Buy the England snapshot or the AI safety toolkit via x402",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "create_transfer_order",
      "title": "Start a plain USDC transfer order for a file (free)",
      "description": "Free. Creates a 24-hour order with an order-specific exact USDC amount on Base. Send exactly that amount of canonical USDC to the recipient in one transfer, then call check_transfer_order with the transaction hash.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "maxLength": 120,
            "description": "File to buy.",
            "enum": [
              "school-signals-england-snapshot",
              "dfe-ai-safety-toolkit"
            ]
          }
        },
        "required": [
          "product"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Start a plain USDC transfer order for a file (free)",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "check_transfer_order",
      "title": "Check an order or submit its payment transaction (free)",
      "description": "Free. With only order: status (and a fresh download link once paid). With tx_hash: verifies the Base transaction (canonical USDC, recipient, exact amount, success, time window, 10 confirmations, never used before) and returns the download link.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order": {
            "type": "string",
            "maxLength": 120,
            "description": "Order id."
          },
          "tx_hash": {
            "type": "string",
            "maxLength": 120,
            "description": "Base transaction hash, 0x + 64 hex.",
            "pattern": "^0x[0-9a-fA-F]{64}$"
          }
        },
        "required": [
          "order"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Check an order or submit its payment transaction (free)",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    }
  ],
  "resources": [],
  "prompts": []
}