← 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).
- 0x9353f1bfa22e084e39b92a571f6b42f653de9272cfd1e889ce2a086f10550d53
- 0x7d01c9f07d2629d39a37f9be6e0e8f8466d939f87d2948d2b14f2a126e63d8df
- 0x5c618259279ad1fcab90c0c65e6d0f1426cb68e889d411d094a3bd1fa8a0be6e
- 0xd0bdd3f214be8191739e2970c81351fbcb448e9291b51376d4d71c489071b3a0
- 0x023e50f714425bf2fc00549fb687d7e28fec93a8194468bb2c51feeb501aa2b1
- 0xa520624c249b0fc1639a4a6971a804db726b40ac2ccb7a259c029a72e23bc0db
- 0x74cc1283ac77abe3672d529d45607c696147eb85465d6f36cc99d2fcc3368c84
- 0x1cd847d00ecae0984b35e2c5ab01596ecf23b5f777d8e6890ef8f3257f537714
- 0xf3ab634627a7a54eacde9afbed8150aecbe38beaacdc19ab2b3baf5b8ef3d60c
- 0x578356ff984cd9d8af7804ab292b224cedc3adc7906f706cb4393c7f03af33b7
- 0xdcd590752acb338329aec3087ddc69ef4b8fcbe0bb91a9b8e37e17c10a9dfe92
- 0x3b55f6d5345bce3e1332e014f19526d25328fb6283d3518837a015c3621c0d1c
- 0x45c1d3062bbe98a6b1540c7e2ccf6516eedd6ef07fdfeb1ba77ee6272970447c
- 0xf0edabbb9ba0d643e5505d19d07637eb6f6aed0a1c7356af43ae7d84ae9ef0c5
- 0xf0bd63870f0bb378fa300bd33563050dcb7b3e02b44eb3ee550c1c534ec4b246
- 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
- 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
- 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae