{
  "schemaVersion": "1.0.0",
  "target": {
    "id": "astro",
    "endpoint": "https://mcp.docs.astro.build/mcp",
    "sourceUrl": "https://docs.astro.build/en/guides/build-with-ai/"
  },
  "run": {
    "id": "c832174f-a4ba-4e3f-b0b3-10dc0fea5858",
    "startedAt": "2026-10-15T07:18:09.291Z",
    "completedAt": "2026-10-15T07:18:10.350Z",
    "runnerVersion": "1.0.0",
    "protocol": "2025-06-18",
    "limits": {
      "requestTimeoutMs": 12000,
      "runTimeoutMs": 35000,
      "responseBytes": 1048576,
      "requests": 9
    }
  },
  "scenario": {
    "targetId": "astro",
    "tool": "search_astro_docs",
    "arguments": {
      "query": "Astro file based routing src/pages"
    },
    "task": "Find Astro's public documentation for file-based routing.",
    "expectedText": ["routing", "src/pages"],
    "id": "astro-routing-docs",
    "version": "1"
  },
  "result": {
    "status": "passed",
    "outcome": "The response passed the registered content assertions.",
    "isError": false,
    "durationMs": 597,
    "responseBytes": 32627,
    "sha256": "c1bfa2445c77bc0a09168bd87b307f2e73bf1c96b4381a91ac711b2e96c00ce0",
    "excerpt": "{\n  \"search_results\": [\n    {\n      \"content\": \"# En > Guides\\n## Routing\\n\\nAstro uses **file-based routing** to generate your build URLs based on the file layout of your project `src/pages/` directory.\\n\\n### Navigating between pages\\n\\nAstro uses standard HTML [`<a>` elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a) to navigate between routes. There is no framework-specific `<Link>` component provided.\\n\\nsrc/pages/index.astro\\n\\n```\\n<p>Read more <a href=\\\"/about/\\\">about</a> Astro!</p>\\n<!-- With `base: \\\"/docs\\\"` configured --><p>Learn more in our <a href=\\\"/docs/reference/\\\">reference</a> section!</p>\\n```\\n\\n### Static routes\\n\\n`.astro` [page components](https://docs.astro.build/en/basics/astro-pages/) as well as Markdown and MDX Files (`.md`, `.mdx`) within the `src/pages/` directory **automatically become pages on your website**. Each page’s route corresponds to its path and filename within the `src/pages/` directory.\\n\\n```\\n Example: Static routessrc/pages/index.astro        -> mysite.com/src/pages/about.astro        -> mysite.com/aboutsrc/pages/about/index.astro  -> mysite.com/aboutsrc/pages/about/me.astro     -> mysite.com/about/mesrc/pages/posts",
    "assertions": [
      {
        "text": "routing",
        "passed": true
      },
      {
        "text": "src/pages",
        "passed": true
      }
    ]
  },
  "evidence": {
    "toolCalls": 1,
    "requests": [
      {
        "method": "initialize",
        "durationMs": 205,
        "responseBytes": 208,
        "httpStatus": 200
      },
      {
        "method": "notifications/initialized",
        "durationMs": 114,
        "responseBytes": 0,
        "httpStatus": 202
      },
      {
        "method": "tools/list",
        "durationMs": 118,
        "responseBytes": 386,
        "httpStatus": 200
      },
      {
        "method": "tools/call",
        "durationMs": 594,
        "responseBytes": 32684,
        "httpStatus": 200
      }
    ]
  },
  "limitations": [
    "One fixed public read-only request from a direct MCP client. No model selection, ChatGPT/Claude host, OAuth, private account or write behavior was tested.",
    "Content assertions check the listed literal terms and absence of a tool error; they do not establish complete factual correctness, relevance or production reliability.",
    "Observed call duration is one sample and includes network conditions. It is not a latency benchmark or a comparison between services.",
    "Only the first tools/list page is inspected for this selected tool. No notification stream, redirect, credentials or caller-supplied scenario is allowed.",
    "Response SHA-256 covers the UTF-8 JSON serialization of the SDK-parsed tool result. Only a bounded public text excerpt is retained; it is untrusted server content."
  ]
}
