{
  "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-19T08:30: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": [
    "Assistants cited you in 21% of 600 answers.",
    "The biggest leak: Courierly was cited in 56% of 600 answers; you in 21%.",
    "Ship this: Unblock OAI-SearchBot."
  ],
  "metrics": [
    {
      "key": "found.cited_in_questions",
      "label": "Buyer questions where an assistant cited you",
      "module": "found",
      "unit": "count",
      "value": 4,
      "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": 20,
      "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": 5,
      "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.21666666666666667,
      "n": 120,
      "ci_lo": 0.15236622842757383,
      "ci_hi": 0.2985452585041196,
      "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.175,
      "n": 120,
      "ci_lo": 0.11740448670592564,
      "ci_hi": 0.25275868948042857,
      "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.225,
      "n": 120,
      "ci_lo": 0.1594905146581338,
      "ci_hi": 0.3075706344226275,
      "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": 0.19166666666666668,
      "n": 120,
      "ci_lo": 0.13124933052612614,
      "ci_hi": 0.2712131699583638,
      "null_reason": null,
      "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.21666666666666667,
      "n": 120,
      "ci_lo": 0.15236622842757383,
      "ci_hi": 0.2985452585041196,
      "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.75,
      "n": 32,
      "ci_lo": 0.5789310822975338,
      "ci_hi": 0.8674775601737845,
      "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": 19,
      "n": 19,
      "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": 3,
      "n": 19,
      "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": 3,
      "n": 19,
      "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": 3,
      "n": 19,
      "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": 3,
      "n": 19,
      "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": 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.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": 3,
      "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.chatgpt_connector.connected",
      "label": "ChatGPT connector: 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.chatgpt_connector.called",
      "label": "ChatGPT connector: 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.chatgpt_connector.got_data",
      "label": "ChatGPT connector: got data",
      "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.chatgpt_connector.came_back",
      "label": "ChatGPT connector: 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.claude_cowork.connected",
      "label": "Claude Cowork: connected",
      "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.claude_cowork.called",
      "label": "Claude Cowork: called",
      "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.claude_cowork.got_data",
      "label": "Claude Cowork: 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.claude_cowork.came_back",
      "label": "Claude Cowork: came back",
      "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.goose.connected",
      "label": "Goose: connected",
      "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.goose.called",
      "label": "Goose: called",
      "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.goose.got_data",
      "label": "Goose: 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.goose.came_back",
      "label": "Goose: came back",
      "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.probably_muse.connected",
      "label": "Probably Muse: connected",
      "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.probably_muse.called",
      "label": "Probably Muse: called",
      "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.probably_muse.got_data",
      "label": "Probably Muse: 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.probably_muse.came_back",
      "label": "Probably Muse: came back",
      "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.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.chrome.connected",
      "label": "chrome: 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.chrome.called",
      "label": "chrome: 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.chrome.got_data",
      "label": "chrome: 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.chrome.came_back",
      "label": "chrome: 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.headless_chrome.connected",
      "label": "Headless Chrome: 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.headless_chrome.called",
      "label": "Headless Chrome: 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.headless_chrome.got_data",
      "label": "Headless Chrome: 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.headless_chrome.came_back",
      "label": "Headless Chrome: 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.oai_searchbot.requests",
      "label": "OAI-SearchBot: requests",
      "module": "used",
      "unit": "count",
      "value": 24,
      "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.3333333333333333,
      "n": 24,
      "ci_lo": 0.17971978688379642,
      "ci_hi": 0.5329404050591954,
      "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": 14,
      "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,
      "n": 14,
      "ci_lo": 0,
      "ci_hi": 0.21531701192718145,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.googlebot.requests",
      "label": "Googlebot: requests",
      "module": "used",
      "unit": "count",
      "value": 14,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.googlebot.refused_rate",
      "label": "Googlebot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": 0,
      "n": 14,
      "ci_lo": 0,
      "ci_hi": 0.21531701192718145,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexitybot.requests",
      "label": "PerplexityBot: requests",
      "module": "used",
      "unit": "count",
      "value": 14,
      "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,
      "n": 14,
      "ci_lo": 0,
      "ci_hi": 0.21531701192718145,
      "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": 14,
      "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.crawler.claudebot.requests",
      "label": "ClaudeBot: requests",
      "module": "used",
      "unit": "count",
      "value": 12,
      "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": 12,
      "ci_lo": 0,
      "ci_hi": 0.2425007574992425,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.gptbot.requests",
      "label": "GPTBot: requests",
      "module": "used",
      "unit": "count",
      "value": 12,
      "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": 12,
      "ci_lo": 0,
      "ci_hi": 0.2425007574992425,
      "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": 10,
      "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": 10,
      "ci_lo": 0,
      "ci_hi": 0.2775401687666166,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.claude_user.requests",
      "label": "Claude-User: requests",
      "module": "used",
      "unit": "count",
      "value": 8,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.claude_user.refused_rate",
      "label": "Claude-User: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": null,
      "n": 8,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": "no_data",
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexity_user.requests",
      "label": "Perplexity-User: requests",
      "module": "used",
      "unit": "count",
      "value": 8,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.perplexity_user.refused_rate",
      "label": "Perplexity-User: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": null,
      "n": 8,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": "no_data",
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.applebot.requests",
      "label": "Applebot: requests",
      "module": "used",
      "unit": "count",
      "value": 6,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.applebot.refused_rate",
      "label": "Applebot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": null,
      "n": 6,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": "no_data",
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.bingbot.requests",
      "label": "bingbot: requests",
      "module": "used",
      "unit": "count",
      "value": 6,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    },
    {
      "key": "used.crawler.bingbot.refused_rate",
      "label": "bingbot: share of requests refused (403/429)",
      "module": "used",
      "unit": "rate",
      "value": null,
      "n": 6,
      "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": 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.empty",
      "label": "search_docs: agents that got empty",
      "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.list_domains.error",
      "label": "list_domains: agents that got error",
      "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.unfulfilled.list_templates.error",
      "label": "list_templates: agents that got error",
      "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.unfulfilled.send_email.rejected",
      "label": "send_email: agents that got rejected",
      "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.noise_excluded.total",
      "label": "Requests removed as noise",
      "module": "used",
      "unit": "count",
      "value": 60,
      "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": 12,
      "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": 5,
      "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": 9,
      "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": 6,
      "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": 14,
      "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": 14,
      "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": 36,
      "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": 6,
      "n": null,
      "ci_lo": null,
      "ci_hi": null,
      "null_reason": null,
      "method_version": "used-v4",
      "date": "2026-10-18"
    }
  ],
  "read_not_cited": [
    {
      "question": "How do I test transactional email in CI without sending real messages?",
      "engine": "claude",
      "cited_instead": [
        "sendwright.example",
        "github.com",
        "postlane.example",
        "stackoverflow.com"
      ],
      "reason": "Claude read github.com/relaykit/relaykit-node but cited sendwright.example, github.com and postlane.example."
    },
    {
      "question": "Which email APIs charge per message versus per contact?",
      "engine": "claude",
      "cited_instead": [
        "courierly.example",
        "devtoolsdigest.example"
      ],
      "reason": "Claude read relaykit.example/pricing but cited courierly.example and devtoolsdigest.example."
    },
    {
      "question": "What hidden costs should I expect from a transactional email service?",
      "engine": "claude",
      "cited_instead": [
        "courierly.example",
        "dispatchio.example",
        "devtoolsdigest.example",
        "reddit.com"
      ],
      "reason": "Claude read relaykit.example/pricing but cited courierly.example, dispatchio.example and devtoolsdigest.example."
    },
    {
      "question": "Which email API works with AI agents through an MCP server?",
      "engine": "claude",
      "cited_instead": [
        "reddit.com",
        "github.com",
        "sendwright.example",
        "dispatchio.example",
        "courierly.example"
      ],
      "reason": "Claude read github.com/relaykit/relaykit-node but cited reddit.com, github.com and sendwright.example."
    },
    {
      "question": "Which email APIs have an official MCP server or agent toolkit?",
      "engine": "claude",
      "cited_instead": [
        "news.ycombinator.com",
        "github.com",
        "reddit.com"
      ],
      "reason": "Claude read relaykit.example but cited news.ycombinator.com, github.com and reddit.com."
    },
    {
      "question": "How do I handle email bounces and spam complaints in my app?",
      "engine": "gemini",
      "cited_instead": [
        "mailforge.example"
      ],
      "reason": "Gemini read docs.relaykit.example/webhooks but cited mailforge.example."
    }
  ],
  "fixes": [
    {
      "rank": 1,
      "title": "Unblock OAI-SearchBot",
      "why": "OAI-SearchBot is how OpenAI's assistant finds and cites pages. While it is blocked you are invisible there.",
      "owner": "human",
      "effort": "s",
      "verify_by": "2026-10-26",
      "steps": [
        "Open your robots.txt and make sure no Disallow applies to OAI-SearchBot: add a group \"User-agent: OAI-SearchBot\" with \"Allow: /\" if it is missing, and remove any Disallow under \"User-agent: *\" that you did not mean for search bots.",
        "Find the WAF, CDN or hosting rule that answers OAI-SearchBot with 403 on 4 requests and 429 (rate limit) on 4, mainly on /docs/webhooks, /, and switch it off for this bot.",
        "Allow OAI-SearchBot by its published IP ranges (the list OpenAI publishes at https://openai.com/searchbot.json) rather than by user-agent text alone, so fake traffic claiming the same name stays blocked.",
        "Check it from outside: curl -sI -A 'OAI-SearchBot' 'https://your-domain/docs/webhooks' should return 200, not 403."
      ],
      "how": "1. Open your robots.txt and make sure no Disallow applies to OAI-SearchBot: add a group \"User-agent: OAI-SearchBot\" with \"Allow: /\" if it is missing, and remove any Disallow under \"User-agent: *\" that you did not mean for search bots.\n2. Find the WAF, CDN or hosting rule that answers OAI-SearchBot with 403 on 4 requests and 429 (rate limit) on 4, mainly on /docs/webhooks, /, and switch it off for this bot.\n3. Allow OAI-SearchBot by its published IP ranges (the list OpenAI publishes at https://openai.com/searchbot.json) rather than by user-agent text alone, so fake traffic claiming the same name stays blocked.\n4. Check it from outside: curl -sI -A 'OAI-SearchBot' 'https://your-domain/docs/webhooks' should return 200, not 403.",
      "patch": {
        "kind": "robots_diff",
        "target": "/robots.txt",
        "language": "diff",
        "content": "--- a/robots.txt\n+++ b/robots.txt\n@@ -2,4 +2,4 @@\n Allow: /\n \n User-agent: OAI-SearchBot\n-Disallow: /\n+Allow: /\n",
        "note": "Removes the \"Disallow: /\" that blocks OAI-SearchBot from your whole site. They then follow the same path rules as every other bot (your \"User-agent: *\" group), so paths you already disallow stay disallowed. Nothing else changes: training bots are left exactly as you had them (GPTBot stays allowed, ClaudeBot stays allowed, CCBot stays allowed, Google-Extended stays allowed)."
      },
      "snippet": {
        "language": "diff",
        "code": "--- a/robots.txt\n+++ b/robots.txt\n@@ -2,4 +2,4 @@\n Allow: /\n \n User-agent: OAI-SearchBot\n-Disallow: /\n+Allow: /\n"
      },
      "evidence": [
        "OAI-SearchBot requests refused: 8 of 24 (33.3%)",
        "Status codes: 403: 4, 429: 4",
        "Most refused paths: /docs/webhooks, /",
        "How we know: Live traffic on your site"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 2,
      "title": "Make github.com/relaykit/relaykit-node worth citing",
      "why": "Claude, ChatGPT, Gemini and Perplexity read github.com/relaykit/relaykit-node in 12 of 480 answers and cited github.com, postlane.example and courierly.example instead. A page that answers the buyer question in its first lines, with specifics and a clear date, gets cited more.",
      "owner": "agent",
      "effort": "m",
      "verify_by": "2026-11-16",
      "steps": [
        "Open github.com/relaykit/relaykit-node. Claude, ChatGPT, Gemini and Perplexity read it and still cited github.com, postlane.example and courierly.example for the same questions.",
        "Add one heading per question and answer it in the first two sentences under it, starting with: \"How do I test transactional email in CI without sending real messages?\"; \"Which email API works with AI agents through an MCP server?\"; \"How do I receive inbound email in my application through an API?\".",
        "Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.",
        "Re-check in 28 days: we compare how many answers read this page and still cite someone else."
      ],
      "how": "1. Open github.com/relaykit/relaykit-node. Claude, ChatGPT, Gemini and Perplexity read it and still cited github.com, postlane.example and courierly.example for the same questions.\n2. Add one heading per question and answer it in the first two sentences under it, starting with: \"How do I test transactional email in CI without sending real messages?\"; \"Which email API works with AI agents through an MCP server?\"; \"How do I receive inbound email in my application through an API?\".\n3. Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.\n4. Re-check in 28 days: we compare how many answers read this page and still cite someone else.",
      "patch": {
        "kind": "answer_block",
        "target": "https://relaykit.example",
        "language": "markdown",
        "content": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n",
        "note": "Add this block near the top of /, under the page's main heading. The sentences are copied from your own pages. Your pages never mention: works, through. Check every claim, and keep the question as the heading."
      },
      "snippet": {
        "language": "markdown",
        "code": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n"
      },
      "evidence": [
        "Page: github.com/relaykit/relaykit-node",
        "Claude read your pages but cited someone else: 14 of 120 answers",
        "ChatGPT read your pages but cited someone else: 12 of 120 answers",
        "Gemini read your pages but cited someone else: 11 of 120 answers",
        "Perplexity read your pages but cited someone else: 10 of 120 answers",
        "Cited instead: github.com, postlane.example and courierly.example",
        "Example question: How do I test transactional email in CI without sending real messages?",
        "Example question: Which email API works with AI agents through an MCP server?"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 3,
      "title": "Make relaykit.example worth citing",
      "why": "Claude, ChatGPT, Gemini and Grok read relaykit.example in 12 of 480 answers and cited courierly.example, emailtools.example and news.ycombinator.com instead. A page that answers the buyer question in its first lines, with specifics and a clear date, gets cited more.",
      "owner": "agent",
      "effort": "m",
      "verify_by": "2026-11-16",
      "steps": [
        "Open relaykit.example. Claude, ChatGPT, Gemini and Grok read it and still cited courierly.example, emailtools.example and news.ycombinator.com for the same questions.",
        "Add one heading per question and answer it in the first two sentences under it, starting with: \"Which email APIs have an official MCP server or agent toolkit?\"; \"What is the best email API for sending transactional email from a Node.js app?\"; \"Compare transactional email APIs by pricing and deliverability\".",
        "Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.",
        "Re-check in 28 days: we compare how many answers read this page and still cite someone else."
      ],
      "how": "1. Open relaykit.example. Claude, ChatGPT, Gemini and Grok read it and still cited courierly.example, emailtools.example and news.ycombinator.com for the same questions.\n2. Add one heading per question and answer it in the first two sentences under it, starting with: \"Which email APIs have an official MCP server or agent toolkit?\"; \"What is the best email API for sending transactional email from a Node.js app?\"; \"Compare transactional email APIs by pricing and deliverability\".\n3. Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.\n4. Re-check in 28 days: we compare how many answers read this page and still cite someone else.",
      "patch": {
        "kind": "answer_block",
        "target": "https://relaykit.example",
        "language": "markdown",
        "content": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n",
        "note": "Add this block near the top of /, under the page's main heading. The sentences are copied from your own pages. Your pages never mention: works, through. Check every claim, and keep the question as the heading."
      },
      "snippet": {
        "language": "markdown",
        "code": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n"
      },
      "evidence": [
        "Page: relaykit.example",
        "Claude read your pages but cited someone else: 14 of 120 answers",
        "ChatGPT read your pages but cited someone else: 12 of 120 answers",
        "Gemini read your pages but cited someone else: 11 of 120 answers",
        "Grok read your pages but cited someone else: 13 of 120 answers",
        "Cited instead: courierly.example, emailtools.example and news.ycombinator.com",
        "Example question: Which email APIs have an official MCP server or agent toolkit?",
        "Example question: What email API should a startup use for password resets and receipts?"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 4,
      "title": "Make relaykit.example/pricing worth citing",
      "why": "Claude, ChatGPT, Gemini, Grok and Perplexity read relaykit.example/pricing in 29 of 600 answers and cited courierly.example, devtoolsdigest.example and dispatchio.example instead. A page that answers the buyer question in its first lines, with specifics and a clear date, gets cited more.",
      "owner": "agent",
      "effort": "m",
      "verify_by": "2026-11-16",
      "steps": [
        "Open relaykit.example/pricing. Claude, ChatGPT, Gemini, Grok and Perplexity read it and still cited courierly.example, devtoolsdigest.example and dispatchio.example for the same questions.",
        "Add one heading per question and answer it in the first two sentences under it, starting with: \"Which email APIs charge per message versus per contact?\"; \"What hidden costs should I expect from a transactional email service?\"; \"Are there email APIs with no monthly minimum?\".",
        "Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.",
        "Re-check in 28 days: we compare how many answers read this page and still cite someone else."
      ],
      "how": "1. Open relaykit.example/pricing. Claude, ChatGPT, Gemini, Grok and Perplexity read it and still cited courierly.example, devtoolsdigest.example and dispatchio.example for the same questions.\n2. Add one heading per question and answer it in the first two sentences under it, starting with: \"Which email APIs charge per message versus per contact?\"; \"What hidden costs should I expect from a transactional email service?\"; \"Are there email APIs with no monthly minimum?\".\n3. Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.\n4. Re-check in 28 days: we compare how many answers read this page and still cite someone else.",
      "patch": {
        "kind": "answer_block",
        "target": "https://relaykit.example",
        "language": "markdown",
        "content": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n",
        "note": "Add this block near the top of /, under the page's main heading. The sentences are copied from your own pages. Your pages never mention: works, through. Check every claim, and keep the question as the heading."
      },
      "snippet": {
        "language": "markdown",
        "code": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n"
      },
      "evidence": [
        "Page: relaykit.example/pricing",
        "Claude read your pages but cited someone else: 14 of 120 answers",
        "ChatGPT read your pages but cited someone else: 12 of 120 answers",
        "Gemini read your pages but cited someone else: 11 of 120 answers",
        "Grok read your pages but cited someone else: 13 of 120 answers",
        "Perplexity read your pages but cited someone else: 10 of 120 answers",
        "Cited instead: courierly.example, devtoolsdigest.example and dispatchio.example",
        "Example question: Which email APIs charge per message versus per contact?",
        "Example question: What hidden costs should I expect from a transactional email service?"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 5,
      "title": "Make 2 more pages worth citing",
      "why": "Gemini and Perplexity read docs.relaykit.example/quickstart and docs.relaykit.example/webhooks in 6 of 240 answers and cited courierly.example, devtoolsdigest.example and mailforge.example instead. A page that answers the buyer question in its first lines, with specifics and a clear date, gets cited more.",
      "owner": "agent",
      "effort": "m",
      "verify_by": "2026-11-16",
      "steps": [
        "Open docs.relaykit.example/quickstart and docs.relaykit.example/webhooks. Gemini and Perplexity read it and still cited courierly.example, devtoolsdigest.example and mailforge.example for the same questions.",
        "Add one heading per question and answer it in the first two sentences under it, starting with: \"How do I handle email bounces and spam complaints in my app?\"; \"What email API should a startup use for password resets and receipts?\".",
        "Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.",
        "Re-check in 28 days: we compare how many answers read this page and still cite someone else."
      ],
      "how": "1. Open docs.relaykit.example/quickstart and docs.relaykit.example/webhooks. Gemini and Perplexity read it and still cited courierly.example, devtoolsdigest.example and mailforge.example for the same questions.\n2. Add one heading per question and answer it in the first two sentences under it, starting with: \"How do I handle email bounces and spam complaints in my app?\"; \"What email API should a startup use for password resets and receipts?\".\n3. Under each answer put the specifics a buyer checks (limits, prices, versions, one example request) in plain text, and show a last-updated date on the page.\n4. Re-check in 28 days: we compare how many answers read this page and still cite someone else.",
      "patch": {
        "kind": "answer_block",
        "target": "https://relaykit.example",
        "language": "markdown",
        "content": "## What is the best email API for sending transactional email from a Node.js app?\n\nA transactional email API for developers.\n\n| | Relaykit | Alternative |\n|---|---|---|\n| Pricing | (fill in) | (fill in) |\n| Free plan | (fill in) | (fill in) |\n| Built for | (fill in) | (fill in) |\n",
        "note": "Add this block near the top of /, under the page's main heading. The sentences are copied from your own pages. Your pages never mention: node.js, app. Check every claim, and keep the question as the heading."
      },
      "snippet": {
        "language": "markdown",
        "code": "## What is the best email API for sending transactional email from a Node.js app?\n\nA transactional email API for developers.\n\n| | Relaykit | Alternative |\n|---|---|---|\n| Pricing | (fill in) | (fill in) |\n| Free plan | (fill in) | (fill in) |\n| Built for | (fill in) | (fill in) |\n"
      },
      "evidence": [
        "Gemini read your pages but cited someone else: 11 of 120 answers",
        "Perplexity read your pages but cited someone else: 10 of 120 answers"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 6,
      "title": "Block fake PerplexityBot traffic",
      "why": "Requests pretending to be PerplexityBot waste capacity and distort bot numbers. We exclude them from your results; you can also block them.",
      "owner": "human",
      "effort": "s",
      "verify_by": "2026-10-26",
      "steps": [
        "14 requests claimed to be PerplexityBot (50% of everything using that name) from 1 network ranges the vendor does not use, ASN 64511.",
        "In your WAF, allow a User-Agent containing \"PerplexityBot\" only from the list Perplexity publishes at https://www.perplexity.com/perplexitybot.json; challenge or block the rest.",
        "Do not block by user-agent text alone: the real bot has to stay allowed, and we already leave the fake requests out of your numbers."
      ],
      "how": "1. 14 requests claimed to be PerplexityBot (50% of everything using that name) from 1 network ranges the vendor does not use, ASN 64511.\n2. In your WAF, allow a User-Agent containing \"PerplexityBot\" only from the list Perplexity publishes at https://www.perplexity.com/perplexitybot.json; challenge or block the rest.\n3. Do not block by user-agent text alone: the real bot has to stay allowed, and we already leave the fake requests out of your numbers.",
      "patch": null,
      "snippet": null,
      "evidence": [
        "Fake PerplexityBot requests: 14",
        "Share of that name's traffic: 50%",
        "Network ranges: 1"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 7,
      "title": "Close the gap with Courierly on cited questions",
      "why": "Courierly is cited where you are not. Their pages answer these buyer questions; yours may not.",
      "owner": "cmo",
      "effort": "l",
      "verify_by": "2026-11-16",
      "steps": [
        "Courierly is cited in 334 of 600 answers, you in 123. Read what Courierly publishes for \"Is it worth paying for a dedicated IP with an email API?\" (Claude, ChatGPT, Gemini, Grok and Perplexity); \"Which email API works with AI agents through an MCP server?\" (Claude, ChatGPT, Gemini, Grok and Perplexity).",
        "Publish or rewrite your page for each of those questions so its first two sentences answer it, with your own numbers and limits.",
        "Link each page from your homepage and docs index so crawlers reach it in two clicks.",
        "Re-check in four weeks: we compare your share of citations on the same questions."
      ],
      "how": "1. Courierly is cited in 334 of 600 answers, you in 123. Read what Courierly publishes for \"Is it worth paying for a dedicated IP with an email API?\" (Claude, ChatGPT, Gemini, Grok and Perplexity); \"Which email API works with AI agents through an MCP server?\" (Claude, ChatGPT, Gemini, Grok and Perplexity).\n2. Publish or rewrite your page for each of those questions so its first two sentences answer it, with your own numbers and limits.\n3. Link each page from your homepage and docs index so crawlers reach it in two clicks.\n4. Re-check in four weeks: we compare your share of citations on the same questions.",
      "patch": {
        "kind": "answer_block",
        "target": "https://relaykit.example",
        "language": "markdown",
        "content": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n",
        "note": "Add this block near the top of /, under the page's main heading. The sentences are copied from your own pages. Your pages never mention: works, through. Check every claim, and keep the question as the heading."
      },
      "snippet": {
        "language": "markdown",
        "code": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n"
      },
      "evidence": [
        "Answers citing Courierly: 334 of 600",
        "Answers citing you: 123 of 600",
        "Question: Is it worth paying for a dedicated IP with an email API? (Claude, ChatGPT, Gemini, Grok and Perplexity)",
        "Question: Which email API works with AI agents through an MCP server? (Claude, ChatGPT, Gemini, Grok and Perplexity)"
      ],
      "method_version": "fix-v1"
    },
    {
      "rank": 8,
      "title": "Close the gap with Sendwright on cited questions",
      "why": "Sendwright is cited where you are not. Their pages answer these buyer questions; yours may not.",
      "owner": "cmo",
      "effort": "l",
      "verify_by": "2026-11-16",
      "steps": [
        "Sendwright is cited in 180 of 600 answers, you in 123. Read what Sendwright publishes for \"Is it worth paying for a dedicated IP with an email API?\" (Claude, ChatGPT, Gemini and Perplexity); \"Which email API works with AI agents through an MCP server?\" (Claude, Gemini and Perplexity).",
        "Publish or rewrite your page for each of those questions so its first two sentences answer it, with your own numbers and limits.",
        "Link each page from your homepage and docs index so crawlers reach it in two clicks.",
        "Re-check in four weeks: we compare your share of citations on the same questions."
      ],
      "how": "1. Sendwright is cited in 180 of 600 answers, you in 123. Read what Sendwright publishes for \"Is it worth paying for a dedicated IP with an email API?\" (Claude, ChatGPT, Gemini and Perplexity); \"Which email API works with AI agents through an MCP server?\" (Claude, Gemini and Perplexity).\n2. Publish or rewrite your page for each of those questions so its first two sentences answer it, with your own numbers and limits.\n3. Link each page from your homepage and docs index so crawlers reach it in two clicks.\n4. Re-check in four weeks: we compare your share of citations on the same questions.",
      "patch": {
        "kind": "answer_block",
        "target": "https://relaykit.example",
        "language": "markdown",
        "content": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n",
        "note": "Add this block near the top of /, under the page's main heading. The sentences are copied from your own pages. Your pages never mention: works, through. Check every claim, and keep the question as the heading."
      },
      "snippet": {
        "language": "markdown",
        "code": "## Which email API works with AI agents through an MCP server?\n\nSend receipts, password resets and alerts with one request, with delivery webhooks and an MCP server for AI agents.\n"
      },
      "evidence": [
        "Answers citing Sendwright: 180 of 600",
        "Answers citing you: 123 of 600",
        "Question: Is it worth paying for a dedicated IP with an email API? (Claude, ChatGPT, Gemini and Perplexity)",
        "Question: Which email API works with AI agents through an MCP server? (Claude, Gemini and Perplexity)"
      ],
      "method_version": "fix-v1"
    }
  ],
  "last_week": []
}
