addrbookFor publishers
← The evidence ledger

Evidence row 567060

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 7e6ad4f9-9270-4247-b9ce-df641432302f
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
78505d8255cea1b09dd61a61bb9b5e0ca3435971cf66829910da0f20c9780d7a
Leaf
0xea755720758a2984b87c21047debdedf0078e1a6ff6f8aa362c8867375c611a8

What was observed

{
  "count": 11,
  "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": "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": "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":"78505d8255cea1b09dd61a61bb9b5e0ca3435971cf66829910da0f20c9780d7a","id":567060,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138594641485,"prev":null,"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 (273461 rows).

  1. 0xea7519300e3b585a9ed7e8fadb795329b8cbe63281a5a6654c61f0cee423b08c
  2. 0x4fcfc4a7b45bd2866e64fe3ab350bdd4308a9a4b99d38ee55e79017558eb9f09
  3. 0x61b525bc607f3f25b898d0ebade6d7ecaf0286bb70c5ec9df0b442b98773500b
  4. 0x776664d97614fa2fc9e7a971d45d4e3330af665af24b06058636fcb305647744
  5. 0xa214e168e2ada0e98b6c433cd0cea8eeecf362e0b154b0500c1f2e49dff48d3f
  6. 0x85ee42e5432cc6e79e049d1f8c720bb1ffe45a94c4e903eaff9cfc303f18c250
  7. 0xfa13cd2424e95ec124e96138fb846fac99c1437bca976927a516520709bbb761
  8. 0x716ecab32e5cf2874f374ae714de97349724f78d00fe5acfc2f41636535046ef
  9. 0x5668b5deb970e2c678e613fa60d238e161a87bb10a7d0d6e35c6747081d9edbb
  10. 0x694f3f33268c5bc6380613bb5b291820cb4ce07a82164429442bc75b24ebcc5e
  11. 0x8cc7cdbb404948d6c8277e8104fbf6f6ef7bc67273321adedcf016270a69a84e
  12. 0x71d164c799d87b4dc25af672a70aaf73791d8dbb1786a5d4eb3ead269cb7c28a
  13. 0x89602081fbcc80aef8908f5df765767a1a41cc8b089111259ea78e6583a8bc4b
  14. 0x41f9f462759cb539183e979fb3eb967d94755cf039c44a64a9a3c4ad97523cfd
  15. 0x56f7109d4cde42492651beb1237c13cdcbf95e6fee2b2482391a2388e04c4629
  16. 0x8745bd887f5ce9f7a49558fd2b04cdcd97a05ea9f8a23f62d0e80cb13d328b0f
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON