addrbookFor publishers
← The evidence ledger

Evidence row 568520

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 59631c0b-55f7-4c25-a255-af865c5a4045
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
dba63e7d1c777e31bfab6e28ce04edef9ce716fe91e8eddee4920dbb06f2c6e1
Leaf
0x76154f691e4efd0a1ae54097a9d54d033152bebab97b44c937c176b7957221fd

What was observed

{
  "count": 23,
  "tools": [
    {
      "description": "Resume a greenfield Google connect paused on Terms-of-Service acceptance (status tos_required). Only call this after the merchant has confirmed they accept the Google Merchant Center ToS (termsUrl from get_google_connect_status). Creates their Merchant Center account and finishes the handshake.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "accept_google_terms"
    },
    {
      "description": "Replace ONE product's shopper-visible store description with Pollen's SANITIZED enriched version - the storefrontDescriptionCandidate shown by get_product, NOT the raw agentDescription (hedged sentences and enrichment meta-commentary are stripped before anything touches the store). This overwrites human-facing content, so you MUST show the merchant that exact candidate first and get their explicit approval before calling. Only applies when the store's current description is thin (<200 chars).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "productId": {
            "description": "Pollen internal product ID",
            "type": "string"
          }
        },
        "required": [
          "productId"
        ],
        "type": "object"
      },
      "name": "apply_description"
    },
    {
      "description": "Run one of Pollen's automated catalog-wide fixes on the merchant's store: 'seo' (fill empty SEO titles + meta descriptions), 'tags' (add tags from enrichment facts to products with fewer than 3), 'altText' (fill empty image alt texts), or 'brand' (fill missing brand from enrichment or the store's own name - Shopify vendor / WC Brands). Fill-only-empty: values the merchant already set are NEVER touched. Queued on the worker - poll get_fix_opportunities fixStatuses for progress.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "fixType": {
            "enum": [
              "seo",
              "tags",
              "altText",
              "brand"
            ],
            "type": "string"
          }
        },
        "required": [
          "fixType"
        ],
        "type": "object"
      },
      "name": "apply_fixes"
    },
    {
      "description": "Start (or restart) connecting the merchant's Google Merchant Center to Pollen. Returns an authUrl that the HUMAN must open in a browser to grant Google consent - an agent cannot click it. After they approve, call get_google_connect_status to see where the flow landed (it may pause on an account picker or Terms-of-Service acceptance; resume with pick_google_account / accept_google_terms). Once active, Pollen publishes the enriched catalog automatically.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "connect_google"
    },
    {
      "description": "Start (or restart) connecting the merchant's Meta (Facebook/Instagram) Business catalog to Pollen. Returns an authUrl that the HUMAN must open in a browser to approve via Facebook Login - an agent cannot click it. Afterwards call get_meta_connect_status; the flow may pause on a business or catalog picker (resume with pick_meta_business / pick_meta_catalog). Once active, Pollen publishes the enriched catalog automatically.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "connect_meta"
    },
    {
      "description": "Run enrichment across the merchant's full catalog (PENDING + FAILED products). Returns a job reference; check `get_pipeline_status` for progress. This is the primary 'do the work' action.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "enrich_all_products"
    },
    {
      "description": "Run Pollen's multimodal enrichment on a single product. Returns immediately with a job reference; check `get_pipeline_status` for progress.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "productId": {
            "description": "Pollen internal product ID",
            "type": "string"
          }
        },
        "required": [
          "productId"
        ],
        "type": "object"
      },
      "name": "enrich_product"
    },
    {
      "description": "Get a high-level summary of the merchant's Pollen account: plan, agent-ready %, product counts, last sync/enrichment/writeback timestamps. Use this first if the user asks 'where do I stand?' or 'what's my status?'",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_account_summary"
    },
    {
      "description": "The Deep Audit report: the AI answer-visibility test (frozen shopper questions asked to Claude and Gemini - cited or not, with evidence), the catalog fix plan, and the worst-scoring products with their missing attributes. Access requires the $9 one-time purchase or any paid plan; without access this returns what the report contains and how to unlock it.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_deep_audit"
    },
    {
      "description": "Analyze the catalog's agent-readiness gaps and what can be done about each: points lost per score dimension, counts fixable automatically by Pollen (empty SEO meta, missing image alt text, thin tags), the 'needs you' checklist of physical facts only the merchant knows (SKU, barcode, weight, brand, photos) with product names, and per-product description candidates awaiting merchant approval. Start here when the user asks 'what's wrong?' or 'how do I improve my score?'.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_fix_opportunities"
    },
    {
      "description": "Where the Google connection stands. status: none|selecting_account (call pick_google_account with one of the returned candidates)|tos_required (call accept_google_terms)|verifying|awaiting_approval|connector_pending (Pollen is finishing setup server-side - just re-check later)|active|claim_conflict|not_admin|error. When active, includes the live funnel stage (publishing/in_review/live) and approval counts.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_google_connect_status"
    },
    {
      "description": "Where the Meta connection stands. status: none|selecting_business (call pick_meta_business with a candidate)|selecting_catalog (call pick_meta_catalog with a candidate id or \"__create__\" for a fresh Pollen-managed catalog)|not_admin (the Facebook account isn't a Business admin - reconnect with the right account)|active|error. When active, includes the live funnel stage and approval counts.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_meta_connect_status"
    },
    {
      "description": "Fetch Hive cross-merchant signal for the merchant's catalog: category benchmarks (avg images, top angles, etc.) alongside the merchant's own catalog stats for comparison. Use when the user asks 'how do I compare to similar stores?'",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Optional category to benchmark against (apparel, beauty, home_decor, food_beverage, furniture, jewelry, footwear, fitness, electronics, diy_hardware). If omitted, returns insights across the most common category in the catalog.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_network_insights"
    },
    {
      "description": "Read live pipeline status for the merchant's shop: sync, enrichment (with progress), and writeback. Use when the user asks 'is anything running?' or 'how far along is enrichment?'",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_pipeline_status"
    },
    {
      "description": "Fetch full enriched detail for one product by ID. Includes the structured facts, agent description, missing attributes, cultural references, and score breakdown.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "productId": {
            "description": "Pollen internal product ID",
            "type": "string"
          }
        },
        "required": [
          "productId"
        ],
        "type": "object"
      },
      "name": "get_product"
    },
    {
      "description": "Get the merchant-side setup steps Pollen cannot do via API - platform plugin/extension activation, SEO plugin note, surface connections still pending. Each section says exactly what to do and why. Use when onboarding or when the user asks 'what's left to set up?'.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_setup_instructions"
    },
    {
      "description": "List products in the merchant's catalog with optional filters. Useful for 'show me products that haven't been enriched yet' or 'find products with the lowest scores'. Returns up to 50 per call.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "enrichmentStatus": {
            "description": "Filter by enrichment status",
            "enum": [
              "PENDING",
              "COMPLETED",
              "FAILED",
              "RUNNING"
            ],
            "type": "string"
          },
          "limit": {
            "default": 25,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "search": {
            "description": "Match against title/vendor/type",
            "type": "string"
          },
          "sortBy": {
            "default": "updated_desc",
            "enum": [
              "score_asc",
              "score_desc",
              "updated_desc"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_products"
    },
    {
      "description": "Resume a Google connect paused on the account picker (status selecting_account). Pass the accountId of one of the candidates returned by get_google_connect_status. On success Pollen finishes the handshake and publishes the catalog automatically.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "accountId": {
            "description": "Merchant Center account ID from the candidates list",
            "type": "string"
          }
        },
        "required": [
          "accountId"
        ],
        "type": "object"
      },
      "name": "pick_google_account"
    },
    {
      "description": "Resume a Meta connect paused on the business picker (status selecting_business). Pass the businessId of a candidate from get_meta_connect_status. May advance to the catalog picker (selecting_catalog) or go straight active.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "businessId": {
            "description": "Business portfolio ID from the candidates list",
            "type": "string"
          }
        },
        "required": [
          "businessId"
        ],
        "type": "object"
      },
      "name": "pick_meta_business"
    },
    {
      "description": "Resume a Meta connect paused on the catalog picker (status selecting_catalog). Pass a candidate catalog id, or \"__create__\" to create a dedicated \"Pollen - {shop}\" catalog. NEVER pick an existing catalog without the merchant's explicit confirmation - Pollen will manage (add/remove) products in it.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "catalogId": {
            "description": "Catalog ID from the candidates list, or \"__create__\"",
            "type": "string"
          }
        },
        "required": [
          "catalogId"
        ],
        "type": "object"
      },
      "name": "pick_meta_catalog"
    },
    {
      "description": "Trigger a full product sync from the merchant's platform (Shopify, WC, BC) into Pollen. Use before enrichment if products are missing or out of date.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "sync_catalog"
    },
    {
      "description": "Write merchant-supplied physical facts to the store - the 'only you know this' gaps Pollen can't fill from enrichment: SKU, barcode (GTIN/UPC/EAN), weight, and brand. Use when the merchant provides values ('all tees weigh 180 grams', 'barcodes from my supplier sheet'). sku/barcode/weight are per-variant: products with multiple variants need variantId (list them via get_product). Up to 25 updates per call; each returns applied + previous values and the product's new score.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "updates": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "barcode": {
                  "description": "GTIN/UPC/EAN",
                  "type": "string"
                },
                "brand": {
                  "description": "Brand name - written to Shopify vendor / WooCommerce Brands (WC 9.6+)",
                  "type": "string"
                },
                "productId": {
                  "description": "Pollen internal product ID",
                  "type": "string"
                },
                "sku": {
                  "type": "string"
                },
                "variantId": {
                  "description": "Pollen internal variant ID - required when the product has multiple variants and sku/barcode/weight are being set",
                  "type": "string"
                },
                "weight": {
                  "type": "number"
                },
                "weightUnit": {
                  "description": "Shopify only (default g). WooCommerce uses the store's configured unit.",
                  "enum": [
                    "g",
                    "kg",
                    "oz",
                    "lb"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "productId"
              ],
              "type": "object"
            },
            "maxItems": 25,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "updates"
        ],
        "type": "object"
      },
      "name": "update_product_facts"
    },
    {
      "description": "Push enriched data back to the merchant's platform as metafields/meta_data. Run after enrichment completes. Use when the user says 'publish' or 'push to my store'.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "write_back_to_store"
    }
  ]
}

What the leaf hashes

{"body":"dba63e7d1c777e31bfab6e28ce04edef9ce716fe91e8eddee4920dbb06f2c6e1","id":568520,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793139040548402,"prev":null,"subject":"59631c0b-55f7-4c25-a255-af865c5a4045","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. 0x761529a33d4a25d8698e42695b8ccf60f0eee64c9c15be3ff699b9c6977a8354
  2. 0x96dbb9dcf62962249cace29d4cd4180f9ce8ac69a00299b891c3c9f89450d24e
  3. 0x8a41ad09bd888aff3a410cbb73fb81e61b31b2b20a54bfaaf8022367f59eedfc
  4. 0x4d6c621123a0f22963e07184d1b8f6f873d808131625f83cc914afdecaeba29c
  5. 0xe071a27e0f7978653b8c962be13ebb345cea60946c29b5a1f1fe8eedd9707f1d
  6. 0xba5d86286bd7ef0956f4a41c6fb16067cbb400a41245d63214462102eb155bfe
  7. 0x8ae3eabf48d5fbd6d1da0dafdcab43a4d3d9933966a6f5da34925de2f62bf53b
  8. 0xa9263345f43ffc69969c7cbf27d727dcbfc6b267d8e76e1b365490c4063d6990
  9. 0x1b57fedaf028678d6a135dff491911ba098beab0a7b77c5abe8ebfe0655e14ca
  10. 0x58a21ad77eb0f12e2700138a011395f72f29a249b03b15df913625a0119d05d6
  11. 0x5f257f988f0c8c8a45a1094d99dd8e8969da325eabed8aa44c6b668fac04f073
  12. 0x6834d22f4558c2279e3de3027a40f72cd350b3c4a2e54be57aff9ec2c9eaf01a
  13. 0x4094bd5bc2ab60e4518d1ee8a13455a69d7484ea62ecdca2618d0f39d3403503
  14. 0x9848c068b1371232529d2b5738fdc45b854c57da041b69ea7c9e112b14e2d9d1
  15. 0x275720ecabb68df33eee92ae4fd70572a8d952d6c61c061c2869cfc3217aa5c5
  16. 0x23cf9bb4337ee8be7fcae368fd69d24c62c11fb45882127b4cd919bb96a19996
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON