addrbookFor publishers
← The evidence ledger

Evidence row 997380

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 072c578c-efe2-4f18-b22d-b506aaf9719c
Recorded
Previous row
#780572
Body SHA-256
c5fd52f186d9431a447cef7aa2ac6bb126bbfa44276dd23ac940caf8eec31f34
Leaf
0x3aa3410eb76b03f5e744ba112a7506205876e175ae68fd4d54d384a2f0fd26fd

What was observed

{
  "count": 26,
  "tools": [
    {
      "description": "Add a channel directly (admin key). network \"sandbox\": a built-in test channel, no credentials, never publishes; it enforces the real limits of the network in simulates (bluesky, facebook or instagram; default bluesky). network \"bluesky\": credentials {handle, app_password} (identifier is accepted for handle) (an app password, never the account password). network \"facebook\": {token, page_id}; \"instagram\": {token, ig_user_id}. Credentials are checked with the network before anything is stored (invalid = 400 credentials_invalid, nothing saved), encrypted at rest, and never returned or echoed. No credentials to hand? Use connect_channel (the owner taps a link) or a sandbox test channel.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "credentials": {
            "additionalProperties": false,
            "description": "Not for sandbox. bluesky: handle (or identifier) + app_password; facebook: token + page_id; instagram: token + ig_user_id",
            "properties": {
              "app_password": {
                "pattern": "^[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}$",
                "type": "string"
              },
              "handle": {
                "description": "bluesky handle (you.bsky.social), DID or account email",
                "type": "string"
              },
              "identifier": {
                "description": "alias of handle",
                "type": "string"
              },
              "ig_user_id": {
                "type": "string"
              },
              "page_id": {
                "type": "string"
              },
              "token": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "label": {
            "maxLength": 80,
            "type": "string"
          },
          "network": {
            "enum": [
              "sandbox",
              "bluesky",
              "facebook",
              "instagram"
            ],
            "type": "string"
          },
          "simulates": {
            "description": "sandbox only",
            "enum": [
              "bluesky",
              "facebook",
              "instagram"
            ],
            "type": "string"
          }
        },
        "required": [
          "brand_id",
          "network"
        ],
        "type": "object"
      },
      "name": "add_channel"
    },
    {
      "description": "Cancel a queued post. Undelivered deliveries are refunded to credit.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "cancel_post"
    },
    {
      "description": "Check whether the TXT record is visible; verifies the account when it is.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "verification_id": {
            "type": "string"
          }
        },
        "required": [
          "verification_id"
        ],
        "type": "object"
      },
      "name": "check_dns_verification"
    },
    {
      "description": "Submit the 6-digit code from the verification email.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "pattern": "^[0-9 -]{6,9}$",
            "type": "string"
          },
          "verification_id": {
            "type": "string"
          }
        },
        "required": [
          "verification_id",
          "code"
        ],
        "type": "object"
      },
      "name": "confirm_email_verification"
    },
    {
      "description": "Start a one-tap connect for a brand on an OAuth or app-password network (networks marked coming soon in list_networks are refused). Returns connect_url: give it to the account owner to open once. Then poll get_connect_status.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "label": {
            "maxLength": 80,
            "type": "string"
          },
          "network": {
            "enum": [
              "threads",
              "youtube",
              "linkedin",
              "tiktok",
              "pinterest",
              "bluesky"
            ],
            "type": "string"
          },
          "options": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Network options listed by list_networks (e.g. board_id, organization_id)",
            "type": "object"
          }
        },
        "required": [
          "brand_id",
          "network"
        ],
        "type": "object"
      },
      "name": "connect_channel"
    },
    {
      "description": "Card checkout for a human (coming soon): returns a Stripe-hosted checkout_url for a credit pack (pack_5 $5, pack_20 $20, pack_100 $100; each pack buys exactly its price in credit). Give the link to the person paying; credits arrive only after Stripe confirms. Verified owners, admin key. 503 checkout_not_enabled until switched on.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "description": "Optional. Reuse on retries so the action happens once.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          },
          "pack": {
            "enum": [
              "pack_5",
              "pack_20",
              "pack_100"
            ],
            "type": "string"
          }
        },
        "required": [
          "pack"
        ],
        "type": "object"
      },
      "name": "create_checkout_link"
    },
    {
      "description": "Schedule a post to one or more channels. idempotency_key is required; retries with the same key never double-post or double-charge. Optional max_price_usd refuses a price above your cap. Preview: posts are validated and priced in the sandbox, not published yet.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "body": {
            "maxLength": 5000,
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "channels": {
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
          },
          "idempotency_key": {
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          },
          "max_price_usd": {
            "type": "number"
          },
          "media_urls": {
            "items": {
              "format": "uri",
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          },
          "scheduled_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "idempotency_key",
          "brand_id",
          "body",
          "scheduled_at",
          "channels"
        ],
        "type": "object"
      },
      "name": "create_post"
    },
    {
      "description": "Disconnect a channel: erases its stored credentials and revokes the provider token where the network supports it.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "channel_id": {
            "type": "string"
          }
        },
        "required": [
          "channel_id"
        ],
        "type": "object"
      },
      "name": "disconnect_channel"
    },
    {
      "description": "Posts, deliveries, published, failed and spend over time (UTC), with a per-brand breakdown.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "from": {
            "format": "date",
            "type": "string"
          },
          "granularity": {
            "enum": [
              "day",
              "week",
              "month"
            ],
            "type": "string"
          },
          "to": {
            "format": "date",
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "get_analytics"
    },
    {
      "description": "Status of a connect session: pending, connected (with channel_id), failed or expired.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "connect_id": {
            "type": "string"
          }
        },
        "required": [
          "connect_id"
        ],
        "type": "object"
      },
      "name": "get_connect_status"
    },
    {
      "description": "Onboarding status: verification state, remaining steps and the exact next call. Start here after signup.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "get_onboarding"
    },
    {
      "description": "Surgemesh prices: base per delivery, a hard ceiling (never more than $0.06 per delivery), time-of-day pricing (quieter times cost less, busier times cost more), credit packs. No auth needed.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "get_pricing"
    },
    {
      "description": "Exact price quote (locks at post acceptance; guard with max_price_usd) for N deliveries at scheduled_at (ISO 8601 UTC, e.g. 2026-10-29T15:00:00Z), or for a network mix (networks, e.g. {\"bluesky\": 1, \"facebook\": 2}; adds by_network), with cheaper_times (nearby times and their exact prices) when a nearby time costs less. No auth needed.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "deliveries": {
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "networks": {
            "description": "Optional network mix: an object {network: deliveries} or the REST string \"bluesky:1,facebook:2\". Overrides deliveries.",
            "oneOf": [
              {
                "additionalProperties": {
                  "maximum": 20,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          },
          "scheduled_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "scheduled_at"
        ],
        "type": "object"
      },
      "name": "get_quote"
    },
    {
      "description": "Your referral code, share link and stats (referred signups, qualified, credits earned and pending). Referral rewards are Surgemesh credits only, never cash, and are coming soon; codes can be shared now. Verified owners only.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "get_referral_code"
    },
    {
      "description": "Coming soon (payments are not enabled yet). Payment link to buy a credit pack (pack_5 $5, pack_20 $20, pack_100 $100; each pack buys exactly its price in credit). Rails: mpp_card (card via Stripe Shared Payment Token), mpp_stablecoin (USDC.e on Tempo, USDC on Solana), x402 (USDC on Base); each shows live or coming_soon. POST to paymentLink with your Bearer key, pay the 402 challenge, retry. No payment happens in this tool.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pack": {
            "enum": [
              "pack_5",
              "pack_20",
              "pack_100"
            ],
            "type": "string"
          },
          "rail": {
            "enum": [
              "mpp_card",
              "mpp_stablecoin",
              "x402"
            ],
            "type": "string"
          }
        },
        "required": [
          "pack"
        ],
        "type": "object"
      },
      "name": "get_topup_link"
    },
    {
      "description": "Account: plan, verification, credit, sandbox allowance (monthly_allowance, posts_used_this_month, posts_remaining_this_month, resets_at) and settings.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "get_usage"
    },
    {
      "description": "Status of one verification (pending, verified, expired, failed, denied).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "verification_id": {
            "type": "string"
          }
        },
        "required": [
          "verification_id"
        ],
        "type": "object"
      },
      "name": "get_verification"
    },
    {
      "description": "Brands in this account.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "list_brands"
    },
    {
      "description": "Channels this key can post to (connected social accounts and sandbox test channels). Disconnected channels are hidden unless include_disconnected is true.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "include_disconnected": {
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "list_channels"
    },
    {
      "description": "Every supported network: status (available, connect_pending_review, connect_pending_setup = coming soon), how to connect it, and the limits enforced on every post (text, hashtags, media count, types, sizes), plus the built-in sandbox test channel. No auth needed.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "list_networks"
    },
    {
      "description": "Recent posts for a brand: status (pending, accepted, rejected, cancelled), cancelled, sandbox, price_usd (quoted), charged_usd, per-channel delivery state.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "brand_id": {
            "type": "string"
          }
        },
        "required": [
          "brand_id"
        ],
        "type": "object"
      },
      "name": "list_posts"
    },
    {
      "description": "Email the account owner a one-tap Approve link (24 h, single use). Poll get_verification until verified or denied.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "callback_url": {
            "format": "uri",
            "type": "string"
          },
          "idempotency_key": {
            "description": "Optional. Reuse on retries so the action happens once.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          },
          "note": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "request_owner_approval"
    },
    {
      "description": "Rotate the calling key: returns a new key (shown once) with the same scopes; the old key keeps working for grace_seconds (default 3600, 0 = revoke now).",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "grace_seconds": {
            "maximum": 86400,
            "minimum": 0,
            "type": "integer"
          },
          "idempotency_key": {
            "description": "Optional. Reuse on retries so the action happens once.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "rotate_my_key"
    },
    {
      "description": "Get a TXT record to publish on the account email domain (or a parent domain). Then call check_dns_verification.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "domain": {
            "type": "string"
          },
          "idempotency_key": {
            "description": "Optional. Reuse on retries so the action happens once.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "start_dns_verification"
    },
    {
      "description": "Email a 6-digit code to the account email (expires in 10 minutes, 5 attempts). Then call confirm_email_verification with the code.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "description": "Optional. Reuse on retries so the action happens once.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "start_email_verification"
    },
    {
      "description": "Account settings (admin key). trend_opt_out: true opts this account out of contributing to any aggregated trend statistics Surgemesh may create in future (see Terms); none exist today. get_usage shows the current setting.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "trend_opt_out": {
            "type": "boolean"
          }
        },
        "required": [
          "trend_opt_out"
        ],
        "type": "object"
      },
      "name": "update_account_settings"
    }
  ]
}

What the leaf hashes

{"body":"c5fd52f186d9431a447cef7aa2ac6bb126bbfa44276dd23ac940caf8eec31f34","id":997380,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793251187269931,"prev":780572,"subject":"072c578c-efe2-4f18-b22d-b506aaf9719c","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. 0x3aa2f1c1f038a9a2eaa3aedd57f2ef8e1084853a000297d6eb2a24ac91891df8
  2. 0xb07de284eda434eb138faf04c5fa7f7f8ad43ed7e266356189947401900d40a9
  3. 0xefc80f3af5dd6923475808a234a2bb5a491ec39eaef2ee12a6353ff2846f3602
  4. 0xf5f486cfe17378129515d354726f4d9af819eb432def1cbd84d0877cc1ed7468
  5. 0x95672844ce60410e893c6ce229ad17b9698c94be2ea82120bd43c88a8d73a258
  6. 0x6384ae048bbe5b46897c20b7584a3cc21161957133ab8983f77ae50f7eea15e1
  7. 0xe68bd9b438ac7816e0f396aa02f3f63badb0f1ef13a612c22f735d89d00f7958
  8. 0xd4dc02785ab24b6dfc050c3e1f5d028cc24e110ad14c31219cf62e41c689412f
  9. 0xe558691780a5ddc84a00cc35fc3b5336e9fa62d1199b358c6fbbe5bb4c906c27
  10. 0x21ac90d61197d8794cc08dd64faaa45fb12765e979f1dbedff23691d8b35d2be
  11. 0x40700b82c49ee2106cbdf466b78abca0a99349ee52e7bccca0d09ea8be27ca4c
  12. 0x73b0c34a2502527d8c7609c5da7a71dcb3793d6cae59114605cfdaa89bb04995
  13. 0x4b7bfa7784180e2ff8d66e25e97761344643b8692c744c82acf0f77be5670a82
  14. 0x14b86aca7e0af6917fa29c5b89b8f3eab1f2340a671c3d06e6ac6a34fd3a07ee
  15. 0xa03bd318a195be3bd16f335c7e189443bea4f1f439087a7ac19afec9fa97f9be
  16. 0x1c3764b490d23b94e5ac838c89f8d3850dedb0819196f367da2479c7a88bf2c0
  17. 0xd76435ead496863d8b0bfab3434f54cd11da3c49d104fc4064b9cb3381567bbd
  18. 0xd56e61af23709ed9f460471e3c08400c0142ee83e1fd9057e46350d12edf9c07
Day root
0xc050555c6b023f2aefb6536efb9f0760b92c30a0d06c572b7daf63db259ea17c
Chained
0x4cde8bae2042512e1bec11650628f0293556311cc4ea74d99ffddf02b671a7d6
Published
On Arc Testnet, block 69753317: 0x9e85c340732f416e431b111fae72f7624870125f7f379af2732eb6c2ba8cf6a1

How to check it · This row as JSON