{
  "$comment": "Not a WebMCP standard artifact. WebMCP tools are declared at runtime by the page via document.modelContext.registerTool(). This file is a static, inspectable mirror of what this page registers.",
  "site": "https://www.semanticsurface.com",
  "generated": "2026-08-28",
  "specification": "https://webmachinelearning.github.io/webmcp/",
  "status": "WebMCP is experimental: a W3C Community Group draft, in origin trial in Chrome and Edge, with no signal from Firefox or Safari. This page works without it.",
  "confirmation": "The browser does not enforce human confirmation for consequential actions. This page enforces it: the only write tool prepares a draft and cannot submit.",
  "tools": [
    {
      "name": "get_service_details",
      "title": "Get service details",
      "description": "Returns the scope, price and delivery time for one Semantic Surface engagement: the Surface Report, the Agent-Ready Retrofit, or Surface Watch. Answers with a structured record, not a sentence.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "service_name": {
            "type": "string",
            "description": "Engagement to look up: an engagement id, or its published name.",
            "enum": [
              "surface-report",
              "The Surface Report",
              "agent-ready-retrofit",
              "The Agent-Ready Retrofit",
              "surface-watch",
              "Surface Watch"
            ]
          }
        },
        "required": [
          "service_name"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "effect": "Reads published pricing. Changes nothing. An unlisted service name is rejected, never resolved to a default."
    },
    {
      "name": "estimate_engagement_scope",
      "title": "Estimate engagement scope",
      "description": "Given a website and a number of customer journeys, returns which engagement fits and what it would cover. An indicative scope, not a quote.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_url": {
            "type": "string",
            "description": "The website to scope, as a full http(s) URL including the host.",
            "format": "uri",
            "pattern": "^https?://[^/\\s]+\\.[^/\\s]+",
            "maxLength": 256
          },
          "journey_count": {
            "type": "integer",
            "description": "How many critical customer journeys must work. A whole number, 1 to 12.",
            "minimum": 1,
            "maximum": 12
          }
        },
        "required": [
          "website_url",
          "journey_count"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "effect": "Returns an indicative scope. Not a quote, and not stored. Both arguments are required and checked; nothing is assumed."
    },
    {
      "name": "run_surface_demo",
      "title": "Describe this page's three surfaces",
      "description": "Returns what this page declares about itself: its visual surface, its semantic surface, and the actions it exposes to agents.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "effect": "Describes this page. Changes nothing. Takes no arguments, and rejects any it is sent."
    },
    {
      "name": "prepare_website_test_request",
      "title": "Prepare a website test request",
      "description": "Drafts an intake request to have a website tested for agent readiness, and fills the visible form for a person to review. It does NOT submit anything.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "website_url": {
            "type": "string",
            "description": "The website that should be tested, as a full http(s) URL.",
            "format": "uri",
            "pattern": "^https?://[^/\\s]+\\.[^/\\s]+",
            "maxLength": 256
          },
          "work_email": {
            "type": "string",
            "description": "Work email address to send the findings to.",
            "format": "email",
            "maxLength": 254
          },
          "primary_conversion": {
            "type": "string",
            "description": "The action on the site that creates revenue, in a few words.",
            "maxLength": 200
          }
        },
        "required": [
          "website_url",
          "work_email",
          "primary_conversion"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      },
      "effect": "Fills the visible intake form and scrolls it into view. A person must review it and submit. This tool cannot submit the form, and it requires the same three fields the form does."
    }
  ]
}