addrbookFor publishers
← The evidence ledger

Evidence row 2134148

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 59f0cffa-3fda-4d6f-b518-1520fc9f3a28
Recorded
Previous row
#1481281
Body SHA-256
644515b733107b1bbd15dbc24355ff73141aa7f76023a0bd20383181344c4f76
Leaf
0x8bb0cd94c6b836124539ac4ab23b87535b60ac693d440dbd4b76348a01c2121e

What was observed

{
  "count": 9,
  "tools": [
    {
      "description": "Two providers side by side, as markdown: taglines, pricing, API availability, tags — the researched compare facts, honest about unknowns.",
      "inputSchema": {
        "properties": {
          "a": {
            "description": "First listing slug.",
            "type": "string"
          },
          "b": {
            "description": "Second listing slug.",
            "type": "string"
          }
        },
        "required": [
          "a",
          "b"
        ],
        "type": "object"
      },
      "name": "compare_listings"
    },
    {
      "description": "The Published providers in one category, in the order its category page prints (ranked by what we can confirm: a public price, an API and docs, independent sources, stated limits), as a markdown answer sheet. Payment never moves a row.",
      "inputSchema": {
        "properties": {
          "category": {
            "description": "The category slug (from list_categories).",
            "type": "string"
          }
        },
        "required": [
          "category"
        ],
        "type": "object"
      },
      "name": "get_best_of"
    },
    {
      "description": "One provider in full, as answer-first markdown: the summary, then every question on the sheet with its answer, the vendor's own words for it and the URL that proves it. Identical to /{slug}.md and to the HTML page.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "The listing slug (from search_listings or the URL).",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_listing"
    },
    {
      "description": "SOC 2 Compared's categories with their live listing counts, 0 for one with none yet.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_categories"
    },
    {
      "description": "What the SOC 2 Compared owner dashboard shows about the listings an account owns: each one's status (`status.kind`: review with the expected date, accepted with `liveOn` and `paid` ('express' | 'featured' | null: the paid way that releases it, Featured including VIP listing), live, refused with the reason, or archived), the listing as it shows, 30 days of real numbers with the 30 before, where AI answers named the product or cited its page, and what it can buy here at this site's prices. Only for the account itself: send its session Cookie header, or its agent key with \"Read your listings\" as Authorization: Bearer. Same answer as GET https://soc2compared.com/api/owner/listings. Read-only: corrections go through the dashboard's request form.",
      "inputSchema": {
        "properties": {
          "slug": {
            "description": "Optional: one listing, by its slug. Without it, every listing the account owns.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "my_listings"
    },
    {
      "description": "Full-text search over SOC 2 Compared's Published providers. Returns compact records (name, slug, tagline, url). Fetch depth with get_listing.",
      "inputSchema": {
        "properties": {
          "limit": {
            "description": "Max results (default 10, cap 25).",
            "type": "number"
          },
          "query": {
            "description": "What to search for.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_listings"
    },
    {
      "description": "Send a buyer-intent enquiry (lead) to a provider or a whole category on SOC 2 Compared. Keyless. Requires consent:true, a real name, a permanent (non-disposable) email, a message of at least 20 chars, and a target (listingSlug OR categorySlug). Returns { ok, delivered }. Idempotent by (email, target) within 7 days. Nothing here changes a listing's rank, tier or copy.",
      "inputSchema": {
        "properties": {
          "categorySlug": {
            "description": "Target category slug (this OR listingSlug).",
            "type": "string"
          },
          "company": {
            "description": "Optional company name.",
            "type": "string"
          },
          "consent": {
            "description": "Must be true — you agree your details go to the provider(s).",
            "type": "boolean"
          },
          "email": {
            "description": "A permanent contact email (non-disposable).",
            "type": "string"
          },
          "listingSlug": {
            "description": "Target listing slug (this OR categorySlug).",
            "type": "string"
          },
          "message": {
            "description": "The enquiry — real demand, at least 20 chars.",
            "type": "string"
          },
          "name": {
            "description": "Your name.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "email",
          "message",
          "consent"
        ],
        "type": "object"
      },
      "name": "send_lead"
    },
    {
      "description": "Submit a provider to SOC 2 Compared: the url alone; we write its name and description from its own pages. Requires an existing signed-in account with verified email; send its session Cookie header on the MCP request, or an agent key the account made at https://soc2compared.com/dashboard/agents as Authorization: Bearer. Identity and email come only from that session or key. Sign in or explicitly create an account at https://soc2compared.com/login?next=%2Fsubmit and verify its email before retrying. This tool creates no account and sends no verification email. Returns {httpStatus:201, id, slug, status:'Draft'}; research + the quality gate decide publication. Your own (url, session email) replay within 24h returns httpStatus:200. The fit check starts at once and usually answers within a minute: poll GET https://soc2compared.com/api/submissions/{id} and wait the Retry-After seconds it sends while fit is \"checking\". fit then reads \"accepted\" (it goes live, and the account is mailed), \"rejected\" (mailed with the reason) or \"undecided\" (a person looks within 2 days). No session: {httpStatus:401, error:'sign_in_required', message, loginUrl}. Unverified session: {httpStatus:403, error:'email_unverified', message, email, remediation}. The owner must prove the site before anything is listed: the account's address, or an address it proved with a code, must be on the submitted website's domain. Otherwise the answer is the pending state {httpStatus:403, error:'domain_unverified', status:'awaiting_owner_proof', listed:false, message, domain, proveWith, ownerUrl, ownerStep, remediation}: nothing is listed or queued. proveWith names who can receive the 6-digit code (any address at the domain; for a GitHub or other shared-host project, its listed addresses or a one-line file). Submitting for someone else? Give the owner ownerUrl (the submit page with the site filled in): they enter the code there and the listing goes in once proven. With a mailbox at the domain yourself: POST /api/domain-proof/start {url, email}, POST /api/domain-proof/verify {proofId, code}, then submit again. Personal mailboxes (gmail, outlook…) never prove a domain. No refusal creates a listing. Validation returns 400; duplicate/claim responses return 409. Read tools remain keyless.",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "The website being submitted (https).",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "submit_listing"
    },
    {
      "description": "Subscribe an email to the SOC 2 Compared digest of new and freshly re-verified providers. Provide an email; returns { ok }. The address is on the list at once and gets one welcome mail. Every mail carries a one-click unsubscribe.",
      "inputSchema": {
        "properties": {
          "email": {
            "description": "The email to subscribe.",
            "type": "string"
          },
          "source": {
            "description": "Optional: where the subscribe came from.",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "subscribe_newsletter"
    }
  ]
}

What the leaf hashes

{"body":"644515b733107b1bbd15dbc24355ff73141aa7f76023a0bd20383181344c4f76","id":2134148,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793622881403639,"prev":1481281,"subject":"59f0cffa-3fda-4d6f-b518-1520fc9f3a28","subject_kind":"endpoint"}

Proof

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

  1. 0x8bb0932172e34b42f02faf7c77c2db2d22660fb26e0e7552a2bfb2fbe6359bcf
  2. 0xa23b6f9e8bf51b481f44ce8d3394bdd5e236237fe9df56b4c90462b827d0d482
  3. 0xf88c2017a7ac7245b747448b6b5138687219d6ed3f12d1f59d8489762605f8ef
  4. 0x75d2ca7513509210cc1ba546b89cf9cab5fa1f4ef2e69103bd5d52b5dec4cb6a
  5. 0xe6205abac722d7544e8b768b84f6bb8a714e3a1677d17c1f2d71ab3ff84b2705
  6. 0x8e9cebfb44f5392fdf7c04ad75002d6d91a77eb14b05b0c4f8c6e0ab8311b13d
  7. 0xcc27ac2b7c1e978e25f146f04b900e0bb065f989543cd479272cc0cbb1127151
  8. 0xc61bc103f3175885e9bbc0461af99d8691822218d52c570229e9e7af332b0e8e
  9. 0x79191c8f697d188bd56d4b78b2f8397d491ddaa5458c6d6401ec12573621c337
  10. 0xaf2aaf227f831c8a842987a3bfe406b3d21044789353b00a712ec77ecd148294
  11. 0xdedcc59313093f94e354f9f5eae92504749db7bc2b630e7f57de8dcba9fb5081
  12. 0xeb929035f29f206d033b8132e6680865043bb8a18b5a9d2ddcc88589b82478a5
  13. 0x749638e83897749b17c0b5a0587a19541d9c0e6d95590918e98f786991029466
  14. 0xf38c9617f655dc8f7c8fa11461cb30752d581a6bbb15051130839452c80c4270
  15. 0x510fa2c647d18bb802da12cf41e17d136163e6624e69ed77e15235c4284b69c7
  16. 0x5e23ec5954c11a4530aab8c635a72b12bcfeb6fcb03c6cb1a990cc1743424543
  17. 0x1805ef693fbdb2c23fcb61616f830408ca89bec1dc5b68ee47a770ffc0b9760a
  18. 0x4d205063c881c48edbbb37762a8d3bbb7444d4c42daa882f663a231893d25c35
  19. 0x365b161a4b68d750dcc4b3ecce1154a2163c87b08762079428e68f0ebb6a754e
Day root
0x78fecaabbe319e56f5c4b80fc02e2052e198ad24781da8832a475ff65f2002d1
Chained
0xdc35957db5d1371ca382b9152878ffece28ec7c5cb4f98fd71ddb367f8b999b2
Published
On Arc Testnet, block 70432815: 0x56b814612eb2e3e544153df3e91e1f7199106d1e430c7d8c6b653feeb9ebe9af

How to check it · This row as JSON