addrbookFor publishers
← The evidence ledger

Evidence row 300821

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 920b161f-53c6-4a8c-8405-0de0c1e1db28
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
05ea2e5a18cb8a94bbbb28e37918d605e5cf7ab62e6fa4d92232a0995fc829ef
Leaf
0x9353ea1a6b5ad113de50d8f34aa4f631abbc85906c56722ed75f6a5b3913b9a9

What was observed

{
  "count": 12,
  "tools": [
    {
      "description": "MUTATES Memberful data: change WHEN a subscription expires (extend or shorten access). expiresAt is a Unix timestamp in SECONDS (Int). Memberful GraphQL: subscriptionChangeExpirationTime(id, expiresAt).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "expiresAt": {
            "description": "New expiration as a Unix timestamp in SECONDS (Int, required).",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "id": {
            "description": "The subscription id (required).",
            "type": "string"
          }
        },
        "required": [
          "id",
          "expiresAt"
        ],
        "type": "object"
      },
      "name": "memberful_change_subscription_expiration"
    },
    {
      "description": "MUTATES Memberful data: create one or more coupon codes for a discount. Provide the discount id (discountId) and the coupon code strings. Memberful GraphQL: createCoupons(discountId, coupons).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "codes": {
            "description": "Coupon code strings to create (at least one, required).",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "discountId": {
            "description": "The discount id to attach the coupons to.",
            "type": "string"
          }
        },
        "required": [
          "codes"
        ],
        "type": "object"
      },
      "name": "memberful_create_coupons"
    },
    {
      "description": "MUTATES Memberful data: create a new member with an email (and optional full name). Memberful GraphQL: memberCreate(email, fullName).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "email": {
            "description": "The new member's email (required).",
            "type": "string"
          },
          "fullName": {
            "description": "The new member's full name.",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "memberful_create_member"
    },
    {
      "description": "Fetch one Memberful member by id: profile, Stripe customer id, unrestricted-access flag, total spend, metadata, address, and their subscriptions (each with plan). Memberful GraphQL: member(id).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "id": {
            "description": "The member id.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "memberful_get_member"
    },
    {
      "description": "Fetch one subscription by id: status, activated/expires/trial timestamps, plan, member, orders, coupon. Memberful GraphQL: subscription(id).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "id": {
            "description": "The subscription id.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "memberful_get_subscription"
    },
    {
      "description": "MUTATES Memberful data (potentially): escape hatch to run an arbitrary Memberful GraphQL operation — including any mutation — against your account's /api/graphql endpoint with optional variables. Prefer memberful_query for read-only calls.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "query": {
            "description": "A GraphQL query or mutation document.",
            "type": "string"
          },
          "variables": {
            "additionalProperties": {},
            "description": "Variables object for the operation.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "memberful_graphql"
    },
    {
      "description": "List members (Relay connection): each edge has a cursor + node (profile, Stripe customer id, unrestricted-access flag, total spend, and their subscriptions). Paginate with `first` + `after` (pass the last edge's `cursor`); `first` defaults to 50. Set `activeOnly` to return only members with an ACTIVE membership state. For member-state filters beyond active, use memberful_query. Memberful GraphQL: members connection.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "activeOnly": {
            "description": "Only return members with an ACTIVE membership state.",
            "type": "boolean"
          },
          "after": {
            "description": "Cursor for the next page (the `cursor` of the last edge from a prior call).",
            "type": "string"
          },
          "before": {
            "description": "Cursor for the previous page.",
            "type": "string"
          },
          "first": {
            "description": "Max members to return, from the start (page size).",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "last": {
            "description": "Max members to return, from the end.",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "memberful_list_members"
    },
    {
      "description": "List all passes (Memberful dashboard 'Plans' — the access groups a member subscribes to): id, name. Memberful GraphQL: passes.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {},
        "type": "object"
      },
      "name": "memberful_list_passes"
    },
    {
      "description": "List all plans (Memberful dashboard 'Prices'): name, interval, price (cents), for-sale flag, plan group. Memberful GraphQL: plans.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {},
        "type": "object"
      },
      "name": "memberful_list_plans"
    },
    {
      "description": "List subscriptions (Relay connection): each edge has a cursor + node (status, expires/created timestamps, plan, member). Paginate with `first` + `after` (pass the last edge's `cursor`); `first` defaults to 50. NOTE: this uses the top-level `subscriptions` connection, which is sourced from the community SDK — validate against a live account. Memberful GraphQL: subscriptions connection.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "after": {
            "description": "Cursor for the next page (the `cursor` of the last edge from a prior call).",
            "type": "string"
          },
          "before": {
            "description": "Cursor for the previous page.",
            "type": "string"
          },
          "first": {
            "description": "Max subscriptions to return, from the start (page size).",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "last": {
            "description": "Max subscriptions to return, from the end.",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "memberful_list_subscriptions"
    },
    {
      "description": "Escape hatch: run an arbitrary Memberful GraphQL QUERY (read-only) against your account's /api/graphql endpoint with optional variables. Mutations are REJECTED — use the dedicated write tools or memberful_graphql for those. Useful for fields not covered by the curated read tools (e.g. member-state filters beyond active).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "query": {
            "description": "A GraphQL query document (must be a query, not a mutation).",
            "type": "string"
          },
          "variables": {
            "additionalProperties": {},
            "description": "Variables object for the query.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "memberful_query"
    },
    {
      "description": "MUTATES Memberful data: update a member's metadata (a JSON string; max 50 keys, 40-char keys, 500-char values). Only metadata is supported here; for other inline member fields use memberful_graphql. Memberful GraphQL: memberUpdate(id, metadata).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "id": {
            "description": "The member id (required).",
            "type": "string"
          },
          "metadata": {
            "description": "Metadata as a JSON string (max 50 keys, 40-char keys, 500-char values).",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "memberful_update_member"
    }
  ]
}

What the leaf hashes

{"body":"05ea2e5a18cb8a94bbbb28e37918d605e5cf7ab62e6fa4d92232a0995fc829ef","id":300821,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793053668464374,"prev":null,"subject":"920b161f-53c6-4a8c-8405-0de0c1e1db28","subject_kind":"endpoint"}

Proof

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

  1. 0x9353f1bfa22e084e39b92a571f6b42f653de9272cfd1e889ce2a086f10550d53
  2. 0x7d01c9f07d2629d39a37f9be6e0e8f8466d939f87d2948d2b14f2a126e63d8df
  3. 0x5c618259279ad1fcab90c0c65e6d0f1426cb68e889d411d094a3bd1fa8a0be6e
  4. 0xd0bdd3f214be8191739e2970c81351fbcb448e9291b51376d4d71c489071b3a0
  5. 0x023e50f714425bf2fc00549fb687d7e28fec93a8194468bb2c51feeb501aa2b1
  6. 0xa520624c249b0fc1639a4a6971a804db726b40ac2ccb7a259c029a72e23bc0db
  7. 0x74cc1283ac77abe3672d529d45607c696147eb85465d6f36cc99d2fcc3368c84
  8. 0x1cd847d00ecae0984b35e2c5ab01596ecf23b5f777d8e6890ef8f3257f537714
  9. 0xf3ab634627a7a54eacde9afbed8150aecbe38beaacdc19ab2b3baf5b8ef3d60c
  10. 0x578356ff984cd9d8af7804ab292b224cedc3adc7906f706cb4393c7f03af33b7
  11. 0xdcd590752acb338329aec3087ddc69ef4b8fcbe0bb91a9b8e37e17c10a9dfe92
  12. 0x3b55f6d5345bce3e1332e014f19526d25328fb6283d3518837a015c3621c0d1c
  13. 0x45c1d3062bbe98a6b1540c7e2ccf6516eedd6ef07fdfeb1ba77ee6272970447c
  14. 0xf0edabbb9ba0d643e5505d19d07637eb6f6aed0a1c7356af43ae7d84ae9ef0c5
  15. 0xf0bd63870f0bb378fa300bd33563050dcb7b3e02b44eb3ee550c1c534ec4b246
  16. 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON