addrbookFor publishers
← The evidence ledger

Evidence row 1018437

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 7e6ad4f9-9270-4247-b9ce-df641432302f
Recorded
Previous row
#567060
Body SHA-256
8e538a8cd4a14565e88963d6c29ff8135c28eb87ce9258ad2fcf2f529d8705e3
Leaf
0x63809e8cb28371e26ae1d1a5ba7d08a8a5188455fc321e240b99ac77c86eed04

What was observed

{
  "count": 13,
  "tools": [
    {
      "description": "Ask in plain words ('licensed electrician near 92101 who does EV chargers') and get a short answer built only from listings, plus the businesses it rests on, in the published order. Same rules as find_businesses: no ranking or recommendation language, coverage stated honestly.",
      "inputSchema": {
        "properties": {
          "question": {
            "description": "The person's question, in their words.",
            "type": "string"
          },
          "where": {
            "description": "A place, if it is not in the question.",
            "type": "string"
          }
        },
        "required": [
          "question"
        ],
        "type": "object"
      },
      "name": "ask"
    },
    {
      "description": "Books an estimate visit with ONE contractor the person chose whose listing shows luma.books_online. The contractor calls the person to confirm the time. Call it once without consent to get consent_text, show it, and call again with consent=true only if they agree.",
      "inputSchema": {
        "properties": {
          "address": {
            "description": "The address of the job, as the person gave it for this booking.",
            "type": "string"
          },
          "consent": {
            "description": "True only if the person read and agreed to consent_text.",
            "type": "boolean"
          },
          "job": {
            "description": "What the job is, in the person's words.",
            "type": "string"
          },
          "name": {
            "description": "The person's name.",
            "type": "string"
          },
          "phone": {
            "description": "A 10-digit phone number the contractor calls to confirm.",
            "type": "string"
          },
          "preferred_times": {
            "description": "Optional: days and times that suit them.",
            "type": "string"
          },
          "site": {
            "description": "Or the Luma site from the listing's luma.site.",
            "type": "string"
          },
          "slug": {
            "description": "The listing slug from find_businesses (a listing with luma.books_online).",
            "type": "string"
          }
        },
        "required": [
          "name",
          "phone",
          "address",
          "job",
          "consent"
        ],
        "type": "object"
      },
      "name": "book_estimate"
    },
    {
      "description": "Search the DouxProcess Directory for US businesses by what the person needs (roofer, electrician, insurance agency...) and where (a city and state, a ZIP, or a state). Returns the matches in the published ranking order with license, how it was checked, phone, website and listing page. covered=false with a note means the directory does not hold that kind of business or place yet: say so, do not guess. Nobody pays for placement; listings affiliated with DouxProcess's owner carry a disclosure, pass it on. Do not rank, rate or recommend; show the options and let the person choose.",
      "inputSchema": {
        "properties": {
          "category": {
            "description": "A category id from list_categories, e.g. roofer.",
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "cursor": {
            "description": "next_cursor from the previous call.",
            "type": "string"
          },
          "limit": {
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          },
          "page": {
            "description": "Older clients: a page number. Prefer cursor.",
            "minimum": 0,
            "type": "integer"
          },
          "postal_code": {
            "description": "A 5-digit ZIP.",
            "type": "string"
          },
          "query": {
            "description": "What the person needs, in their words.",
            "type": "string"
          },
          "radius_miles": {
            "maximum": 250,
            "minimum": 1,
            "type": "number"
          },
          "state": {
            "description": "Two-letter US state.",
            "type": "string"
          },
          "where": {
            "description": "A place: 'Pasadena, CA', a 5-digit ZIP, or a state. Never the person's own address or GPS.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "find_businesses"
    },
    {
      "description": "One business's details: licenses with their basis (issuer_file = matched against the issuer's own published file on checked_at; stated = given by the business, not yet matched, send the person to source_url), contact, whether it takes requests, and its own agent addresses (MCP and A2A).",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "The slug from find_businesses.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_business"
    },
    {
      "description": "A California contractor license's record in the CSLB's public file, and every change since the directory began reading it daily: status and suspensions, workers' comp type and dates, bond amounts and dates, classes, expiry. Give a CSLB license number or a listing link. It never includes an insurer, surety or person's name, or a policy, bond or case number. Report what it says; do not judge the business. Not for decisions about a person's credit, employment, insurance or housing.",
      "inputSchema": {
        "properties": {
          "license": {
            "description": "A CSLB license number (e.g. 1000002), or a listing link or slug from find_businesses.",
            "type": "string"
          }
        },
        "required": [
          "license"
        ],
        "type": "object"
      },
      "name": "license_history"
    },
    {
      "description": "Every category with its id, NAICS 2022 code, plain name, Google Business Profile names, how many listings it has, and whether requests for it are sent (health is listed but never routed).",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_categories"
    },
    {
      "description": "Sends the person's request to the ONE business they chose, so it can reply to them. Only claimed listings take requests, and health businesses never do. Before calling, show the person this sentence and get their agreement: 'I agree that DouxProcess sends my name, my contact details and this request to <business>, and only to them, so they can reply to me about it.' Set consent=true only if they agreed. Clients that support forms get a consent form instead. Never include health details, card numbers, ID numbers or passwords.",
      "inputSchema": {
        "properties": {
          "consent": {
            "description": "True only if the person read and agreed to the consent sentence.",
            "type": "boolean"
          },
          "details": {
            "description": "What they need, in their words. No health details, card numbers, ID numbers or passwords.",
            "type": "string"
          },
          "email": {
            "description": "An email address the business can reply to.",
            "type": "string"
          },
          "name": {
            "description": "The person's name.",
            "type": "string"
          },
          "phone": {
            "description": "Or a phone number the business can reply to.",
            "type": "string"
          },
          "slug": {
            "description": "The slug from find_businesses or get_business.",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "details",
          "consent"
        ],
        "type": "object"
      },
      "name": "request_contact"
    },
    {
      "description": "Sends the person's request to up to 3 licensed contractors near them who use Luma (the contractor app DouxProcess Inc. builds), Luma Pro members first, and returns the other matches with their own contact details. Call it once without consent to get consent_text and the disclosure, show both to the person, and call again with consent=true only if they agree. Never include card numbers, ID numbers or passwords.",
      "inputSchema": {
        "properties": {
          "address": {
            "description": "Optional: the job address, only if the person gave it for this request.",
            "type": "string"
          },
          "category": {
            "description": "A category id from list_categories, e.g. roofer.",
            "type": "string"
          },
          "consent": {
            "description": "True only if the person read and agreed to consent_text.",
            "type": "boolean"
          },
          "details": {
            "description": "What they need, in their words. No card numbers, ID numbers or passwords.",
            "type": "string"
          },
          "email": {
            "description": "Or an email address.",
            "type": "string"
          },
          "name": {
            "description": "The person's name.",
            "type": "string"
          },
          "phone": {
            "description": "A phone number the businesses can reply to.",
            "type": "string"
          },
          "preferred_times": {
            "description": "Optional: when they are free.",
            "type": "string"
          },
          "where": {
            "description": "A city and state ('Pasadena, CA') or a 5-digit ZIP. Never the person's own street address.",
            "type": "string"
          }
        },
        "required": [
          "category",
          "where",
          "name",
          "details",
          "consent"
        ],
        "type": "object"
      },
      "name": "request_quotes"
    },
    {
      "description": "Open the request form for one business the person chose (ChatGPT local services Get Quote). The form shows the consent sentence and sends only when the person ticks it. For a business that does not take requests it shows the business's own phone and website.",
      "inputSchema": {
        "properties": {
          "business_id": {
            "description": "The business id (its slug) from find_businesses or the business feed.",
            "type": "string"
          }
        },
        "required": [
          "business_id"
        ],
        "type": "object"
      },
      "name": "request_service"
    },
    {
      "description": "Is this business licensed, bonded and insured today, from the government record. Give a listing slug, a license number, or a business name with its two-letter state. Returns licensed, bonded and insured as true, false or null (the record does not say), each with its source, checked_at day and record_url, the board's open gaps, and the listing URL. For CSLB contractors insured means workers' comp. Report the facts and link the record; do not judge the business. Not for decisions about a person's credit, employment, insurance or housing.",
      "inputSchema": {
        "properties": {
          "issuer": {
            "description": "The issuer code with a license number, e.g. CA-CSLB.",
            "type": "string"
          },
          "license": {
            "description": "A license number, e.g. CSLB 1050000.",
            "type": "string"
          },
          "name": {
            "description": "The business name (with state).",
            "type": "string"
          },
          "slug": {
            "description": "A listing slug or link from find_businesses.",
            "type": "string"
          },
          "state": {
            "description": "Two-letter US state, required with name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "verify_business"
    },
    {
      "description": "Look up a license by number, business name or phone and say which listings carry it and how it was checked. When nothing matches, tell the person to check the issuer's own lookup; never say a license is valid without a match.",
      "inputSchema": {
        "properties": {
          "issuer": {
            "description": "The issuer code, e.g. CA-CSLB.",
            "type": "string"
          },
          "name": {
            "description": "The business name.",
            "type": "string"
          },
          "number": {
            "description": "The license number.",
            "type": "string"
          },
          "phone": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "verify_license"
    },
    {
      "description": "Emails the person a link to watch up to 25 listings free: once they open it, they get one short email on any day the board's record changes (status, workers' comp, bonds, classes, expiry). CSLB contractors only. Use the person's own email, only when they asked. Before calling, show them this and get their yes: 'I agree that DouxProcess Directory may email <email> about changes to these licenses (status, workers' comp, bonds, classes, expiry). Nothing is watched until I open the link, and I can stop any time.' Set consent=true only if they agreed; clients with forms get a consent form.",
      "inputSchema": {
        "properties": {
          "consent": {
            "description": "True only if the person read and agreed to the consent sentence.",
            "type": "boolean"
          },
          "email": {
            "description": "The person's own email address.",
            "type": "string"
          },
          "slugs": {
            "description": "Listing slugs (or CSLB license numbers), up to 25.",
            "items": {
              "type": "string"
            },
            "maxItems": 25,
            "type": "array"
          }
        },
        "required": [
          "email",
          "slugs",
          "consent"
        ],
        "type": "object"
      },
      "name": "watch_business"
    },
    {
      "description": "Emails the person a link to watch these CSLB licenses: once they open it, they get one short email on any day something changes on one (status, workers' comp, bonds, classes, expiry). Nothing is watched until the person opens the link. Use the person's own email, only when they asked. Free watches 25 licenses, Pro up to 500 for $99 a year, Unlimited every license they add for $999 a year. Not for decisions about a person's credit, employment, insurance or housing.",
      "inputSchema": {
        "properties": {
          "email": {
            "description": "The person's own email address.",
            "type": "string"
          },
          "licenses": {
            "description": "CSLB license numbers or listing links, up to 500.",
            "items": {
              "type": "string"
            },
            "maxItems": 500,
            "type": "array"
          }
        },
        "required": [
          "email",
          "licenses"
        ],
        "type": "object"
      },
      "name": "watch_licenses"
    }
  ]
}

What the leaf hashes

{"body":"8e538a8cd4a14565e88963d6c29ff8135c28eb87ce9258ad2fcf2f529d8705e3","id":1018437,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793275149405959,"prev":567060,"subject":"7e6ad4f9-9270-4247-b9ce-df641432302f","subject_kind":"endpoint"}

Proof

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

  1. 0x6380a65a2eb025c985f69d29e646ab4c81bc6661ae2fa4ac6b7bb48a7c27d939
  2. 0x0dc42208c172cdfa2d5724c7d14b5311fcb62b01809cf9c8d612254b55748e4f
  3. 0xd1d8e72416b3393351ac5a3d2d49e8a1b5b282d98ad3bbaf76fac7006a9e5905
  4. 0x4406e10d56ba3199d7e4e2f02ab8ff440337f7e8c8510821bdc7438895a20940
  5. 0x5ed5bc530ffc0a213928b809b35794f17126274086b9565fd7083015809ae010
  6. 0xd00ef0ec4291116af3ca4aadd47531e52ff4e1472d212d115986d689b23ade25
  7. 0xc72c23aaac2b83f25f1e7b5d17f3790db4dc64053f00f2b45bb4ac5492240639
  8. 0xfdb6bed2ed2cc978cd42ea0f09eea5dcbaa794f2ba4bdb6f0151186a3a2c4575
  9. 0x4467f5fbbd8a5cd78c36656c9d8ecdb0678c03b178542621e847ac6a18ebe767
  10. 0x1f38d691bc8e51cdd8470cb228fea86ca75bd6baba850533dbf8fa3e0c8896b7
  11. 0x70cb8872c98df99ddb5efa4b778e4fd4bfec16e27142433d014f4c86db438e2f
  12. 0xf6b9e161b3bbf8a1173b13171e7b9259be463aa97fc39f6b7cf139a194a81992
  13. 0x051a19447aea0e5be5c495d9b33b6c644b070e152f158f9f28a530e66e539619
  14. 0xa523bd4cbb3e762fe27dc53a6d42747aef6e5dea4f602786fa6968d56a8842bf
  15. 0x5c72917224317e5d0d7a0d4ada19337530fcd8b513d6fc46866876f7844efe17
  16. 0x976395aaca1b771b7e37710dee4157412909d2398c44e306a2e1e3fe83b984fd
  17. 0x91f12a2db1e2c1be07cbe4de3981a37a33051a36d3c3eee5a260804add6d1d75
  18. 0xd56e61af23709ed9f460471e3c08400c0142ee83e1fd9057e46350d12edf9c07
Day root
0xc050555c6b023f2aefb6536efb9f0760b92c30a0d06c572b7daf63db259ea17c
Chained
0x4cde8bae2042512e1bec11650628f0293556311cc4ea74d99ffddf02b671a7d6
Published
On Arc Testnet, block 69753317: 0x9e85c340732f416e431b111fae72f7624870125f7f379af2732eb6c2ba8cf6a1

How to check it · This row as JSON