addrbookFor publishers
← The evidence ledger

Evidence row 1474794

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 59f0cffa-3fda-4d6f-b518-1520fc9f3a28
Recorded
Previous row
#737411
Body SHA-256
05adfadb396b00e3acb345a56d71c3b218241ef6d36f8ed3fb31889d1a2035af
Leaf
0xc96fc5d4368b3c95321a1ed70c426e7c6fd65f00537e78407ff4aa4df003c07d

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 Priority), 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}. Company gate: the account's address, or an address it proved with a code, must be on the submitted website's domain; otherwise {httpStatus:403, error:'domain_unverified', message, domain, remediation, ownerUrl, skip} — POST /api/domain-proof/start {url, email} mails a 6-digit code to an address at that domain, POST /api/domain-proof/verify {proofId, code} redeems it, then submit again. Submitting for someone with no mailbox of your own at the domain? Give the owner ownerUrl (the submit page with the site filled in): they prove it there with a code, or skip the proof as skip says. 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":"05adfadb396b00e3acb345a56d71c3b218241ef6d36f8ed3fb31889d1a2035af","id":1474794,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793409874547151,"prev":737411,"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 (246033 rows).

  1. 0xc96ff2a947a22deed2a46b08f776465145b20b83485d3af4aebdb84e5fc19f8f
  2. 0xc31d86815a53065da4be1cca0e19ae8e64ec15c2707784064eb64f6862d00bd8
  3. 0x6a79c8440a7b55b040b76e0b870e62ea934849af6e16c2b227b07e881574282e
  4. 0xef352def274f6d89b1093e0eab2e9da58b6d1c379c34ed37cbfbd14430b9c651
  5. 0x1ab5e509d842b6e399b89a0d40cb9d47407ac517bb4945d7940a9359042c5000
  6. 0x8f4d6535c20869b7c5e510b1f86974c51aefff3974fe5c0ddf5f6a57501e7955
  7. 0x8426a22bce323a8f1432f5638811d0a7be5b3bf498d7f7d0df4347ce40a34b4c
  8. 0x1c85f4060cc5b63aae0c503f1fc1873488cd6e3d575c50207728c2850f4b300c
  9. 0x9b7ddc7ae053411db57008019831ae7187a52e3e38deb423c9744ec1927fb9f5
  10. 0x17d2a4dce03f334cbf710888985af45cfabb0f9e280f9fa0d311a8e2ba5d28cf
  11. 0xb17a403877dcdc345ee81cf1442485e3669e95c38222898256ba5deb61606e50
  12. 0x9848da3b6eec1297925b29887f5848a0e34a120f4f695768d01669f03318e24c
  13. 0xe0d6e3ecef4b18411e0b397b43270df35fb812a3310b2887db923fb26c7ba65e
  14. 0x9b9c034ab0236a2e232e78d82d298819198dd0da36f638cae5260bb378f14798
  15. 0xdd44ee37f508e0be8213cd488d246afd8e10e6e73374cc6074077c37270cda1e
  16. 0x2e1cd25ce4079da9bfa6219d7ffec992149add4cd7d5c5b2cfee9908c1c8a5dd
  17. 0x50003b3c3045b653f8be4232e95e80582cf5c54c14c509ba0a9a197b9e5005cb
  18. 0x0504a25438f3c7932125463198ca74c5064f23f71a5c92763b3fc96a98cc8b57
Day root
0x24463725d1c0d9894bd6123691d532547aaa79f0762c0e45aa6a68acf1fd71ab
Chained
0x7d4824ff313dee7252a46f9d5c37b452851deb6c9f24a40c2f74ee0e53c82980
Published
On Arc Testnet, block 70093156: 0xedb7b832f4ebf6781b5ecd2ed241c435b862f4d3761541fa31adc1831b8c44a0

How to check it · This row as JSON