addrbookFor publishers
← The evidence ledger

Evidence row 3471044

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint b7f2ab45-2bb4-4ea1-bc4c-bab6ccf3485d
Recorded
Previous row
#2712555
Body SHA-256
bb28e93ecf9a219f9ae7a720f8f90f04ad00bb204d524e337562be73803cc6d5
Leaf
0x91016721ce024ba14032ae2d3761072f4dc6aa73f1589376d3d89c05b326321b

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; if they choose, they send their details or 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). Prefer this over get_fence_estimate when the homeowner is able to draw. 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":"bb28e93ecf9a219f9ae7a720f8f90f04ad00bb204d524e337562be73803cc6d5","id":3471044,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793919720762248,"prev":2712555,"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 (322504 rows).

  1. 0x9101a12540ae65e29a7b1d1de96a44529c641c8fc2be0019c582035e78602705
  2. 0x9556127d104f2596fd00e994dadb401adbcb85eb5ece426ef720947d884b6323
  3. 0x39ffa355744a11f1f87b105462da04c05dff8e7be503855350b5a8bea6a7995a
  4. 0x1c3cfe7ecd386247edba36a90b225cdb96ce123564ab2876ceae8e8fad793584
  5. 0xcab1927f3ca15ec186934b764c168504ecf61a9c4c99eb4d65aafa03ffe96b11
  6. 0xed2f4911541e7524c767f7aea50801fe02340a41c7dfd77046db09b1b7e7a7a7
  7. 0x82e6213332c37cd06c92ca9a5eaf5dd785e57f9bbceebbdea522a68a396b3b9e
  8. 0x747aa77fba3d8e9874937d32fcf1ebcd83ae3d0d994c9416b076827011bce0a5
  9. 0xd02508c75e1e32dee72835b292a4e8b17e10c1854269b8eccccec834fbf49cde
  10. 0x27f3e268e4068e94d1aaf570a517e7e43bce07f69e559493eeacd24f7790b57c
  11. 0x3c2f257a98bb7faa2300d618717b843b763cce1299ec2e999d72b106e6c283d9
  12. 0x379a60c08c912269633796d1fcc4f09939d957b95a5509d3a0bfe2ccbc5b3943
  13. 0x8e57c2c292ca02611e13317b8fb7abc6cc03ad3281cf92770bf73bbd813f4e16
  14. 0xcd7dd4b73475d9daf8066f64735db723e9ca6d35bbe9f3158528fa2e4ee200de
  15. 0x8d4c57bbc31050ce925844401ecdf17b888da2f6d1ae583a863bdf84d2854302
  16. 0x5c64b7138585466e7e8be72af6f3dc72c511db2c0c1dc5b6e34ad4e9456c2308
  17. 0x7e5b4628b4269525ce0744fb873651b9d7be5748de44b7e6b858af09c7e30bd8
  18. 0xfb4e1f4d701ae273fb0cd57757f659e327608e5561a752b2099b436618493c84
  19. 0xf72fe7c4860b9addb17aac4a00b8afc2f8085836173f10f31697c3d192df119b
Day root
0x9f0215efb0252701dc86d5600ce95f276cccc716759bf112525ae863f698d128
Chained
0xc54ddff800630c6cd9656f99e7d6a61adce99bf1cea37121600598b0a9a720d2
Published
On Arc Testnet, block 70942081: 0x88f612ad94ca63af4e4e9faab9f34b665b41f03828afac1571ad013cc62bba94

How to check it · This row as JSON