addrbookFor publishers
← The evidence ledger

Evidence row 541488

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 6cc10ce4-9b4b-469c-b1bd-1f0d5b1f517d
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
94326bf7b9cb11a1dbb3a81858b1fcee31a798827632a6e20cc69bf9a5afe447
Leaf
0xb5408e6194cb654a6e98d1b438784e6151b7d4196815d58d2f9272a4d1b05c81

What was observed

{
  "count": 11,
  "tools": [
    {
      "description": "Add an email or domain to the suppression list (scope is 'email' or 'domain')\n        so future campaigns exclude it.",
      "inputSchema": {
        "properties": {
          "reason": {
            "title": "Reason",
            "type": "string"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "value": {
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "scope",
          "value",
          "reason"
        ],
        "title": "add_suppressionArguments",
        "type": "object"
      },
      "name": "add_suppression"
    },
    {
      "description": "Fetch a page of leads produced by a campaign (paginate with offset/limit).\n        kept_only=True returns only rows the user marked kept in review (for export).\n        match_status narrows to one population: 'validated' (verified email, billed) or\n        'needs_review' (surfaced free; rejection_reason says why) — omit it for both.\n        Returns {summary, total, offset, limit, rows}; total counts the filtered\n        population. Rows carry verification receipts (verified_by/verified_at/\n        verifier_verdict) when a live verification exists — treat them as the\n        authoritative proof; null means no receipt, not a failure. Two more quotable\n        proof lines appear where earned: person_receipt (who the person is and where we\n        saw them launch, on person-target leads) and tech_receipt (dated evidence of the\n        detected platform) — forward them as-is.",
      "inputSchema": {
        "properties": {
          "job_id": {
            "title": "Job Id",
            "type": "string"
          },
          "kept_only": {
            "default": false,
            "title": "Kept Only",
            "type": "boolean"
          },
          "limit": {
            "default": 100,
            "title": "Limit",
            "type": "integer"
          },
          "match_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Match Status"
          },
          "offset": {
            "default": 0,
            "title": "Offset",
            "type": "integer"
          }
        },
        "required": [
          "job_id"
        ],
        "title": "fetch_resultsArguments",
        "type": "object"
      },
      "name": "fetch_results"
    },
    {
      "description": "Check the status of a previously submitted campaign (queued/running/done/\n        done_partial/failed) by job_id. Prefer wait_seconds=45 over sleeping between\n        polls: the call holds until the status or pipeline stage changes (or the timer\n        expires) and returns the normal snapshot either way — loop on it until `status`\n        is terminal. Out-of-range wait_seconds clamps to [0, 45], never errors.",
      "inputSchema": {
        "properties": {
          "job_id": {
            "title": "Job Id",
            "type": "string"
          },
          "wait_seconds": {
            "default": 0,
            "title": "Wait Seconds",
            "type": "integer"
          }
        },
        "required": [
          "job_id"
        ],
        "title": "get_campaign_statusArguments",
        "type": "object"
      },
      "name": "get_campaign_status"
    },
    {
      "description": "Check this tenant's prepaid credit balance (a validated lead costs 1 credit —\n        2 for person-target or Meta-ads campaigns), the available credit packs, and the\n        ledger (paginate ledger entries with offset/limit, newest first). Campaigns\n        cannot start with a zero balance — buy a pack via the dashboard when balance\n        runs low.\n        When you authenticate with an API key this also returns YOUR key's remaining\n        budgets — check it before large campaigns.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "default": 0,
            "title": "Offset",
            "type": "integer"
          }
        },
        "title": "get_creditsArguments",
        "type": "object"
      },
      "name": "get_credits"
    },
    {
      "description": "List the ICP packs (saved vertical/geo templates) available to this tenant.",
      "inputSchema": {
        "properties": {},
        "title": "get_icp_packArguments",
        "type": "object"
      },
      "name": "get_icp_pack"
    },
    {
      "description": "Today's external vendor usage against the tenant's daily quota\n        (vendor_calls_today / per_day_max / remaining). This is the OTHER ceiling besides\n        credits: when remaining hits 0, campaign work pauses until midnight even with a\n        healthy credit balance — check it before launching a large or urgent campaign.\n        `remaining` is quota UNITS, which usually equals calls; a creator discovery costs\n        one unit per delivered record, so it can consume far more than one call's worth.\n        Mirrors REST GET /v1/usage.",
      "inputSchema": {
        "properties": {},
        "title": "get_usageArguments",
        "type": "object"
      },
      "name": "get_usage"
    },
    {
      "description": "List this tenant's campaigns, newest first — the recovery path when a job_id\n        was lost: every row carries job_id, status, the query it ran, and credits spent,\n        so you can resume polling (get_campaign_status) or fetch results without\n        resubmitting (and double-charging). Filters: q (substring over vertical/geo),\n        status (queued | running | done | done_partial | failed), created_after/\n        created_before (ISO-8601 window over creation time), order ('desc' default,\n        'asc' oldest first). Paginate with offset/limit (limit 1-200); `total` counts\n        everything matching the filters, not just this page.",
      "inputSchema": {
        "properties": {
          "created_after": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Created After"
          },
          "created_before": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Created Before"
          },
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "default": 0,
            "title": "Offset",
            "type": "integer"
          },
          "order": {
            "default": "desc",
            "title": "Order",
            "type": "string"
          },
          "q": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Q"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Status"
          }
        },
        "title": "list_campaignsArguments",
        "type": "object"
      },
      "name": "list_campaigns"
    },
    {
      "description": "Mark a lead kept or discarded after review (status: kept | discarded |\n        unreviewed). Then fetch_results(kept_only=true) returns only kept leads — the\n        export set.",
      "inputSchema": {
        "properties": {
          "job_id": {
            "title": "Job Id",
            "type": "string"
          },
          "result_id": {
            "title": "Result Id",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "result_id",
          "status"
        ],
        "title": "review_leadArguments",
        "type": "object"
      },
      "name": "review_lead"
    },
    {
      "description": "Send feedback to the Nose for Leads team. Set kind='product' for feedback\n        about the leads, the service, coverage, or pricing — relay what the business\n        owner tells you (categories: lead_quality, pricing, missing_feature, praise,\n        other). Set kind='tool' (default) for feedback about these MCP tools\n        themselves — a confusing description, a bug, a missing capability. Use freely;\n        it's our main signal for improving the product and the agent experience.",
      "inputSchema": {
        "properties": {
          "category": {
            "default": "other",
            "enum": [
              "bug",
              "confusing",
              "missing_feature",
              "lead_quality",
              "pricing",
              "praise",
              "other"
            ],
            "title": "Category",
            "type": "string"
          },
          "kind": {
            "default": "tool",
            "enum": [
              "tool",
              "product"
            ],
            "title": "Kind",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          },
          "tool": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Tool"
          }
        },
        "required": [
          "message"
        ],
        "title": "send_feedbackArguments",
        "type": "object"
      },
      "name": "send_feedback"
    },
    {
      "description": "Submit a lead-generation campaign. Pass translate_icp's `vertical`, `geo`, and\n        `query` fields directly (category/location are ALIASES for vertical/geo, accepted\n        so translate output round-trips; prefer vertical/geo when constructing calls).\n        `query`'s full shape and field vocabulary are in this tool's schema — build it\n        with translate_icp from free text (recommended), or construct it directly. An\n        unknown predicate field (or rank), and any unknown `discovery` key, is rejected\n        with a 422 naming it; an unknown top-level `query` key is silently ignored, so\n        keep to predicates/rank/discovery — a typo there will not error, it will just do\n        nothing.\n        Costs 1 credit per validated lead — every campaign type, including founder/person\n        campaigns and campaigns that filter on Meta ads. A campaign cannot overspend: if\n        discovered leads exceed your balance it delivers what your credits cover and the\n        campaign ends `done_partial`; check get_credits first if your balance is low.\n        vertical/geo are REQUIRED except for a locationless campaign — `query` carrying a\n        discovery block with mode 'launch_feeds' or 'web_search' — which has no geography\n        at all.\n        If the tenant has no card on file this returns a 403 `card_required` error with a\n        `setup_url` — surface that URL to the user so they can verify a card (never\n        charged unless they buy a pack).\n        Pass a stable idempotency_key when you might retry — a retry returns the ORIGINAL\n        campaign (idempotent_replay=true), never a duplicate charge.\n        Returns {job_id, idempotent_replay}; poll get_campaign_status with job_id.",
      "inputSchema": {
        "$defs": {
          "QueryInput": {
            "additionalProperties": true,
            "description": "The structured filter start_campaign runs. Build it with translate_icp from free\ntext (recommended), or construct it directly from this schema's vocabulary.",
            "properties": {
              "discovery": {
                "anyOf": [
                  {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "OPTIONAL non-Maps discovery directive. Omit it (the default) to discover local businesses on Google Maps, which is what vertical/geo describe. Two other modes exist, both with NO geography (vertical/geo are then not required). mode \"launch_feeds\": companies that RECENTLY LAUNCHED — and, optionally, the named founders behind them — from Product Hunt, Y Combinator and TinyLaunch; keys target_type (\"person\" for named founders or \"company\"; both bill 1 credit per validated lead), role (default \"founder\"), launch_window_days (1-365, default 90), category_keywords (e.g. [\"b2b\", \"saas\"]; empty keeps everything). mode \"web_search\": long-tail ONLINE businesses Google Maps never had, found by organic search — keys search_queries (1-5 queries, each a separate paid search; say what the business IS, e.g. [\"marketing agencies for dentists\"]), search_location (search locale, default \"United States\"), search_depth (10-100, default 60). It finds COMPANIES ONLY (billed 1 credit) and cannot carry the city-keyed signals runs_google_ads / serp_rank / runs_meta_ads / in_local_pack / ads_state. Filter platform membership with the detected_tech and tech_state fields instead. Firmographics (funding stage, headcount, revenue, technology spend) are NOT available in any mode and must never be written into a search query. Prefer translate_icp, which emits this block for you; a malformed or unknown-mode block is rejected at submit with a 422 naming the problem, never silently run as a Maps campaign. A mode may also be temporarily unavailable when its costs are not covered: submitting it returns a 422 that says so, and nothing is charged.",
                "title": "Discovery"
              },
              "predicates": {
                "description": "all predicates must hold for a lead to count as a confirmed match",
                "items": {
                  "$ref": "#/$defs/QueryPredicateInput"
                },
                "title": "Predicates",
                "type": "array"
              },
              "rank": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "optional field to sort/prioritize results by (same vocabulary as predicate fields)",
                "enum": [
                  "ads_state",
                  "areas_served",
                  "booking_state",
                  "category",
                  "detected_tech",
                  "digital_maturity_score",
                  "emergency_24_7",
                  "first_review_at",
                  "has_contact_form",
                  "has_h1",
                  "has_hours",
                  "has_meta_description",
                  "has_real_site",
                  "has_robots",
                  "has_schema_org",
                  "has_sitemap",
                  "has_title",
                  "has_viewport",
                  "has_website",
                  "in_local_pack",
                  "is_claimed",
                  "is_franchise",
                  "is_social_only",
                  "licensed",
                  "locations_in_campaign",
                  "low_star_reviews_30d",
                  "low_star_reviews_60d",
                  "low_star_reviews_90d",
                  "multi_location",
                  "outdated_state",
                  "page_count",
                  "platform",
                  "rating",
                  "review_count",
                  "review_trend_state",
                  "runs_google_ads",
                  "runs_meta_ads",
                  "seo_basics_state",
                  "serp_rank",
                  "tech_state",
                  "titles_identical",
                  "total_photos",
                  "website_social_only",
                  "website_state",
                  "years_in_business"
                ],
                "title": "Rank"
              }
            },
            "title": "QueryInput",
            "type": "object"
          },
          "QueryPredicateInput": {
            "additionalProperties": true,
            "properties": {
              "field": {
                "description": "the business attribute to filter on. The enum is the supported vocabulary; x-field-catalog documents each field's meaning, type, allowed ops, an example value, and — for the *_state verdict fields — the exact values to compare against. An unknown predicate field is rejected at submit with a 422 naming it.",
                "enum": [
                  "ads_state",
                  "areas_served",
                  "booking_state",
                  "category",
                  "detected_tech",
                  "digital_maturity_score",
                  "emergency_24_7",
                  "first_review_at",
                  "has_contact_form",
                  "has_h1",
                  "has_hours",
                  "has_meta_description",
                  "has_real_site",
                  "has_robots",
                  "has_schema_org",
                  "has_sitemap",
                  "has_title",
                  "has_viewport",
                  "has_website",
                  "in_local_pack",
                  "is_claimed",
                  "is_franchise",
                  "is_social_only",
                  "licensed",
                  "locations_in_campaign",
                  "low_star_reviews_30d",
                  "low_star_reviews_60d",
                  "low_star_reviews_90d",
                  "multi_location",
                  "outdated_state",
                  "page_count",
                  "platform",
                  "rating",
                  "review_count",
                  "review_trend_state",
                  "runs_google_ads",
                  "runs_meta_ads",
                  "seo_basics_state",
                  "serp_rank",
                  "tech_state",
                  "titles_identical",
                  "total_photos",
                  "website_social_only",
                  "website_state",
                  "years_in_business"
                ],
                "title": "Field",
                "type": "string",
                "x-field-catalog": {
                  "ads_state": {
                    "description": "paid-ads verdict ADS_PRESENT/NO_ADS_FOUND, null when unresolved",
                    "example": "NO_ADS_FOUND",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str",
                    "values": [
                      "ADS_PRESENT",
                      "NO_ADS_FOUND"
                    ]
                  },
                  "areas_served": {
                    "description": "service-area city names parsed from the site",
                    "example": "Phoenix",
                    "ops": [
                      "contains",
                      "not_contains"
                    ],
                    "type": "list[str]"
                  },
                  "booking_state": {
                    "description": "online-booking verdict BOOKING_PRESENT/BOOKING_ABSENT, null when unresolved",
                    "example": "BOOKING_ABSENT",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str",
                    "values": [
                      "BOOKING_PRESENT",
                      "BOOKING_ABSENT"
                    ]
                  },
                  "category": {
                    "description": "the business vertical/type — goes in the top-level `category`, NOT a predicate",
                    "example": "plumber",
                    "ops": [
                      "eq"
                    ],
                    "type": "str"
                  },
                  "detected_tech": {
                    "description": "tech/widgets detected on the site (e.g. shopify, calendly, toast, doordash)",
                    "example": "shopify",
                    "ops": [
                      "contains",
                      "not_contains"
                    ],
                    "type": "list[str]"
                  },
                  "digital_maturity_score": {
                    "description": "0-100 composite web-maturity score (low = bigger digital gap)",
                    "example": 50,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "float"
                  },
                  "emergency_24_7": {
                    "description": "site advertises 24/7 emergency service",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "first_review_at": {
                    "description": "the date of the business's EARLIEST Google review (ISO, e.g. 2024-01-15) -- only set when the reviews we fetched are provably its ENTIRE review history. This is an AGE FLOOR ('has existed at least since this date'), never an opening date: a long-established business that only recently got its first review looks new by this measure. Blank/null when we only saw part of its history and cannot know the true first review -- a real, unbilled outcome, not an error. Use this to answer how-long-has-this-business-existed style asks by comparing against a cutoff date; never present it as a founding or opening date",
                    "example": "2024-01-15",
                    "ops": [
                      "eq",
                      "neq",
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "exists"
                    ],
                    "type": "str"
                  },
                  "has_contact_form": {
                    "description": "the site has a contact/inquiry form",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_h1": {
                    "description": "the homepage has a non-empty <h1> heading, read from raw served HTML (may read absent on client-rendered sites; prefer the seo_basics segment for render-safe SEO health)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_hours": {
                    "description": "business lists opening hours",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_meta_description": {
                    "description": "the homepage has a meta description (basic SEO)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_real_site": {
                    "description": "has a real website (not social-only / not empty)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_robots": {
                    "description": "the site has a /robots.txt, read from raw served HTML (may read absent on client-rendered sites; prefer the seo_basics segment for render-safe SEO health)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_schema_org": {
                    "description": "the site has schema.org structured data",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_sitemap": {
                    "description": "the site has a /sitemap.xml, read from raw served HTML (may read absent on client-rendered sites; prefer the seo_basics segment for render-safe SEO health)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_title": {
                    "description": "the homepage has a non-empty <title>",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_viewport": {
                    "description": "the site is mobile-friendly (has a viewport meta tag)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "has_website": {
                    "description": "business has any website at all",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "in_local_pack": {
                    "description": "appears in the Google Maps local 3-pack for its category+city",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "is_claimed": {
                    "description": "the Google listing is claimed/managed by the owner",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "is_franchise": {
                    "description": "the business name matches a known national franchise brand (dated list); False means no match on this list, NOT verified independent — never claim independence from this field alone",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "is_social_only": {
                    "description": "the only web presence is a social page (Facebook/Instagram/etc.)",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "licensed": {
                    "description": "site states licensed/insured",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "locations_in_campaign": {
                    "description": "how many businesses in this search share this name or domain at different addresses (>1 = multi-location/chain in this run)",
                    "example": 3,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "low_star_reviews_30d": {
                    "description": "how many of this business's Google reviews are rated 2 stars or less, counting back 30 days from the date we FETCHED its reviews (not today's date). null means we could not prove we saw the whole 30-day window -- a real, unbilled outcome, not an error, and NOT the same as a proven zero (zero means we saw the whole window and it was clean). For a plain yes/no 'does this business have a reputation problem' ask, use review_trend_state instead of a raw count",
                    "example": 3,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "low_star_reviews_60d": {
                    "description": "how many of this business's Google reviews are rated 2 stars or less, counting back 60 days from the date we FETCHED its reviews (not today's date). null means we could not prove we saw the whole 60-day window -- a real, unbilled outcome, not an error, and NOT the same as a proven zero (zero means we saw the whole window and it was clean). For a plain yes/no 'does this business have a reputation problem' ask, use review_trend_state instead of a raw count",
                    "example": 3,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "low_star_reviews_90d": {
                    "description": "how many of this business's Google reviews are rated 2 stars or less, counting back 90 days from the date we FETCHED its reviews (not today's date). null means we could not prove we saw the whole 90-day window -- a real, unbilled outcome, not an error, and NOT the same as a proven zero (zero means we saw the whole window and it was clean). For a plain yes/no 'does this business have a reputation problem' ask, use review_trend_state instead of a raw count",
                    "example": 3,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "multi_location": {
                    "description": "the same business record was found in multiple data sources and merged into one canonical record during dedupe (a dedupe multiplicity) — NOT chain/multi-site detection; use locations_in_campaign for multi-location/chain filtering",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "outdated_state": {
                    "description": "outdated-website verdict OUTDATED/CURRENT, null when unresolved",
                    "example": "OUTDATED",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str",
                    "values": [
                      "OUTDATED",
                      "CURRENT"
                    ]
                  },
                  "page_count": {
                    "description": "how many of home/contact/about/team pages resolved",
                    "example": 1,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "platform": {
                    "description": "site builder/platform (wix, squarespace, wordpress, godaddy, weebly, shopify, custom)",
                    "example": "wix",
                    "ops": [
                      "eq",
                      "neq"
                    ],
                    "type": "str"
                  },
                  "rating": {
                    "description": "average star rating, 0-5",
                    "example": 4.2,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "float"
                  },
                  "review_count": {
                    "description": "number of reviews",
                    "example": 30,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "review_trend_state": {
                    "description": "recent-reviews verdict — NEGATIVE_WAVE when the business received 3 or more reviews rated 2 stars or less in the last 90 days, STABLE when it did not, null when we could not see the whole 90-day window (a real, unbilled outcome — not an error, and not the same as STABLE). Use this for 'recent bad reviews', 'wave of 1-star reviews', 'reputation problems lately'. It is about RECENT ratings only — for overall rating or review volume use rating / review_count instead",
                    "example": "NEGATIVE_WAVE",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str"
                  },
                  "runs_google_ads": {
                    "description": "the business runs Google Search ads (advertiser-level, any campaign)",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "runs_meta_ads": {
                    "description": "the business runs active Meta/Facebook ads (Ad Library). EXPERIMENTAL: the resolver is unverified and OFF by default (needs --enable-meta); without it this yields needs_review, never a confident answer",
                    "example": false,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "seo_basics_state": {
                    "description": "render-safe SEO health verdict: SEO_BASICS_MISSING (2+ of no title/no meta description/no H1/identical titles/no sitemap+robots) or SEO_BASICS_PRESENT; null when unresolved or the site is client-rendered (title/meta/H1 injected at runtime, so raw HTML can't be trusted) — prefer this over the raw has_title/has_h1/etc. fields for SEO-health filtering",
                    "example": "SEO_BASICS_MISSING",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str",
                    "values": [
                      "SEO_BASICS_MISSING",
                      "SEO_BASICS_PRESENT"
                    ]
                  },
                  "serp_rank": {
                    "description": "Google organic position for its category+city, 1=top. Prefer page thresholds: <=10 'page 1', <=50 'top 50', >10 'not on page 1', eq 1 'ranked #1'. Never emit a value above 100 or compare against the not-ranked sentinel. Approximate (keyword-proxy): a business may rank for a narrower term than category+city, so 'not ranking' can under-count.",
                    "example": 10,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq"
                    ],
                    "type": "int"
                  },
                  "tech_state": {
                    "description": "platform-membership verdict from the site crawl — TECH_DETECTED / TECH_NONE_DETECTED, null when the site could not be crawled or is client-rendered (a runtime-injected widget is invisible in served HTML). Pair it with detected_tech to name the platform",
                    "example": "TECH_DETECTED",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str",
                    "values": [
                      "TECH_DETECTED",
                      "TECH_NONE_DETECTED"
                    ]
                  },
                  "titles_identical": {
                    "description": "the <title> tag is identical across every crawled page (thin/templated-site smell), read from raw served HTML (may read absent on client-rendered sites; prefer the seo_basics segment for render-safe SEO health)",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "total_photos": {
                    "description": "number of listing photos",
                    "example": 10,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  },
                  "website_social_only": {
                    "description": "the business's only web presence is a social/directory page like Facebook, no real website",
                    "example": true,
                    "ops": [
                      "eq",
                      "exists"
                    ],
                    "type": "bool"
                  },
                  "website_state": {
                    "description": "website-presence verdict — WEBSITE_NONE / WEBSITE_SOCIAL_ONLY / WEBSITE_PRESENT, null when unresolved",
                    "example": "WEBSITE_NONE",
                    "ops": [
                      "eq",
                      "neq",
                      "exists"
                    ],
                    "type": "str",
                    "values": [
                      "WEBSITE_NONE",
                      "WEBSITE_SOCIAL_ONLY",
                      "WEBSITE_PRESENT"
                    ]
                  },
                  "years_in_business": {
                    "description": "the FOUNDING YEAR (a 4-digit year like 1998), parsed from 'since/established YYYY' — NOT a duration. To find businesses younger than N years, use years_in_business > (current_year - N); older than N, use < that value",
                    "example": 1998,
                    "ops": [
                      "lt",
                      "lte",
                      "gt",
                      "gte",
                      "eq",
                      "neq"
                    ],
                    "type": "int"
                  }
                }
              },
              "op": {
                "description": "comparison operator",
                "enum": [
                  "eq",
                  "neq",
                  "lt",
                  "lte",
                  "gt",
                  "gte",
                  "contains",
                  "not_contains",
                  "in",
                  "exists"
                ],
                "title": "Op",
                "type": "string"
              },
              "value": {
                "default": null,
                "description": "comparison value; omit for op='exists'",
                "title": "Value"
              }
            },
            "required": [
              "field",
              "op"
            ],
            "title": "QueryPredicateInput",
            "type": "object"
          }
        },
        "properties": {
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Category"
          },
          "geo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Geo"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Idempotency Key"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Location"
          },
          "query": {
            "$ref": "#/$defs/QueryInput"
          },
          "vertical": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Vertical"
          }
        },
        "required": [
          "query"
        ],
        "title": "start_campaignArguments",
        "type": "object"
      },
      "name": "start_campaign"
    },
    {
      "description": "Translate free-text ICP description (e.g. \"plumbers in phoenix with no\n        website\") into a structured query. Call this BEFORE start_campaign — start_campaign\n        only accepts a structured `query` dict, never free text. Returns {query, vertical,\n        geo, category, location, preview, unsupported, discovery} — pass vertical/geo/query\n        straight to start_campaign.\n        `discovery` is non-empty when the ask routes OUTSIDE Google Maps, in one of two\n        shapes. Mode 'launch_feeds': people/companies that RECENTLY LAUNCHED (e.g.\n        \"founders of B2B SaaS that launched in the last 3 months\") — it names the launch\n        feeds to search and whether the leads are people or companies. Mode 'web_search':\n        long-tail ONLINE businesses Google Maps never had (e.g. \"marketing agencies for\n        dentists\"), found via paid organic search — companies only, never people. Either\n        way the block is already embedded inside the returned `query`, so passing `query`\n        through unchanged is all that's needed; neither mode has a geography, so\n        vertical/geo come back empty and start_campaign does not require them.\n        Anything we cannot actually source lands in `unsupported` instead — read that list\n        aloud to the user rather than pretending the campaign will cover it.",
      "inputSchema": {
        "properties": {
          "text": {
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "translate_icpArguments",
        "type": "object"
      },
      "name": "translate_icp"
    }
  ]
}

What the leaf hashes

{"body":"94326bf7b9cb11a1dbb3a81858b1fcee31a798827632a6e20cc69bf9a5afe447","id":541488,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793130414863764,"prev":null,"subject":"6cc10ce4-9b4b-469c-b1bd-1f0d5b1f517d","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0xb5410892ffa39ca2c4df1a0793c0687d21dae5538da32ba7b8ed7a7079b4f0fd
  2. 0x71ef2f466ed2dce5f56b986f35f4f741a34365a810154a45aceb82890eaadaf3
  3. 0xf819f53d1d3fd33d29437287dbac55614b4ec054d8dd332896f3b821d1ad6b0a
  4. 0x12f1d4c9ff0694f3b52d87bc7de70dc777762818d58b85502bc862ce0f914cc9
  5. 0x4b244754e1e6098de1b3d7e26ec33f282e6308eaf15f750d3bd6c8c4e5aee87b
  6. 0x425e0a596bc8dfc2af5f54ec99bff2884e4942bbe2828c0393a1fb9377e933e4
  7. 0x311bebd2dcec6a01ca2d66ccdaa22b5f51d9381a488a3080d8864ae3147544d1
  8. 0xf3d8ab5d1262adc25fc46b0a6fb87c658390bcbdec2db865a30a36bd9462542d
  9. 0x8a991a24583330e78274fcc6b9dfd0f7c3072f70d63eed833b5a967343c1c255
  10. 0xe7e71b576b25799c9b0af1e45e5a92862b62c2a5ac5ccf73129b5710faa9e599
  11. 0x243eb39aa2801b8f3c086ddae3e662e32591df4ba5a63762a56e5f566bfaa855
  12. 0x6e2f1bf13e63baa5946a254cc655175b50df835d2a257befe1759b4bc17ef93c
  13. 0xdb8e341e9690aa686b29432c7b868b3859fb692c3ae3a679b8bc1219ebe3a597
  14. 0x87cb8935612c40b569de008a9bf8218cd24a06f74a7364a1654613d972fe00ed
  15. 0xec7bb68216a4deb1960acfbbd75da88f7e468b58adb9cf3ec62f2790e46508b3
  16. 0x64c405a28e8819716221eb2529fe4ce277ab08025e17e685cbd5ece75ceb75c7
  17. 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON