{"id":297758,"recorded_at":"2026-10-26T22:05:18.715371Z","observed_at":"2026-10-26T22:05:18.715293Z","subject_kind":"endpoint","subject":"cf78035a-5d2d-432b-879d-2c18974458b5","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":7,"tools":[{"description":"Turn time entries (hours x rate, with optional rounding, grouping by task and expenses) into a validated invoice JSON with totals, ready for POST /v1/invoice.pdf. Use validate_invoice (free) instead if you already have an invoice. Pure calculation: no network request, nothing is sent or stored. Costs $0.02 USDC per call via x402 (payment goes in _meta[\"x402/payment\"]); invalid input returns an error and is not charged.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"buyer":{"properties":{"address":{"maxLength":400,"type":"string"},"email":{"format":"email","maxLength":254,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"phone":{"maxLength":40,"type":"string"},"tax_id":{"maxLength":60,"type":"string"}},"required":["name"],"type":"object"},"currency":{"default":"USD","type":"string"},"default_rate":{"description":"Hourly rate for entries without their own rate","maximum":1000000,"minimum":0,"type":"number"},"discount":{"maximum":1000000000,"minimum":0,"type":"number"},"due_date":{"description":"YYYY-MM-DD; or give terms instead","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"entries":{"items":{"additionalProperties":false,"properties":{"date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"description":{"maxLength":250,"minLength":1,"type":"string"},"hours":{"exclusiveMinimum":0,"maximum":1000,"type":"number"},"rate":{"maximum":1000000,"minimum":0,"type":"number"}},"required":["description","hours"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"expenses":{"description":"Reimbursable expenses, one line each","items":{"additionalProperties":false,"properties":{"amount":{"maximum":1000000000,"minimum":0,"type":"number"},"description":{"maxLength":250,"minLength":1,"type":"string"}},"required":["description","amount"],"type":"object"},"maxItems":100,"type":"array"},"group_by":{"default":"entry","description":"entry = one line per entry; description = merge entries with the same description and rate","enum":["entry","description"],"type":"string"},"invoice_number":{"maxLength":64,"minLength":1,"type":"string"},"issue_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"notes":{"maxLength":2000,"type":"string"},"payment_instructions":{"maxLength":1000,"type":"string"},"rounding":{"additionalProperties":false,"properties":{"increment_minutes":{"anyOf":[{"const":1,"type":"number"},{"const":5,"type":"number"},{"const":6,"type":"number"},{"const":10,"type":"number"},{"const":15,"type":"number"},{"const":30,"type":"number"},{"const":60,"type":"number"}],"description":"Round each entry to this many minutes"},"mode":{"default":"up","enum":["up","nearest"],"type":"string"}},"required":["increment_minutes"],"type":"object"},"seller":{"properties":{"address":{"maxLength":400,"type":"string"},"email":{"format":"email","maxLength":254,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"phone":{"maxLength":40,"type":"string"},"tax_id":{"maxLength":60,"type":"string"}},"required":["name"],"type":"object"},"tax_rate":{"maximum":100,"minimum":0,"type":"number"},"terms":{"description":"e.g. \"Net 15\"; sets due_date from issue_date (early-pay discounts are not applied to the invoice)","maxLength":40,"minLength":1,"type":"string"}},"required":["seller","buyer","invoice_number","issue_date","entries"],"type":"object"},"name":"invoice_from_timesheet"},{"description":"Calculate the late fee on one overdue invoice: flat fee, monthly % or annual %, simple or compounding, with optional grace days. Returns days late, the fee, the new total and a line to paste on the invoice. Use payment_terms_check instead to work out when an invoice is due. Not legal advice; it does not look up state caps. Pure calculation: no network request, nothing is sent or stored. Costs $0.01 USDC per call via x402 (payment goes in _meta[\"x402/payment\"]); invalid input returns an error and is not charged.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"amount":{"description":"Unpaid invoice amount","exclusiveMinimum":0,"maximum":1000000000,"type":"number"},"as_of":{"description":"Date paid, or the date to calculate to, YYYY-MM-DD (default: today, UTC)","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"compounding":{"default":false,"description":"false = simple interest (default); true = compounds (monthly: per 30 days; annual: daily)","type":"boolean"},"currency":{"default":"USD","description":"ISO-4217, default USD","type":"string"},"due_date":{"description":"Invoice due date, YYYY-MM-DD","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"fee_type":{"description":"flat = one fixed fee; monthly_percent e.g. 1.5; annual_percent e.g. 18","enum":["flat","monthly_percent","annual_percent"],"type":"string"},"flat_fee":{"description":"Flat fee; required for fee_type=flat, optional one-time add-on otherwise","maximum":1000000,"minimum":0,"type":"number"},"grace_days":{"default":0,"description":"Days after the due date before any fee applies","maximum":365,"minimum":0,"type":"integer"},"rate_percent":{"description":"Rate for monthly_percent / annual_percent","maximum":100,"minimum":0,"type":"number"},"state":{"description":"US state (2-letter) for the legal note","type":"string"}},"required":["amount","due_date","fee_type"],"type":"object"},"name":"late_fee_calc"},{"description":"Draft a payment reminder email for one unpaid invoice in a friendly, firm or final-notice tone. Returns a subject, plain-text body, days overdue and a suggested next step. Use late_fee_calc first if you want the fee amount quoted in the email. Draft only: nothing is sent. Pure calculation: no network request, nothing is sent or stored. Costs $0.01 USDC per call via x402 (payment goes in _meta[\"x402/payment\"]); invalid input returns an error and is not charged.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"amount":{"description":"Amount due","exclusiveMinimum":0,"maximum":1000000000,"type":"number"},"as_of":{"description":"Today's date for the days-overdue count, YYYY-MM-DD (default: today, UTC)","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"client_name":{"description":"Client's name for the greeting","maxLength":120,"minLength":1,"type":"string"},"currency":{"default":"USD","description":"ISO-4217, default USD","type":"string"},"due_date":{"description":"YYYY-MM-DD","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"final_deadline_days":{"default":7,"description":"Final notice: days the client has to pay","maximum":60,"minimum":1,"type":"integer"},"from_name":{"description":"Your name or business, used in the sign-off","maxLength":120,"minLength":1,"type":"string"},"invoice_number":{"maxLength":64,"minLength":1,"type":"string"},"late_fee_terms":{"description":"Your agreed late-fee terms, e.g. \"1.5% per month\"; mentioned in the final notice only","maxLength":200,"minLength":1,"type":"string"},"payment_link":{"format":"uri","maxLength":500,"type":"string"},"tone":{"description":"\"friendly\" (alias \"polite\"), \"firm\", or \"final\"","enum":["friendly","polite","firm","final"],"type":"string"}},"required":["tone","from_name"],"type":"object"},"name":"payment_reminder_draft"},{"description":"Work out the due date and status for payment terms such as Net 30, 2/10 Net 30, Due on receipt, EOM or Net 30 EOM. Returns the early-payment discount amount and deadline, the annualized cost of skipping the discount, and suggested reminder dates. Use late_fee_calc once the invoice is overdue. Pure calculation: no network request, nothing is sent or stored. Costs $0.01 USDC per call via x402 (payment goes in _meta[\"x402/payment\"]); invalid input returns an error and is not charged.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"amount":{"description":"Invoice total (optional; enables the discount math)","maximum":1000000000,"minimum":0,"type":"number"},"as_of":{"description":"Date to compute status for, YYYY-MM-DD (default: today, UTC)","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"currency":{"default":"USD","description":"ISO-4217, default USD","type":"string"},"invoice_date":{"description":"Invoice date, YYYY-MM-DD","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"terms":{"description":"Payment terms, e.g. \"Net 30\", \"2/10 Net 30\", \"Due on receipt\", \"EOM\", \"Net 30 EOM\"","maxLength":40,"minLength":1,"type":"string"}},"required":["invoice_date","terms"],"type":"object"},"name":"payment_terms_check"},{"description":"Free. Return the price of every paid tool and of the HTTP invoice PDF route, the payment network (Base) and the receiving address. No input, no network request, no payment.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"pricing"},{"description":"Grade the health of a business's accounts receivable from its invoice list. Send a CSV export (QuickBooks, Xero, FreshBooks, Wave, Stripe or any CSV with customer and amount columns; columns are auto-detected) or JSON rows, up to 1000 invoices. Returns an A-F grade and 0-100 score with reasons, aging buckets (current, 1-30, 31-60, 61-90, 90+ days), overdue %, weighted days outstanding, DSO, average days to pay, customer concentration, a collection priority list with the next action per overdue invoice (pointing to payment_reminder_draft and late_fee_calc), and recommendations. Use it for a monthly AR review or before chasing payments. Not accounting or legal advice. Pure calculation: no network request, nothing is sent or stored. Costs $1 USDC per call via x402 (payment goes in _meta[\"x402/payment\"]); invalid input returns an error and is not charged.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"as_of":{"description":"Report date, default today (UTC)","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"csv":{"description":"CSV export (QuickBooks, Xero, FreshBooks, Wave, Stripe or your own). Header row required. Recognized columns: invoice number, customer, amount/total, amount paid, balance/open balance, invoice date, due date, terms, paid date, status.","maxLength":60000,"type":"string"},"currency":{"default":"USD","type":"string"},"default_terms":{"default":"Net 30","description":"Used when a row has no due date and no terms","maxLength":40,"type":"string"},"invoices":{"description":"Or JSON rows instead of CSV","items":{"additionalProperties":false,"properties":{"amount":{"maximum":10000000000,"minimum":0,"type":"number"},"amount_paid":{"maximum":10000000000,"minimum":0,"type":"number"},"balance":{"maximum":10000000000,"type":"number"},"customer":{"maxLength":120,"minLength":1,"type":"string"},"due_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"invoice_number":{"maxLength":60,"minLength":1,"type":"string"},"issue_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"paid_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"status":{"maxLength":30,"type":"string"},"terms":{"maxLength":40,"type":"string"}},"required":["invoice_number","customer","amount"],"type":"object"},"maxItems":1000,"type":"array"},"revenue_window_days":{"default":90,"description":"Window for DSO: invoiced amount in the last N days","maximum":365,"minimum":30,"type":"integer"}},"type":"object"},"name":"receivables_health_report"},{"description":"Free. Validate an invoice JSON (the body for POST /v1/invoice.pdf, or the output of invoice_from_timesheet) and return computed subtotal, discount, tax and total, or a list of field errors. Same checks as the paid PDF route. Offline, no payment.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"invoice":{"additionalProperties":{},"description":"Invoice object: from, to, number, issue_date, currency, line_items[{description, quantity, unit_price}], optional tax and discount","propertyNames":{"type":"string"},"type":"object"}},"required":["invoice"],"type":"object"},"name":"validate_invoice"}]},"body_sha256":"fce0e776693748e0c612af6695a21abcc9b07719135d93a3f48f75a45a4fa7ae","prev_id":null,"leaf":"0xced85b91d1ed3984c28a2d1ee93bf2f23767f6236879be805389df30ec20ce9d","leaf_text":"{\"body\":\"fce0e776693748e0c612af6695a21abcc9b07719135d93a3f48f75a45a4fa7ae\",\"id\":297758,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793052318715293,\"prev\":null,\"subject\":\"cf78035a-5d2d-432b-879d-2c18974458b5\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xced8680e4649a1080e67deb8a28fff3a5e2c3d8cf12c262526b9e4ac3d5d2b38","0xff2251e6be9dfc0f3299b44382209b14f7f7e07ec672150ed9c00323bc0c02f2","0xde9166306ecfde2bcc2ec1501ab40290d75a3a714d75a9419b11b25744b78d8d","0x5b2be0724e940a71318ef9ab76898dbe1e413892cba14b9ee5c02a1b1f737364","0x7b12381f668f05444802224bde6be676ff6526cecc22ab6f7f7d1402cfa79d38","0xc26b55038cb30afb1e84941df442e95374012f2016bbf02df0db5201af74f8b8","0x6ac7ae0107e720540c43b2894027289cc80928d47a61b51c3e15dd7f7508df18","0x9745c1bef1d820bc6468da48e2050968265dd4a67922a6da749751015763d84e","0x620e46a467bb6ea328be9baa498db8c9a6b6f5095a07956301edab68c1ef1f7b","0xe105839525c4828b89b7d05e44f371385eb52639386c098d62734be5b4a1ce05","0xd57a32d9d2666c4270544dcb78bbea2f4774705d3879a86973628e2542543e62","0xa45f4438c9296b0ba586fc2eec9f0202e5d3c61a1d3adc975b80f6a1f4a5ca57","0xe43762a621da83c0b4b63f549cd2e19c428ac702bfc1038d70233867b06c447f","0xefabf1105e09cf52c12c58e60cbb5048b9ac3f02631d1816a926e14bdd86fbdf","0xe94ca5b798e9899ad611e57835af42266e20f53f44977e487d81365e30972beb","0x703f95866af09c5e5d6ead7411e9a10f964a41a2aff64d4a55ff0053c023a023","0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40","0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}