addrbookFor publishers
← The evidence ledger

Evidence row 300013

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 14fe11f8-298e-418f-81c2-3f4eba575f74
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
161c29e7f621094d71580f8ded6d8d562adf90c10280a4c7f9e2b9f1ba57c064
Leaf
0xa78a332bc669662b7db532de67cc245142619cea348198ebee2d25fcc30821f3

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "WRITE: assign/attach a pricing product plan to a customer — this changes what the customer is billed. API: POST /payments/pricing/amberflo/customer-pricing.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId to assign the plan to.",
            "type": "string"
          },
          "end_time_in_seconds": {
            "description": "When the plan ends, unix epoch seconds.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "product_id": {
            "description": "Product id the plan belongs to.",
            "type": "string"
          },
          "product_plan_id": {
            "description": "The productPlanId of the plan to assign.",
            "type": "string"
          },
          "start_time_in_seconds": {
            "description": "When the plan takes effect, unix epoch seconds.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          }
        },
        "required": [
          "customer_id",
          "product_plan_id"
        ],
        "type": "object"
      },
      "name": "amberflo_assign_customer_plan"
    },
    {
      "description": "WRITE: create/register a new customer in Amberflo (id + name required; optional email, enabled flag, and traits). Optionally auto-create the customer in Stripe. API: POST /customers/.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "create_in_stripe": {
            "description": "When true, also auto-create this customer in Stripe (adds ?autoCreateCustomerInStripe=true).",
            "type": "boolean"
          },
          "customer_email": {
            "description": "Customer email address.",
            "type": "string"
          },
          "customer_id": {
            "description": "Unique customerId to assign (your identifier for the customer).",
            "type": "string"
          },
          "customer_name": {
            "description": "Human-readable customer name.",
            "type": "string"
          },
          "enabled": {
            "description": "Whether the customer is enabled.",
            "type": "boolean"
          },
          "traits": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Arbitrary string traits (key/value metadata).",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "customer_id",
          "customer_name"
        ],
        "type": "object"
      },
      "name": "amberflo_create_customer"
    },
    {
      "description": "Explain/drill into the raw meter events behind a meter's usage over a time range — useful to debug why a number looks off. API: POST /usage/explain.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "aggregation": {
            "description": "Aggregation function: SUM | COUNT | MIN | MAX.",
            "enum": [
              "SUM",
              "COUNT",
              "MIN",
              "MAX"
            ],
            "type": "string"
          },
          "end_time_in_seconds": {
            "description": "Range end, unix epoch seconds. Defaults to now if omitted.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "filter": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Dimension filter: map of dimension name -> allowed values.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "group_by": {
            "description": "Dimension names to group by, e.g. [\"customerId\"].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "meter_api_name": {
            "description": "The meterApiName to explain (from amberflo_list_meters).",
            "type": "string"
          },
          "start_time_in_seconds": {
            "description": "Range start, unix epoch seconds (inclusive).",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "take_limit": {
            "description": "Return only the top N records.",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          }
        },
        "required": [
          "meter_api_name",
          "start_time_in_seconds"
        ],
        "type": "object"
      },
      "name": "amberflo_explain_usage"
    },
    {
      "description": "Get total usage across all meters over a time range, optionally grouped by customer or filtered to one customer. API: GET /usage/all.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "end_time_in_seconds": {
            "description": "Range end, unix epoch seconds. Defaults to now if omitted.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "filter_by_customer_id": {
            "description": "Restrict results to a single customerId.",
            "type": "string"
          },
          "group_by_customer_id": {
            "description": "When true, group results by customer (sends groupBy=customerId).",
            "type": "boolean"
          },
          "start_time_in_seconds": {
            "description": "Range start, unix epoch seconds (inclusive).",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "time_grouping_interval": {
            "description": "Bucket size: HOUR | DAY | WEEK | MONTH.",
            "enum": [
              "HOUR",
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "type": "string"
          }
        },
        "required": [
          "start_time_in_seconds",
          "time_grouping_interval"
        ],
        "type": "object"
      },
      "name": "amberflo_get_all_usage"
    },
    {
      "description": "Fetch a single customer by its Amberflo customerId. API: GET /customers/?customerId=<id>.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId to fetch.",
            "type": "string"
          }
        },
        "required": [
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_get_customer"
    },
    {
      "description": "Get a single customer invoice: the CURRENT open invoice (latest=true, default) or a SPECIFIC past invoice by product_plan_id + year + month + day. API: GET /payments/billing/customer-product-invoice.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId.",
            "type": "string"
          },
          "day": {
            "description": "Day of month of a specific past invoice.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "from_cache": {
            "description": "Use cached invoice (faster). Default true.",
            "type": "boolean"
          },
          "latest": {
            "description": "Fetch the current open invoice. Default true. Ignored when a specific invoice is addressed.",
            "type": "boolean"
          },
          "month": {
            "description": "Month (1-12) of a specific past invoice.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "product_id": {
            "description": "Product id. Default \"1\".",
            "type": "string"
          },
          "product_plan_id": {
            "description": "Product plan id of a specific past invoice (with year/month/day).",
            "type": "string"
          },
          "with_payment_status": {
            "description": "Include payment status. Default true.",
            "type": "boolean"
          },
          "year": {
            "description": "Year of a specific past invoice.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          }
        },
        "required": [
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_get_customer_invoice"
    },
    {
      "description": "Get a customer's LATEST assigned product plan (pricing). API: GET /payments/pricing/amberflo/customer-pricing?CustomerId=<id>.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId.",
            "type": "string"
          }
        },
        "required": [
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_get_customer_plan"
    },
    {
      "description": "Query aggregated usage for a single meter over a time range, optionally grouped/filtered. API: POST /usage/.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "aggregation": {
            "description": "Aggregation function: SUM | COUNT | MIN | MAX.",
            "enum": [
              "SUM",
              "COUNT",
              "MIN",
              "MAX"
            ],
            "type": "string"
          },
          "end_time_in_seconds": {
            "description": "Range end, unix epoch seconds. Defaults to now if omitted.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "filter": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Dimension filter: map of dimension name -> allowed values.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "group_by": {
            "description": "Dimension names to group results by, e.g. [\"customerId\"].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "meter_api_name": {
            "description": "The meterApiName to query (from amberflo_list_meters).",
            "type": "string"
          },
          "start_time_in_seconds": {
            "description": "Range start, unix epoch seconds (inclusive).",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "take_is_ascending": {
            "description": "Sort order for `take` (default false = descending).",
            "type": "boolean"
          },
          "take_limit": {
            "description": "Return only the top N groups.",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "time_grouping_interval": {
            "description": "Bucket size: HOUR | DAY | WEEK | MONTH.",
            "enum": [
              "HOUR",
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "type": "string"
          }
        },
        "required": [
          "meter_api_name",
          "aggregation",
          "time_grouping_interval",
          "start_time_in_seconds"
        ],
        "type": "object"
      },
      "name": "amberflo_get_usage"
    },
    {
      "description": "WRITE: record/ingest a single usage meter event (writes billable usage data) to the Amberflo ingestion host. API: POST /ingest/ on the ingest base URL.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The customerId this usage belongs to.",
            "type": "string"
          },
          "dimensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional dimensions (key/value string metadata) for the event.",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "meter_api_name": {
            "description": "The meterApiName this event is for.",
            "type": "string"
          },
          "meter_time_in_millis": {
            "description": "Event timestamp, unix epoch milliseconds.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "meter_value": {
            "description": "The numeric value of the usage event.",
            "type": "number"
          },
          "unique_id": {
            "description": "Optional idempotency/unique id for the event.",
            "type": "string"
          }
        },
        "required": [
          "meter_api_name",
          "meter_value",
          "meter_time_in_millis",
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_ingest_usage"
    },
    {
      "description": "List all invoices for a customer (optionally for a specific product), with payment status. API: GET /payments/billing/customer-product-invoice/all.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId.",
            "type": "string"
          },
          "from_cache": {
            "description": "Use cached invoices (faster). Default true.",
            "type": "boolean"
          },
          "product_id": {
            "description": "Product id. Default \"1\".",
            "type": "string"
          },
          "with_payment_status": {
            "description": "Include payment status. Default true.",
            "type": "boolean"
          }
        },
        "required": [
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_list_customer_invoices"
    },
    {
      "description": "List the full history of product plans assigned to a customer over time. API: GET /payments/pricing/amberflo/customer-pricing/list?CustomerId=<id>.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId.",
            "type": "string"
          }
        },
        "required": [
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_list_customer_plan_history"
    },
    {
      "description": "List all customers registered in your Amberflo account (id, name, email, traits, enabled). Good first call to discover customer ids. API: GET /customers/.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {},
        "type": "object"
      },
      "name": "amberflo_list_customers"
    },
    {
      "description": "List all meter definitions in your account (id, meterApiName, label, meterType, aggregation, etc.). Use meterApiName values here as inputs to usage tools. API: GET /meters.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {},
        "type": "object"
      },
      "name": "amberflo_list_meters"
    },
    {
      "description": "List a customer's active prepaid credit orders for a product. API: GET /payments/pricing/amberflo/customer-prepaid/list?CustomerId=<id>&ProductId=<pid>.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "customer_id": {
            "description": "The Amberflo customerId.",
            "type": "string"
          },
          "product_id": {
            "description": "Product id. Default \"1\".",
            "type": "string"
          }
        },
        "required": [
          "customer_id"
        ],
        "type": "object"
      },
      "name": "amberflo_list_prepaid_orders"
    }
  ]
}

What the leaf hashes

{"body":"161c29e7f621094d71580f8ded6d8d562adf90c10280a4c7f9e2b9f1ba57c064","id":300013,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793053222889175,"prev":null,"subject":"14fe11f8-298e-418f-81c2-3f4eba575f74","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. 0xa78a71c32d7010ef43326640b8dbd4d1b0e0ff21c1999cfefd1dc8b6137567e0
  2. 0x7a808a1f612de12c2637710d5fda4e57ea91a732a1cc9c7810c9fdaae9e06100
  3. 0x31581cfb8df064e8ec0d19a37b0e26e49a5650d1b7d609deee19bdf12871aec9
  4. 0xd08ba8c95bf959d6a4f774ac2ad8a5ba212beead02a84bb87bcc44bf208f6d8f
  5. 0x138e13c10d351cdbddb3893ab076c10c1a950ac57bf9b365b2d8b1b4760cc65e
  6. 0x3c27e63fa0e746e46122d162367083506fe36e2bc84e395dc31dfd2392900f68
  7. 0x230bcae3cb600ebc5a482ba6a9bd5bc7da9817d8d81f6df507bde74c47cca5f4
  8. 0xa6b96bbc1e45f1918b98580ae376f03cc11570456bdda7e116c9cbac543a22ea
  9. 0xdea9600bee8435f84fe6baa7a2097a96003e9096c73edfd41525e72052fb0c18
  10. 0x96a6c36f66ccdce2fc9d08bc551d6e8a2e7e8f76cf469865819b5bc277877605
  11. 0xfd7db9a5ff472cfefafacbeb7f7f7dc6fc7e28e7e0d99e3b79d231f0d5f46aee
  12. 0x1e464fcb484a1e782f9fe44be5118a9de934eb533c96ba10fc7d20e3a3e4711c
  13. 0x292ebdce6b8d3d7ef08ad646a0fd97dee9313ab55c1a350807d9f3013794c37a
  14. 0x428106f4ae4ec142f17aebf6fa50935242f8d3f1c211cf95d6351d03d11da2b7
  15. 0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0
  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