{
  "sample": true,
  "notice": "SAMPLE DATA. Relaykit is a fictional company; these numbers are illustrative, not measurements.",
  "workspace": {
    "name": "Relaykit",
    "slug": "demo",
    "product": "Relaykit"
  },
  "period": {
    "start": "2026-10-12",
    "end": "2026-10-18",
    "label": "Oct 12 – Oct 18, 2026"
  },
  "generated_at": "2026-10-19T07:00:00.000Z",
  "method_version": "found-v2 · used-v4 · fix-v1",
  "notes": [
    "Rates are fractions from 0 to 1. ci_lo/ci_hi are the Wilson 95% range.",
    "null means unknown, never zero; null_reason says why. too_few_n means the sample is below our minimum, so the value is withheld.",
    "Assistant results come from the official APIs, not the consumer apps."
  ],
  "headline": [
    "AI assistants cite Relaykit in 25% of answers (n=480, 4 of 5 assistants answered).",
    "Grok did not answer this week (billing), so its column is blank instead of zero.",
    "Fix first: unblock OAI-SearchBot, which was refused on 31% of its requests."
  ],
  "metrics": [
    {
      "key": "found.cited_in_questions",
      "label": "Buyer questions where an assistant cited you",
      "module": "found",
      "unit": "count",
      "value": 10,
      "n": 30,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.top_competitor.cited_in_questions",
      "label": "Buyer questions citing your top competitor (Courierly)",
      "module": "found",
      "unit": "count",
      "value": 19,
      "n": 30,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.assistants_answered",
      "label": "Assistants that answered",
      "module": "found",
      "unit": "count",
      "value": 4,
      "n": 5,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.cited_rate.claude",
      "label": "Claude: share of answers citing you",
      "module": "found",
      "unit": "rate",
      "value": 0.23333333333333334,
      "n": 120,
      "ci_lo": 0.16665469513089648,
      "ci_hi": 0.31655611609893264,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.cited_rate.openai",
      "label": "ChatGPT: share of answers citing you",
      "module": "found",
      "unit": "rate",
      "value": 0.25833333333333336,
      "n": 120,
      "ci_lo": 0.18837283808050675,
      "ci_hi": 0.343286959596526,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.cited_rate.gemini",
      "label": "Gemini: share of answers citing you",
      "module": "found",
      "unit": "rate",
      "value": 0.15833333333333333,
      "n": 120,
      "ci_lo": 0.10376896007675636,
      "ci_hi": 0.2340948918114622,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.cited_rate.grok",
      "label": "Grok: share of answers citing you",
      "module": "found",
      "unit": "rate",
      "value": null,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": "billing",
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "found.cited_rate.perplexity",
      "label": "Perplexity: share of answers citing you",
      "module": "found",
      "unit": "rate",
      "value": 0.3333333333333333,
      "n": 120,
      "ci_lo": 0.255316102227993,
      "ci_hi": 0.4216906547906502,
      "null_reason": null,
      "method_version": "found-v2",
      "date": "2026-10-18"
    },
    {
      "key": "used.fulfilled_rate",
      "label": "Agent calls that got what they needed",
      "module": "used",
      "unit": "rate",
      "value": 0.7203389830508474,
      "n": 118,
      "ci_lo": 0.6333924622678074,
      "ci_hi": 0.79339116499907,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.funnel.discovered",
      "label": "Agents that discovered you",
      "module": "used",
      "unit": "count",
      "value": 15,
      "n": 15,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.funnel.connected",
      "label": "Agents that connected",
      "module": "used",
      "unit": "count",
      "value": 9,
      "n": 15,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.funnel.called",
      "label": "Agents that called a tool or endpoint",
      "module": "used",
      "unit": "count",
      "value": 6,
      "n": 15,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.funnel.got_data",
      "label": "Agents that got data back",
      "module": "used",
      "unit": "count",
      "value": 4,
      "n": 15,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.funnel.came_back",
      "label": "Agents that came back later",
      "module": "used",
      "unit": "count",
      "value": 2,
      "n": 15,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.claude_code.connected",
      "label": "Claude Code: connected",
      "module": "used",
      "unit": "count",
      "value": 4,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.claude_code.called",
      "label": "Claude Code: called",
      "module": "used",
      "unit": "count",
      "value": 4,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.claude_code.got_data",
      "label": "Claude Code: got data",
      "module": "used",
      "unit": "count",
      "value": 3,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.claude_code.came_back",
      "label": "Claude Code: came back",
      "module": "used",
      "unit": "count",
      "value": 2,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.cursor.connected",
      "label": "Cursor: connected",
      "module": "used",
      "unit": "count",
      "value": 3,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.cursor.called",
      "label": "Cursor: called",
      "module": "used",
      "unit": "count",
      "value": 2,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.cursor.got_data",
      "label": "Cursor: got data",
      "module": "used",
      "unit": "count",
      "value": 1,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.cursor.came_back",
      "label": "Cursor: came back",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.github_copilot.connected",
      "label": "GitHub Copilot: connected",
      "module": "used",
      "unit": "count",
      "value": 2,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.github_copilot.called",
      "label": "GitHub Copilot: called",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.github_copilot.got_data",
      "label": "GitHub Copilot: got data",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.github_copilot.came_back",
      "label": "GitHub Copilot: came back",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.signed_agent_from_cloud_example_net.connected",
      "label": "Signed agent from cloud.example.net: connected",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.signed_agent_from_cloud_example_net.called",
      "label": "Signed agent from cloud.example.net: called",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.signed_agent_from_cloud_example_net.got_data",
      "label": "Signed agent from cloud.example.net: got data",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.client.signed_agent_from_cloud_example_net.came_back",
      "label": "Signed agent from cloud.example.net: came back",
      "module": "used",
      "unit": "count",
      "value": 0,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.gptbot.requests",
      "label": "GPTBot: requests",
      "module": "used",
      "unit": "count",
      "value": 340,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.gptbot.refused_rate",
      "label": "GPTBot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0,
      "n": 340,
      "ci_lo": 0,
      "ci_hi": 0.011,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.oai_searchbot.requests",
      "label": "OAI-SearchBot: requests",
      "module": "used",
      "unit": "count",
      "value": 71,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.oai_searchbot.refused_rate",
      "label": "OAI-SearchBot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0.30985915492957744,
      "n": 71,
      "ci_lo": 0.2143957547902181,
      "ci_hi": 0.4248423160153232,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.chatgpt_user.requests",
      "label": "ChatGPT-User: requests",
      "module": "used",
      "unit": "count",
      "value": 58,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.chatgpt_user.refused_rate",
      "label": "ChatGPT-User: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0.017241379310344827,
      "n": 58,
      "ci_lo": 0.003049959884541764,
      "ci_hi": 0.09141072677298324,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.claudebot.requests",
      "label": "ClaudeBot: requests",
      "module": "used",
      "unit": "count",
      "value": 120,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.claudebot.refused_rate",
      "label": "ClaudeBot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0,
      "n": 120,
      "ci_lo": 0,
      "ci_hi": 0.031,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.claude_searchbot.requests",
      "label": "Claude-SearchBot: requests",
      "module": "used",
      "unit": "count",
      "value": 44,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.claude_searchbot.refused_rate",
      "label": "Claude-SearchBot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0,
      "n": 44,
      "ci_lo": 6.938893903907228e-18,
      "ci_hi": 0.08029831778201396,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexitybot.requests",
      "label": "PerplexityBot: requests",
      "module": "used",
      "unit": "count",
      "value": 95,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexitybot.refused_rate",
      "label": "PerplexityBot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0.021052631578947368,
      "n": 95,
      "ci_lo": 0.0057923854515239195,
      "ci_hi": 0.07354263138349293,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexitybot_not_verified.requests",
      "label": "PerplexityBot (not verified): requests",
      "module": "used",
      "unit": "count",
      "value": 37,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexitybot_not_verified.refused_rate",
      "label": "PerplexityBot (not verified): share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": null,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": "no_data",
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.unfulfilled.get_delivery_status.empty",
      "label": "get_delivery_status: agents that got empty",
      "module": "used",
      "unit": "count",
      "value": 3,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.unfulfilled.list_domains.error",
      "label": "list_domains: agents that got error",
      "module": "used",
      "unit": "count",
      "value": 2,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.unfulfilled.search_docs.not_found",
      "label": "search_docs: agents that got not found",
      "module": "used",
      "unit": "count",
      "value": 2,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.total",
      "label": "Requests removed as noise",
      "module": "used",
      "unit": "count",
      "value": 312,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.discovery_sweep",
      "label": "Removed as noise: discovery sweep",
      "module": "used",
      "unit": "count",
      "value": 96,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.probe",
      "label": "Removed as noise: probe",
      "module": "used",
      "unit": "count",
      "value": 41,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.enumeration",
      "label": "Removed as noise: enumeration",
      "module": "used",
      "unit": "count",
      "value": 58,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.list_sweep",
      "label": "Removed as noise: list sweep",
      "module": "used",
      "unit": "count",
      "value": 22,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.spoofed",
      "label": "Removed as noise: spoofed",
      "module": "used",
      "unit": "count",
      "value": 37,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.noise_excluded.own",
      "label": "Removed as noise: own",
      "module": "used",
      "unit": "count",
      "value": 58,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.ai_referred.visits",
      "label": "Visits sent by AI assistants",
      "module": "used",
      "unit": "count",
      "value": 184,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.ai_referred.signups",
      "label": "Signups sent by AI assistants",
      "module": "used",
      "unit": "count",
      "value": 9,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    }
  ],
  "read_not_cited": [
    {
      "question": "Which email API has the best documentation?",
      "engine": "perplexity",
      "cited_instead": [
        "courierly.example",
        "devforum.example"
      ],
      "reason": "Perplexity read docs.relaykit.example/quickstart but cited a forum thread and Courierly's guide."
    },
    {
      "question": "How do I make email sends idempotent so retries never double-send?",
      "engine": "openai",
      "cited_instead": [
        "sendwright.example"
      ],
      "reason": "ChatGPT read your idempotency page, which has no code example; the cited page does."
    },
    {
      "question": "Which email API works with AI agents through an MCP server?",
      "engine": "claude",
      "cited_instead": [
        "github.com",
        "courierly.example"
      ],
      "reason": "Claude read your MCP page but cited the MCP servers repository and Courierly."
    }
  ],
  "fixes": [
    {
      "rank": 1,
      "title": "Unblock OAI-SearchBot",
      "why": "ChatGPT's search bot was refused (403/429) on 31% of its 71 requests. While it is blocked you are invisible to ChatGPT search.",
      "owner": "human",
      "effort": "s",
      "verify_by": "2026-10-26",
      "steps": [
        "Open public/robots.txt and remove the wildcard Disallow: /docs/ rule.",
        "Add an explicit User-agent: OAI-SearchBot group with Allow: /.",
        "If you use Cloudflare or another WAF, allowlist OpenAI's published OAI-SearchBot IP ranges.",
        "Deploy, then fetch /docs/webhooks with the OAI-SearchBot user agent and confirm a 200."
      ],
      "how": "1. Open public/robots.txt and remove the wildcard Disallow: /docs/ rule.\n2. Add an explicit User-agent: OAI-SearchBot group with Allow: /.\n3. If you use Cloudflare or another WAF, allowlist OpenAI's published OAI-SearchBot IP ranges.\n4. Deploy, then fetch /docs/webhooks with the OAI-SearchBot user agent and confirm a 200.",
      "patch": {
        "kind": "robots_diff",
        "target": "/robots.txt",
        "language": "diff",
        "content": "--- a/public/robots.txt\n+++ b/public/robots.txt\n@@ -1,5 +1,8 @@\n User-agent: *\n Disallow: /docs/internal/\n-Disallow: /docs/\n+Allow: /docs/\n \n+User-agent: OAI-SearchBot\n+Allow: /\n+\n Sitemap: https://relaykit.example/sitemap.xml",
        "note": "The wildcard rule on /docs/ is what refuses OAI-SearchBot. If a CDN or WAF bot rule also returns 403, allowlist OpenAI's published IP ranges there too."
      },
      "snippet": {
        "language": "diff",
        "code": "--- a/public/robots.txt\n+++ b/public/robots.txt\n@@ -1,5 +1,8 @@\n User-agent: *\n Disallow: /docs/internal/\n-Disallow: /docs/\n+Allow: /docs/\n \n+User-agent: OAI-SearchBot\n+Allow: /\n+\n Sitemap: https://relaykit.example/sitemap.xml"
      },
      "evidence": [
        "OAI-SearchBot requests refused: 22 of 71 (31%)",
        "Most refused path: /docs/webhooks",
        "robots.txt check: Wildcard Disallow: /docs/ matches OAI-SearchBot"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 2,
      "title": "Fix get_delivery_status for older messages",
      "why": "Three agents asked for the status of a message and got an empty result. They rarely retry.",
      "owner": "agent",
      "effort": "m",
      "verify_by": "2026-10-26",
      "steps": [
        "Replace the tool description with the drafted one so agents know older ids are supported.",
        "Return a status for message ids older than 24 hours instead of an empty list.",
        "Return a not_found error with the closest ids when an id is truly unknown."
      ],
      "how": "1. Replace the tool description with the drafted one so agents know older ids are supported.\n2. Return a status for message ids older than 24 hours instead of an empty list.\n3. Return a not_found error with the closest ids when an id is truly unknown.",
      "patch": {
        "kind": "mcp_tool_description",
        "target": "get_delivery_status",
        "language": "text",
        "content": "Get the delivery status of a sent email by message id. Returns one of queued, sent, delivered, bounced or complained, with a timestamp and the provider response. Works for any message id, including messages older than 24 hours (status history is kept for 30 days). If the id is unknown it returns a not_found error with the closest matching ids, never an empty list. Use after send_email.",
        "note": "Pair this with the code change: return a status for message ids older than 24 hours instead of an empty list."
      },
      "snippet": {
        "language": "text",
        "code": "Get the delivery status of a sent email by message id. Returns one of queued, sent, delivered, bounced or complained, with a timestamp and the provider response. Works for any message id, including messages older than 24 hours (status history is kept for 30 days). If the id is unknown it returns a not_found error with the closest matching ids, never an empty list. Use after send_email."
      },
      "evidence": [
        "Agents that got an empty result: 3",
        "Calls with an empty result: 14% of calls to this tool"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 3,
      "title": "Add a code example to your idempotency page",
      "why": "ChatGPT read the page but cited a competitor whose page shows the code.",
      "owner": "agent",
      "effort": "m",
      "verify_by": "2026-11-09",
      "steps": [
        "Open the idempotency page and put the drafted answer block directly under the title.",
        "Keep the curl example runnable; use a real header name and a realistic key.",
        "Add a visible last-updated date.",
        "Re-check in about three weeks; citation changes are slow to show."
      ],
      "how": "1. Open the idempotency page and put the drafted answer block directly under the title.\n2. Keep the curl example runnable; use a real header name and a realistic key.\n3. Add a visible last-updated date.\n4. Re-check in about three weeks; citation changes are slow to show.",
      "patch": {
        "kind": "answer_block",
        "target": "/docs/idempotency",
        "language": "markdown",
        "content": "## How do I make email sends idempotent so retries never double-send?\n\nPass an `Idempotency-Key` header on every `POST /v1/emails` request. Relaykit stores the key for 24 hours and returns the original response for any repeat request with the same key, so a retry never sends a second email.\n\n```bash\ncurl https://api.relaykit.example/v1/emails \\\n  -H \"Authorization: Bearer $RELAYKIT_API_KEY\" \\\n  -H \"Idempotency-Key: order-1042-receipt\" \\\n  -d '{\"to\":\"ada@example.com\",\"template\":\"receipt\"}'\n```\n\nUse one key per business event (an order id, not a random value per attempt).",
        "note": "Put this directly under the page title, before the longer explanation. Last updated: add a visible date."
      },
      "snippet": {
        "language": "markdown",
        "code": "## How do I make email sends idempotent so retries never double-send?\n\nPass an `Idempotency-Key` header on every `POST /v1/emails` request. Relaykit stores the key for 24 hours and returns the original response for any repeat request with the same key, so a retry never sends a second email.\n\n```bash\ncurl https://api.relaykit.example/v1/emails \\\n  -H \"Authorization: Bearer $RELAYKIT_API_KEY\" \\\n  -H \"Idempotency-Key: order-1042-receipt\" \\\n  -d '{\"to\":\"ada@example.com\",\"template\":\"receipt\"}'\n```\n\nUse one key per business event (an order id, not a random value per attempt)."
      },
      "evidence": [
        "ChatGPT read your page but cited another source: In answers to: How do I make email sends idempotent so retries never double-send?",
        "Cited instead: sendwright.example"
      ],
      "method_version": "fix-v1"
    }
  ],
  "last_week": [
    {
      "title": "Publish an llms.txt",
      "status": "verified",
      "note": "ChatGPT-User fetched it 14 times since."
    },
    {
      "title": "Allow Claude-SearchBot in robots.txt",
      "status": "not_yet",
      "note": "No Claude-SearchBot visit yet; the window closes Oct 26."
    },
    {
      "title": "Show pricing as plain text",
      "status": "done",
      "note": "You marked it done; we re-check on Oct 21."
    }
  ]
}
