addrbookFor publishers
← The evidence ledger

Evidence row 540278

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint e6eccc3e-6e81-4945-91f9-4d21983286f8
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
54e485ab8f620dbb81df80fca7fc7cc72970c6b7ad2bfdd779650a5fff47eb24
Leaf
0xec37da8ef3e500d31d3ce579cb72043def713577f9dcf158b664d0a3469657e8

What was observed

{
  "count": 12,
  "tools": [
    {
      "description": "Search the questions clients actually ask, and get the answer in full. Prefer this over guessing from the service pages: these are written answers, including the ones that talk a caller out of the work. Omit the query to get every question grouped by service.",
      "inputSchema": {
        "properties": {
          "query": {
            "description": "What the caller wants to know, in their words. Matched against the question and the answer. Leave it out to get everything.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "answer_question"
    },
    {
      "description": "Free consultation slots over the next few weeks. Read-only — call this before proposing a time so the suggestion is real rather than invented.",
      "inputSchema": {
        "properties": {
          "days": {
            "description": "How far ahead to look. Default 14, maximum 60.",
            "type": "integer"
          },
          "timezone": {
            "description": "IANA timezone of the person who would attend, e.g. Europe/Berlin. Times are returned in it.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "check_availability"
    },
    {
      "description": "Verified figures — years working, projects completed, how many were built from scratch, response times. Counts are computed rather than stored, so they cannot go stale.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_facts"
    },
    {
      "description": "Everything about one service: what it covers, what it excludes, the projects behind it, and the questions people ask.",
      "inputSchema": {
        "properties": {
          "lang": {
            "type": "string"
          },
          "slug": {
            "description": "Service slug, e.g. svc-erp-crm-integration.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_service"
    },
    {
      "description": "The three ways in — book a call, describe a project in writing, or report something broken now — with what each is for and the response time.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "how_to_get_in_touch"
    },
    {
      "description": "Projects, filterable. Use this to answer \"has he done X\" rather than guessing from the service descriptions.",
      "inputSchema": {
        "properties": {
          "from_scratch": {
            "description": "Only projects built from an empty directory.",
            "type": "boolean"
          },
          "limit": {
            "description": "Default 20.",
            "type": "integer"
          },
          "stack": {
            "description": "A technology or platform, e.g. NetSuite, WooCommerce Subscriptions.",
            "type": "string"
          },
          "still_live": {
            "description": "Only projects still online.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "name": "list_projects"
    },
    {
      "description": "Every service, in full. Use this for \"what does he do\" and anything else that wants the whole picture; search_services is for a symptom and will say so rather than guess when a question is too broad for it.",
      "inputSchema": {
        "properties": {
          "lang": {
            "description": "Two-letter language code. Defaults to English.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_services"
    },
    {
      "description": "Propose a booking. This does NOT book anything and does NOT reserve the time: it emails the person a confirmation link valid for thirty minutes, and only their click puts it in the calendar. The slot stays open to everybody else meanwhile, so tell them to expect that email and to act on it rather than assume the time is theirs.",
      "inputSchema": {
        "properties": {
          "company": {
            "description": "Company or site, if known.",
            "type": "string"
          },
          "email": {
            "description": "Their email. The confirmation goes here, so it must be theirs and correct.",
            "type": "string"
          },
          "message": {
            "description": "What they want to discuss, in their words where possible.",
            "type": "string"
          },
          "name": {
            "description": "Their name.",
            "type": "string"
          },
          "platform": {
            "description": "What they are running, if known.",
            "type": "string"
          },
          "start": {
            "description": "ISO 8601 start time, taken from check_availability rather than guessed.",
            "type": "string"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "start",
          "name",
          "email"
        ],
        "type": "object"
      },
      "name": "request_consultation"
    },
    {
      "description": "Find services by what the visitor is trying to solve. Matches the symptom, the platform, or the name of a system — \"stock not matching the warehouse\", \"NetSuite\", \"failed renewals\".",
      "inputSchema": {
        "properties": {
          "lang": {
            "description": "Two-letter language code. Defaults to English.",
            "type": "string"
          },
          "query": {
            "description": "The problem, platform or system, in plain words.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_services"
    },
    {
      "description": "Describe a project in writing and get a reply within 24 hours, weekends included. For work that is planned rather than broken: a rebuild, a migration, an integration, a second opinion on code somebody else wrote. Use submit_urgent_request instead when a site is down or losing money now. Submits immediately, so ask the person first and send their real email address.",
      "inputSchema": {
        "properties": {
          "company": {
            "description": "Optional.",
            "type": "string"
          },
          "email": {
            "description": "Their email. The reply goes here, so it must be theirs and correct.",
            "type": "string"
          },
          "message": {
            "description": "The shape of the work, in their words. Platform, what exists today, what they want, any deadline or budget band.",
            "type": "string"
          },
          "name": {
            "description": "Their name.",
            "type": "string"
          },
          "site": {
            "description": "Optional. The site in question.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "email",
          "message"
        ],
        "type": "object"
      },
      "name": "submit_project_inquiry"
    },
    {
      "description": "Report a site that is broken now — checkout failing, payments declined, a critical error, a white screen, locked out of wp-admin, an update that broke the site, a hack or a malware warning. Triaged the same day, within eight hours, weekends included, across European, US, Canadian and Australian hours. Submits immediately: there is no confirmation email to wait for, because friction on an emergency is friction in the wrong place. Ask the person before calling this, and send a real phone number — the reply comes by phone or WhatsApp.",
      "inputSchema": {
        "properties": {
          "email": {
            "description": "Optional. If given, they get a written acknowledgement too.",
            "type": "string"
          },
          "message": {
            "description": "What is happening, in their words. Include the exact error text if there is any.",
            "type": "string"
          },
          "name": {
            "description": "Their name.",
            "type": "string"
          },
          "phone": {
            "description": "A number they can actually be reached on, with country code. The reply comes this way.",
            "type": "string"
          },
          "site": {
            "description": "The address of the site that is broken.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "phone",
          "site",
          "message"
        ],
        "type": "object"
      },
      "name": "submit_urgent_request"
    },
    {
      "description": "What is explicitly out of scope, and why. Worth checking before recommending him for something.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "what_is_not_offered"
    }
  ]
}

What the leaf hashes

{"body":"54e485ab8f620dbb81df80fca7fc7cc72970c6b7ad2bfdd779650a5fff47eb24","id":540278,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793129932283106,"prev":null,"subject":"e6eccc3e-6e81-4945-91f9-4d21983286f8","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. 0xec3807dcb3a0e6c8ad9e968c5e05dda2d6a13c228825f2e0c2d50371491e845d
  2. 0x75596f0398497ea41f8102d517f98e1b394be0dd04e38fae9af5ffb1a23e7fd3
  3. 0x4d6a875c6d366d0d7a56bc33d8fb94db6a6b3a42e824ca819b4c38191b9327e8
  4. 0x7d0b68325981a6ba2d731f70d830eee79c85425857a53272cb6b0abd0dae8e11
  5. 0xba5c6504af13f6cea92072f728429df29819966603953b0568d90a64aa569d53
  6. 0x2cae2c29f02d8789c3d3be86f32d1f6825efc3666046349196b286212136b047
  7. 0x61eb2ec9fe550772dcfd0f9973f514cf688e90808e0b6ac0d0a53188733a3534
  8. 0x8211a1c4ee2f5f9515b871338db8a4b4e952bdbd2006552a834c8dc731dabe86
  9. 0x7290577451f3ce65076d230225bacd72eb5b241456b382f951c5086bb8ecb3fa
  10. 0xb34ca794abce9822a51d107ccd0ac55abca72ec6b1929084fa86937fa74aaeff
  11. 0x4b58e29710bea760065b738e250d90dbefa1ab9ab46b03166a67e8b11ec5eec6
  12. 0x1bd815b8c338cfc2bcf769f9c67988a5890577c27b5e900948b5339a99e158a8
  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