addrbookFor publishers
← The evidence ledger

Evidence row 3944794

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint b7f2ab45-2bb4-4ea1-bc4c-bab6ccf3485d
Recorded
Previous row
#3471044
Body SHA-256
c3d59e76c5fb312a2d952e397a6f7893797c46860600e11d61ce33530e2da5b3
Leaf
0x2c65bb86724c1ce089d53a1ee07d58ec4c571b2f4d98bbfc44850915eeeaceee

What was observed

{
  "count": 16,
  "tools": [
    {
      "description": "Shows whether the contractor has set their password yet (setup_link_pending), the current pricing summary, branding and install details. Requires org_id and setup_claim.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "setup_claim": {
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "setup_claim"
        ],
        "type": "object"
      },
      "name": "check_account_status"
    },
    {
      "description": "Creates a GroundQuote account for a fence contractor and emails the contractor a link to set their own password (the email includes the pricing terms). Nothing is charged; no card is required. Returns org_id, slug, the embed snippet, terms_summary, and a setup_claim you must keep and pass to set_fence_pricing, set_branding, set_hosted_page, get_embed_code, check_account_status and resend_setup_email. Confirm the contractor has heard the pricing terms before calling. Use the contractor's own email as owner_email.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "city": {
            "maxLength": 80,
            "type": "string"
          },
          "company_name": {
            "description": "The contractor's business name as it should appear to homeowners",
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "owner_email": {
            "description": "The contractor's own email. They receive the set-password link; only they can unlock leads.",
            "format": "email",
            "type": "string"
          },
          "owner_name": {
            "description": "The contractor's name",
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "phone": {
            "description": "The contractor's phone number",
            "minLength": 10,
            "type": "string"
          },
          "state": {
            "description": "Two-letter US state",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "terms_relayed": {
            "const": true,
            "description": "Must be true: you have told the contractor the pricing terms from get_pricing_terms",
            "type": "boolean"
          },
          "website_url": {
            "description": "Their website, if they have one",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "company_name",
          "owner_email",
          "owner_name",
          "phone",
          "terms_relayed"
        ],
        "type": "object"
      },
      "name": "create_contractor_account"
    },
    {
      "description": "Returns the full text of a documentation entry by id from search.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "fetch"
    },
    {
      "description": "For homeowners looking for a fence. Lists verified fence contractors (businesses that have confirmed their contact details with GroundQuote) near a US ZIP or city, in two groups, each contractor only within their own service radius: instant_quote (GroundQuote contractors with published rates — use contractor_id with get_fence_estimate) and listed_only (verified directory contractors without published rates — share their directory link or phone; do not invent prices). unverified_nearby counts other directory contractors who have not verified yet and are not listed; browse_directory_url is the public directory page for the area, to share when the homeowner wants more choice or nothing verified is nearby. Free for homeowners.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "city": {
            "description": "City or town, e.g. \"Cary\"",
            "maxLength": 80,
            "type": "string"
          },
          "material": {
            "description": "Optional material filter, e.g. \"vinyl\"",
            "maxLength": 40,
            "type": "string"
          },
          "state": {
            "description": "Two-letter US state, e.g. \"NC\". Required unless zip is given.",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "zip": {
            "description": "Homeowner's 5-digit ZIP; most precise for distance",
            "pattern": "^\\d{5}$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "find_fence_contractors"
    },
    {
      "description": "Returns the iframe HTML to paste into the contractor's site and the hosted-page URL. Requires org_id and setup_claim.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "setup_claim": {
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "setup_claim"
        ],
        "type": "object"
      },
      "name": "get_embed_code"
    },
    {
      "description": "Returns a price range for a fence from one GroundQuote contractor's published per-foot rates, gates and removal fee. Nothing is sent to the contractor. If the material/style/height is not offered, returns that contractor's options. Tell the homeowner it is an estimate until the contractor measures on site.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "contractor_id": {
            "description": "contractor_id from find_fence_contractors (instant_quote group)",
            "maxLength": 80,
            "minLength": 2,
            "type": "string"
          },
          "double_gates": {
            "maximum": 20,
            "minimum": 0,
            "type": "integer"
          },
          "height": {
            "anyOf": [
              {
                "maxLength": 20,
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "Height, e.g. \"6 ft\" or 6. Optional if only one is offered."
          },
          "linear_feet": {
            "description": "Total fence length in feet. Ask the homeowner; it is their estimate.",
            "maximum": 5000,
            "minimum": 10,
            "type": "number"
          },
          "material": {
            "description": "Material, from the contractor's catalog (e.g. \"Wood\", \"Vinyl\")",
            "maxLength": 40,
            "minLength": 1,
            "type": "string"
          },
          "remove_old_fence": {
            "description": "Tear out and haul away an existing fence",
            "type": "boolean"
          },
          "single_gates": {
            "maximum": 20,
            "minimum": 0,
            "type": "integer"
          },
          "style": {
            "description": "Style from the contractor's catalog (e.g. \"Privacy\"). Optional if they offer only one.",
            "maxLength": 60,
            "type": "string"
          }
        },
        "required": [
          "contractor_id",
          "material",
          "linear_feet"
        ],
        "type": "object"
      },
      "name": "get_fence_estimate"
    },
    {
      "description": "Explains the two install paths (iframe embed on an existing site, or a GroundQuote-hosted page for contractors with no site), what works with AI site builders, and how account ownership works. Use before you promise the contractor anything about the install.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "get_install_instructions"
    },
    {
      "description": "Read this first and relay it to the contractor before creating an account. Returns the plain-language pricing disclosure ($5 browsing lead, $15 high-intent lead, optional $150/month unlimited; nothing charged until the contractor unlocks a lead) and the guarantees. No inputs.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "get_pricing_terms"
    },
    {
      "description": "Opens one GroundQuote contractor's interactive satellite map inside the chat. The homeowner finds their property, draws the fence line, picks material and height, and sees that contractor's price from measured footage; the map asks for their name, email and phone first, and those go to that contractor when the price is shown; they can also book a site visit right in the map (the same lead the contractor gets from their website: $5 browsing, $15 with a visit, billed to the contractor only on unlock). Tell the homeowner this before opening the map. Prefer this over get_fence_estimate and over sending a website link when the homeowner is able to draw: it opens inside the chat. Use a contractor_id from the instant_quote group of find_fence_contractors. GroundQuote does not email or text the homeowner; the contractor contacts them.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "contractor_id": {
            "description": "contractor_id from find_fence_contractors (instant_quote group)",
            "maxLength": 80,
            "minLength": 2,
            "type": "string"
          }
        },
        "required": [
          "contractor_id"
        ],
        "type": "object"
      },
      "name": "open_quote_map"
    },
    {
      "description": "Re-sends the contractor's set-password email (max 3 per day per account). Requires org_id and setup_claim.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "setup_claim": {
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "setup_claim"
        ],
        "type": "object"
      },
      "name": "resend_setup_email"
    },
    {
      "description": "Searches GroundQuote's documentation (what it is, pricing, install, ownership, pricing format, rules for assistants). Returns ids to pass to fetch.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "query": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search"
    },
    {
      "description": "Sends the homeowner's name, email, phone, address and fence details to ONE GroundQuote contractor. Only call after the homeowner has explicitly agreed to share these details with that contractor. wants_site_visit=true asks the contractor to call and arrange a measurement visit; false is a price inquiry. The contractor contacts the homeowner directly; GroundQuote does not email or text the homeowner and never charges them. Repeat calls for the same homeowner and contractor within a day return the same request.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "contractor_id": {
            "maxLength": 80,
            "minLength": 2,
            "type": "string"
          },
          "homeowner": {
            "additionalProperties": false,
            "properties": {
              "address": {
                "description": "Street address of the property where the fence goes",
                "maxLength": 300,
                "minLength": 8,
                "type": "string"
              },
              "email": {
                "format": "email",
                "type": "string"
              },
              "first_name": {
                "maxLength": 60,
                "minLength": 1,
                "type": "string"
              },
              "last_name": {
                "maxLength": 60,
                "type": "string"
              },
              "phone": {
                "maxLength": 40,
                "minLength": 10,
                "type": "string"
              }
            },
            "required": [
              "first_name",
              "email",
              "phone",
              "address"
            ],
            "type": "object"
          },
          "homeowner_consent": {
            "const": true,
            "description": "Must be true: the homeowner agreed to share their contact details with this contractor",
            "type": "boolean"
          },
          "notes": {
            "description": "Anything the homeowner wants the contractor to know (slope, HOA, pets, deadline)",
            "maxLength": 500,
            "type": "string"
          },
          "preferred_days": {
            "description": "e.g. \"weekday mornings\", \"Tuesday or Wednesday\"",
            "maxLength": 80,
            "type": "string"
          },
          "preferred_time": {
            "enum": [
              "morning",
              "afternoon",
              "evening",
              "any"
            ],
            "type": "string"
          },
          "project": {
            "additionalProperties": false,
            "properties": {
              "double_gates": {
                "maximum": 20,
                "minimum": 0,
                "type": "integer"
              },
              "height": {
                "anyOf": [
                  {
                    "maxLength": 20,
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ],
                "description": "Height, e.g. \"6 ft\" or 6. Optional if only one is offered."
              },
              "linear_feet": {
                "description": "Total fence length in feet. Ask the homeowner; it is their estimate.",
                "maximum": 5000,
                "minimum": 10,
                "type": "number"
              },
              "material": {
                "description": "Material, from the contractor's catalog (e.g. \"Wood\", \"Vinyl\")",
                "maxLength": 40,
                "minLength": 1,
                "type": "string"
              },
              "remove_old_fence": {
                "description": "Tear out and haul away an existing fence",
                "type": "boolean"
              },
              "single_gates": {
                "maximum": 20,
                "minimum": 0,
                "type": "integer"
              },
              "style": {
                "description": "Style from the contractor's catalog (e.g. \"Privacy\"). Optional if they offer only one.",
                "maxLength": 60,
                "type": "string"
              }
            },
            "required": [
              "material",
              "linear_feet"
            ],
            "type": "object"
          },
          "wants_site_visit": {
            "type": "boolean"
          }
        },
        "required": [
          "contractor_id",
          "homeowner",
          "project",
          "wants_site_visit",
          "homeowner_consent"
        ],
        "type": "object"
      },
      "name": "send_quote_request"
    },
    {
      "description": "Sets logo, colors and font on the quote widget. Pass auto_fetch_from_url to read the logo and primary color from the contractor's existing site; explicit fields win over fetched values. Requires org_id and setup_claim.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "accent_color": {
            "pattern": "^#[0-9a-fA-F]{6}$",
            "type": "string"
          },
          "auto_fetch_from_url": {
            "format": "uri",
            "type": "string"
          },
          "font": {
            "enum": [
              "Inter",
              "Roboto",
              "Lato",
              "Montserrat",
              "Open Sans",
              "Outfit",
              "Plus Jakarta Sans"
            ],
            "type": "string"
          },
          "logo_url": {
            "format": "uri",
            "type": "string"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "primary_color": {
            "pattern": "^#[0-9a-fA-F]{6}$",
            "type": "string"
          },
          "secondary_color": {
            "pattern": "^#[0-9a-fA-F]{6}$",
            "type": "string"
          },
          "setup_claim": {
            "type": "string"
          },
          "website_url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "setup_claim"
        ],
        "type": "object"
      },
      "name": "set_branding"
    },
    {
      "description": "Loads the contractor's price list. Rates are dollars per linear foot by material, then style, then height (\"4 ft\", \"6 ft\", \"8 ft\"). Gates are flat surcharges. Ask the contractor for real numbers; never invent them. Replaces the whole fence catalog each call. Requires org_id and setup_claim from create_contractor_account.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "fences": {
            "additionalProperties": {
              "additionalProperties": {
                "additionalProperties": {
                  "exclusiveMinimum": 0,
                  "maximum": 10000,
                  "type": "number"
                },
                "propertyNames": {
                  "pattern": "^\\d{1,2} ft$"
                },
                "type": "object"
              },
              "propertyNames": {
                "minLength": 1
              },
              "type": "object"
            },
            "description": "material -> style -> height (\"6 ft\") -> dollars per linear foot",
            "propertyNames": {
              "minLength": 1
            },
            "type": "object"
          },
          "gate_double_usd": {
            "default": 500,
            "description": "Flat surcharge per double gate",
            "maximum": 100000,
            "minimum": 0,
            "type": "number"
          },
          "gate_single_usd": {
            "default": 300,
            "description": "Flat surcharge per single gate",
            "maximum": 100000,
            "minimum": 0,
            "type": "number"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "removal_per_ft_usd": {
            "description": "Old-fence removal, per linear foot; omit to leave unchanged",
            "maximum": 1000,
            "minimum": 0,
            "type": "number"
          },
          "require_phone": {
            "description": "Require the homeowner's phone number; default true",
            "type": "boolean"
          },
          "setup_claim": {
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "setup_claim",
          "fences"
        ],
        "type": "object"
      },
      "name": "set_fence_pricing"
    },
    {
      "description": "For contractors without a website: turns on a branded page at groundquote.com/{slug} with headline, services and contact details. Requires org_id and setup_claim.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "city": {
            "maxLength": 80,
            "type": "string"
          },
          "cover_url": {
            "format": "uri",
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "type": "boolean"
          },
          "headline": {
            "maxLength": 120,
            "type": "string"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "phone": {
            "maxLength": 30,
            "type": "string"
          },
          "services": {
            "items": {
              "maxLength": 60,
              "type": "string"
            },
            "maxItems": 12,
            "type": "array"
          },
          "setup_claim": {
            "type": "string"
          },
          "state": {
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "subheading": {
            "maxLength": 300,
            "type": "string"
          }
        },
        "required": [
          "org_id",
          "setup_claim"
        ],
        "type": "object"
      },
      "name": "set_hosted_page"
    },
    {
      "description": "For fence RENTAL companies (construction sites, events, security) rather than installers. Loads rental products priced in dollars per linear foot per period (day / week / month), the minimum term, per-rental gate charges, delivery and setup fees and optional add-ons (privacy screen, sandbag bases). Enables the rental option on the widget; leaves any installed-fence catalog untouched. Ask the company for real numbers; never invent them. Requires org_id and setup_claim from create_contractor_account.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "properties": {
          "addons": {
            "additionalProperties": {
              "additionalProperties": false,
              "properties": {
                "description": {
                  "maxLength": 200,
                  "type": "string"
                },
                "price": {
                  "maximum": 100000,
                  "minimum": 0,
                  "type": "number"
                },
                "unit": {
                  "default": "ft",
                  "enum": [
                    "ft",
                    "panel",
                    "flat"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "price"
              ],
              "type": "object"
            },
            "description": "optional extras the customer can tick, e.g. \"Privacy Screen\" -> { price: 1.25, unit: \"ft\" }",
            "propertyNames": {
              "minLength": 1
            },
            "type": "object"
          },
          "delivery_fee_usd": {
            "description": "Flat delivery + pickup fee added to every quote; omit for none",
            "maximum": 100000,
            "minimum": 0,
            "type": "number"
          },
          "drive_gate_usd": {
            "default": 200,
            "description": "Flat charge per vehicle gate, per rental",
            "maximum": 100000,
            "minimum": 0,
            "type": "number"
          },
          "min_term_days": {
            "default": 28,
            "description": "Shortest rental accepted, in days (28 = one month)",
            "maximum": 3650,
            "minimum": 1,
            "type": "integer"
          },
          "org_id": {
            "format": "uuid",
            "type": "string"
          },
          "panel_length_ft": {
            "default": 12,
            "description": "Panel length used for per-panel add-ons",
            "maximum": 50,
            "minimum": 1,
            "type": "number"
          },
          "products": {
            "additionalProperties": {
              "additionalProperties": false,
              "properties": {
                "description": {
                  "maxLength": 200,
                  "type": "string"
                },
                "rates": {
                  "additionalProperties": false,
                  "description": "dollars per linear foot per period; include only the periods the company offers",
                  "properties": {
                    "day": {
                      "exclusiveMinimum": 0,
                      "maximum": 1000,
                      "type": "number"
                    },
                    "month": {
                      "exclusiveMinimum": 0,
                      "maximum": 1000,
                      "type": "number"
                    },
                    "week": {
                      "exclusiveMinimum": 0,
                      "maximum": 1000,
                      "type": "number"
                    }
                  },
                  "type": "object"
                }
              },
              "required": [
                "rates"
              ],
              "type": "object"
            },
            "description": "product name -> { description?, rates: { day?, week?, month? } }, e.g. \"Panel Fence (Freestanding)\" -> { rates: { week: 1.75, month: 2.5 } }",
            "propertyNames": {
              "minLength": 1
            },
            "type": "object"
          },
          "rental_only": {
            "default": false,
            "description": "true if the company does NOT install fence: turns the fence module off so the widget shows rental only",
            "type": "boolean"
          },
          "setup_claim": {
            "type": "string"
          },
          "setup_fee_unit": {
            "default": "flat",
            "enum": [
              "flat",
              "ft"
            ],
            "type": "string"
          },
          "setup_fee_usd": {
            "description": "Setup + removal fee; omit for none",
            "maximum": 100000,
            "minimum": 0,
            "type": "number"
          },
          "walk_gate_usd": {
            "default": 75,
            "description": "Flat charge per pedestrian gate, per rental",
            "maximum": 100000,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "org_id",
          "setup_claim",
          "products"
        ],
        "type": "object"
      },
      "name": "set_rental_pricing"
    }
  ]
}

What the leaf hashes

{"body":"c3d59e76c5fb312a2d952e397a6f7893797c46860600e11d61ce33530e2da5b3","id":3944794,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1794043250271090,"prev":3471044,"subject":"b7f2ab45-2bb4-4ea1-bc4c-bab6ccf3485d","subject_kind":"endpoint"}

Proof

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

  1. 0x2c663134951947b8e07cc85c0a3724c9d85f2666a2cd3f37d5344731c5e29f74
  2. 0xdcc85d2cf87ee4495c45e080c207bf10f4b7e16e78c67ee3e0b95f5643852072
  3. 0xc761ee2d591dc9b28b6522649851915f8dd45b5f86f1107bddcf2c2bea257916
  4. 0x9b6a32527d764d94abfe3b0b1f85455eccf30cfd69d265207290c6b9daa49fd6
  5. 0x8bcc6f47355240f58a2c2b09b2277ac0cf3a89c5b825b0f26ad1e36b22fe714c
  6. 0x35394fa2a3fb97fe63f4559b0dc957aaf7c3b5b155b2dacd6a75ef1acc2b8735
  7. 0xc1846484f8cc156f97a3ce84d4c06d7728ad59a50951f53017237be6d9beab20
  8. 0x7d111228361a1130fea7d89828fda0d470a66d652621d5e18d193146612da0e9
  9. 0x6561d404ac3036b170d28f8134bfb334cd9902b8506e42ed147a8cb791136471
  10. 0x2b2d958aa0e07475ef20a6410a13dba55a3dc1e6b6901ffa1a2da690b888acae
  11. 0x7cc9d10db330d864bc7111d6c284f612bc21337562e07ec879e3a19b1407435f
  12. 0xa058256da121c94ac990b8759676d1490b455f89d6a39ed49ca20d16887bef02
  13. 0xcf59a82773096d659ea41a3c2f43de43ccff46b76b5f4b673972a823b3b1185b
  14. 0x2d57b894ed326d41f7dedd2958cac00bf549ea2c4764b90563d5d421d7392e94
  15. 0xa3ca92229f3aac0e9b561aaa066ca1907adc3f0b1685587fa30369d41cf66004
  16. 0xf0a56561418cd0342a328707933cc222d8fa725efff7ffd081e0226ee8c46c0b
  17. 0x54292a94f447f1fd33c01b5c99da465043f11022958626a2ea562c457fef697a
  18. 0xff23fa8a9de3f957315ef0dfe7e8d8f6b1a51dae05fef7615c59794e019ff05c
Day root
0x17da9e85e1b138541355d33543ff34e3503cd3a49d37728fb53643e2a0416a2d
Chained
0xed34bd4af17282643de8cb9591c84d0aa1b39e1e9ae9864941e543f5a15718cb
Published
On Arc Testnet, block 71280839: 0xc3f6784179e0ca32236ba89472473e882a81d03fcc5ce27ca58ded2e01e112aa

How to check it · This row as JSON