addrbookFor publishers
← The evidence ledger

Evidence row 292493

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 437d73b4-ef3f-448d-af10-fc2481b3280c
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
173fd66d0c110c41b671f988f218171b20938f692661256ccb6b440b4237c49d
Leaf
0x6b57bf2dc1a0e3f39319b20d68f132e6d96894ef56a9cc20f861390ff02f37d6

What was observed

{
  "count": 3,
  "tools": [
    {
      "description": "Use this when a group (trip, vacation, roommates, couple, event) has several shared expenses paid by different people and wants to know who owes who and how to settle up. Each expense can be split equally, by exact amounts, by percentages, or by shares. Returns each person's balance (paid minus share, summing to exactly zero) and the fewest payments that settle every balance to the cent, plus a CSV of payments, balances, and expenses. One currency per call: mixed currencies are rejected and nothing is converted. Does not send payment requests, move money, or remember the group; for one restaurant bill use split_bill.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "currency": {
            "description": "ISO 4217 code for every expense, e.g. USD, EUR, GBP. Defaults to USD. Mixed currencies are rejected; nothing is converted.",
            "maxLength": 8,
            "type": "string"
          },
          "expenses": {
            "description": "Every shared expense. Example: [{\"description\": \"Airbnb\", \"amount\": 360, \"paid_by\": \"Ana\"}, {\"description\": \"Gas\", \"amount\": 90, \"paid_by\": \"Ben\", \"split_among\": [\"Ben\", \"Chloe\"]}]. Record a repayment already made as an expense paid_by the person who paid it back, with split_among set to the person who received it.",
            "items": {
              "properties": {
                "amount": {
                  "description": "Total paid, e.g. 360. Optional only for split exact, where it defaults to the sum of the amounts.",
                  "type": "number"
                },
                "currency": {
                  "description": "ISO 4217 code if different from the top-level currency. All expenses in one call must share one currency.",
                  "maxLength": 8,
                  "type": "string"
                },
                "description": {
                  "description": "What it was for, e.g. \"Airbnb\" or \"Groceries\".",
                  "maxLength": 80,
                  "type": "string"
                },
                "paid_by": {
                  "description": "The one person who paid, e.g. \"Ana\".",
                  "maxLength": 40,
                  "type": "string"
                },
                "split": {
                  "description": "How to divide it: equal (default), exact (money amounts per person), percent (must add up to 100), or shares (weights such as 2 nights vs 1 night).",
                  "enum": [
                    "equal",
                    "exact",
                    "percent",
                    "shares"
                  ],
                  "type": "string"
                },
                "split_among": {
                  "description": "Who shares this cost, e.g. [\"Ana\", \"Ben\", \"Chloe\"]. Omit or use [\"everyone\"] for the whole group. The payer is included only if listed.",
                  "items": {
                    "maxLength": 40,
                    "type": "string"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "split_values": {
                  "additionalProperties": {
                    "type": "number"
                  },
                  "description": "Per-person values for exact, percent, or shares, keyed by name, e.g. {\"Ana\": 2, \"Ben\": 1} for shares or {\"Ana\": 45.5, \"Ben\": 14.5} for exact.",
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                }
              },
              "required": [
                "paid_by"
              ],
              "type": "object"
            },
            "maxItems": 300,
            "type": "array"
          },
          "people": {
            "description": "Everyone in the group, e.g. [\"Ana\", \"Ben\", \"Chloe\", \"Dev\"]. Needed when \"everyone\" should include someone who never paid. Optional otherwise.",
            "items": {
              "maxLength": 40,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "title": {
            "description": "Optional label, e.g. \"Lisbon trip\".",
            "maxLength": 80,
            "type": "string"
          }
        },
        "required": [
          "expenses"
        ],
        "type": "object"
      },
      "name": "settle_group_expenses"
    },
    {
      "description": "Use this when the user wants to split a restaurant bill, check, receipt, takeout order, or any single bill between people: evenly or item by item (who had what), with tax, tip, service charge, coupons, delivery fees, or rounding up. Tax, tip, and service charge are shared in proportion to each person's pre-tax subtotal; every share is exact to the cent and the shares add up exactly to the total (largest-remainder rounding). Optional paid_by lists who owes the payer. Does not read receipt photos (pass the items as text), handle several payers or many bills (use settle_group_expenses), or convert currencies.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "bill_amount": {
            "description": "Use instead of items to split one amount evenly, e.g. 120. It is the amount before any tax_percent or tip_percent you add here; if the bill already includes tax, leave tax out.",
            "type": "number"
          },
          "currency": {
            "description": "ISO 4217 code, e.g. USD, EUR, GBP, JPY. Defaults to USD. JPY has no decimals, KWD has three.",
            "maxLength": 8,
            "type": "string"
          },
          "discount_amount": {
            "description": "Coupon or deal on the whole bill in money, applied before tax, e.g. 15.",
            "type": "number"
          },
          "discount_percent": {
            "description": "Coupon or deal on the whole bill in percent, applied before tax, e.g. 10.",
            "type": "number"
          },
          "equal_fee_amount": {
            "description": "A flat fee split equally rather than by what people ordered, e.g. a 6.99 delivery fee or a cover charge.",
            "type": "number"
          },
          "items": {
            "description": "Line items from the receipt with who shared each one. Example: [{\"description\": \"Pizza\", \"price\": 24, \"shared_by\": [\"Ana\", \"Ben\"]}, {\"description\": \"Salad\", \"price\": 12, \"shared_by\": [\"Chloe\"]}]. Omit and use bill_amount to split one total evenly.",
            "items": {
              "properties": {
                "description": {
                  "description": "What it was, e.g. \"Margherita pizza\" or \"Bottle of wine\".",
                  "maxLength": 80,
                  "type": "string"
                },
                "price": {
                  "description": "Price of one unit before tax and tip, in the bill currency, e.g. 18.50.",
                  "type": "number"
                },
                "quantity": {
                  "description": "How many units, e.g. 2 for two beers at the same price. Defaults to 1.",
                  "type": "number"
                },
                "shared_by": {
                  "description": "Names of the people who shared this item, e.g. [\"Ana\", \"Ben\"]. Omit (or use [\"everyone\"]) for an item everyone shared. Repeating a name gives that person an extra share.",
                  "items": {
                    "maxLength": 40,
                    "type": "string"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "weights": {
                  "description": "Optional unequal portions in the same order as shared_by, e.g. [2, 1] when Ana ate twice as much as Ben.",
                  "items": {
                    "type": "number"
                  },
                  "maxItems": 50,
                  "type": "array"
                }
              },
              "required": [
                "price"
              ],
              "type": "object"
            },
            "maxItems": 200,
            "type": "array"
          },
          "paid_by": {
            "description": "Who paid the whole bill, e.g. \"Ana\". Adds a list of who owes them how much.",
            "maxLength": 40,
            "type": "string"
          },
          "people": {
            "description": "Everyone splitting the bill, e.g. [\"Ana\", \"Ben\", \"Chloe\"]. Needed when some items are shared by everyone or when someone had nothing. Optional if every item lists shared_by.",
            "items": {
              "maxLength": 40,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          },
          "people_count": {
            "description": "Number of people when names are not given, e.g. 5. They are labelled Person 1 to Person 5.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "round_up_to": {
            "description": "Round each person's share up to a multiple of this amount, e.g. 1 for whole dollars or 5. The extra is shown separately.",
            "type": "number"
          },
          "service_charge_amount": {
            "description": "Service charge in money, e.g. 9.75.",
            "type": "number"
          },
          "service_charge_percent": {
            "description": "Service charge rate added by the restaurant, e.g. 12.5. Shared in proportion to each person's subtotal.",
            "type": "number"
          },
          "tax_amount": {
            "description": "Tax in money exactly as printed on the receipt, e.g. 7.38. Shared in proportion to each person's subtotal.",
            "type": "number"
          },
          "tax_percent": {
            "description": "Sales tax or VAT rate added on top of the item subtotal (after any discount), e.g. 8.875. Use tax_amount instead when the receipt shows the tax in money.",
            "type": "number"
          },
          "tip_amount": {
            "description": "Tip in money, e.g. 25. Shared in proportion to each person's subtotal.",
            "type": "number"
          },
          "tip_base": {
            "description": "What tip_percent applies to: pre_tax (default, subtotal after discounts) or post_tax (subtotal plus service charge plus tax).",
            "enum": [
              "pre_tax",
              "post_tax"
            ],
            "type": "string"
          },
          "tip_percent": {
            "description": "Tip rate, e.g. 18 or 20. Calculated on the pre-tax subtotal unless tip_base is post_tax.",
            "type": "number"
          },
          "title": {
            "description": "Optional label, e.g. \"Dinner at Luigi's\".",
            "maxLength": 80,
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "split_bill"
    },
    {
      "description": "Use this when roommates or housemates want to split rent fairly: by bedroom size (square feet or metres) with a shared-space portion split per occupant, by income, or equally, with optional per-room adjustments (private bathroom, no window), couples sharing a room, and utilities split per occupant. Every amount is exact to the cent and the parts add up exactly to the rent. Does not give legal or tenancy advice, collect rent, or handle one-off shared expenses (use settle_group_expenses for those).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "basis": {
            "description": "How to split: room_size (default when every room has a size), income (in proportion to income), or equal (per occupant).",
            "enum": [
              "room_size",
              "income",
              "equal"
            ],
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 code, e.g. USD, EUR, GBP. Defaults to USD.",
            "maxLength": 8,
            "type": "string"
          },
          "extra_costs": {
            "description": "Other monthly costs split equally per occupant, e.g. 180 for utilities and internet.",
            "type": "number"
          },
          "rooms": {
            "description": "Each bedroom or person. Example: [{\"name\": \"Ana\", \"size\": 160}, {\"name\": \"Ben\", \"size\": 120}, {\"name\": \"Chloe\", \"size\": 100}].",
            "items": {
              "properties": {
                "adjustment_percent": {
                  "description": "Optional premium or reduction on the room's size-based part, e.g. 10 for a private bathroom or -10 for no window.",
                  "type": "number"
                },
                "income": {
                  "description": "Monthly or yearly income (same period for everyone) when splitting by income, e.g. 5200.",
                  "type": "number"
                },
                "name": {
                  "description": "Who lives there or the room label, e.g. \"Ana\" or \"Big room (Ana & Ben)\".",
                  "maxLength": 40,
                  "type": "string"
                },
                "occupants": {
                  "description": "People sharing this room, e.g. 2 for a couple. Shared space and extra costs are split per occupant. Defaults to 1.",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "size": {
                  "description": "Bedroom floor area in any one unit used for all rooms (square feet or square metres), e.g. 140.",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            },
            "maxItems": 20,
            "type": "array"
          },
          "shared_area": {
            "description": "Area of shared space (kitchen, living room, shared bathroom) in the same unit as the room sizes, e.g. 400. Its share of the total area is split equally per occupant.",
            "type": "number"
          },
          "shared_percent": {
            "description": "Alternative to shared_area: percent of the rent treated as shared space and split equally per occupant, e.g. 40. Defaults to 50 for room_size when shared_area is not given.",
            "type": "number"
          },
          "total_rent": {
            "description": "Total monthly rent for the home, e.g. 3200.",
            "type": "number"
          }
        },
        "required": [
          "total_rent",
          "rooms"
        ],
        "type": "object"
      },
      "name": "split_rent"
    }
  ]
}

What the leaf hashes

{"body":"173fd66d0c110c41b671f988f218171b20938f692661256ccb6b440b4237c49d","id":292493,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793048813690114,"prev":null,"subject":"437d73b4-ef3f-448d-af10-fc2481b3280c","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. 0x6b57b305a4a910d8c739f73a9596ec7af2a81b51a2ef0d293e2a7bea5107335f
  2. 0x03f2ac63b81d237e2c967cb2ddb67fbe38d5234103f9405ef6d8a1e0c3cf07e6
  3. 0x62c68bc14dba712ebbcd36b66ce86e462339ae25344ba416f591197f01937f35
  4. 0xc7f1cc9a400ac8012b6687e3b6344a2bebe6eddbb39e591a56b5d886eb85a687
  5. 0xd5f715c6070f45374e4d1f80a6bf73d2b2446bd57b4095bd858755292d2749b6
  6. 0x2b80eec3f7a8e47d5d2c1c362ed2344adff92601e4c9800b1ea7e6139b218d88
  7. 0x4db2096401d02ab1da7530e6b77555e774c588105c68a7b9cf8ce9e15df52369
  8. 0xe356b9739c0897ffe3e8c1b95fe20d323f48b1b58f9194b6830da5cb31b4640c
  9. 0x959ad25eceb864e98140a3c5d86b87e2e87047d2132bf498fed758e10dc5218e
  10. 0x87894636102384a23857842def741b3253d54af0afaff0b11e7117549ccd8002
  11. 0xdfaea4285192101e7ab6e8e71853c71cef08df31a416be7a9f92f34cf897e13e
  12. 0x2a304c51963b65e3ca818b638b2e9a98297b7d6b6a3e14ecca2501aa13b9f556
  13. 0x9dc4d6f64bc3c323d2c45a28209068cd473b6979bd632a0d694bf94d19bc39df
  14. 0xfc9b5a81a7a83a1c735a4fe64590beb9db14d2366f463161358af28c3ea9a81d
  15. 0xa2d436d488e3600b0e5c3e3ed9c9234cd52853c59830b786334fd0c4292d9f40
  16. 0x47b89901b0f07938a6b9a66ddf35683903f79d756a7c7763665fd632758b08d0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON