Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted 3 min ago
teppi

Server definition

Hash
sha256:0ba0bc3bd2d3fbb36f26b7c86f1b435e9d6570a289b91216953ad7c50d63879c
What it is
What a remote MCP server returned when asked what it offers: 6 tools

The blob, as servednamed by its sha256

{ "instructions": "Merchant math over MCP. Free: processor_fees, charge_to_net, invoice_total. Premium (license): discount_stack, proration, installment_plan. Administrative math only — not financial advice.", "tools": [ { "description": "Compute the gross price to charge so you net a target after fees. FREE.\n\n'Charge X to receive Y' after percentage + fixed processor fees.\nTypical input {\"net_target\": 100, \"pct_fee\": 2.9, \"fixed_fee\": 0.30}\nreturns {\"charge\": 103.4, \"fee\": 3.4, \"net\": 100.0}.\n\nThe inverse of processor_fees - solves for gross from a target net. Use\nwhen the payout is the fixed requirement. Not when the price is already\nset. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"net_target > 0 and pct_fee < 100 required\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "fixed_fee": { "default": 0.3, "description": "Processor fixed fee per charge. Default 0.30.", "type": "number" }, "net_target": { "description": "The amount you want to receive after fees; must be\ngreater than 0.", "exclusiveMinimum": 0, "type": "number" }, "pct_fee": { "default": 2.9, "description": "Processor percentage fee, below 100, e.g. 2.9 for 2.9%.\nDefault 2.9.", "exclusiveMaximum": 100, "type": "number" } }, "required": [ "net_target" ], "type": "object" }, "name": "charge_to_net", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Stack discounts correctly: sequential vs additive comparison. PREMIUM (license).\n\nThe two methods differ — this shows both, the final price, and the true\ntotal discount. Typical input {\"price\": 200, \"discounts_pct\": [20, 10]}\nreturns {\"original\": 200, \"sequential_price\": 144.0,\n\"sequential_total_discount_pct\": 28.0, \"additive_price\": 140.0,\n\"difference\": 4.0, \"note\": \"...\"}.\n\nUse when more than one discount applies and the order changes the answer.\nNot for a single discount inside an invoice (invoice_total). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"price > 0 and at least one discount required\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "discounts_pct": { "description": "Discount percentages in the order applied, at least\none, e.g. [20, 10] for 20% then 10%.", "items": { "type": "number" }, "minItems": 1, "type": "array" }, "price": { "description": "Original price before discounts; must be greater than 0.", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "price", "discounts_pct" ], "type": "object" }, "name": "discount_stack", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Split a total into an installment schedule with optional deposit. PREMIUM (license).\n\nRounding remainders land on the final payment so the schedule always\nsums exactly. Typical input {\"total\": 1000, \"installments\": 3,\n\"deposit_pct\": 10} returns {\"deposit\": 100.0, \"payments\": [300.0,\n300.0, 300.0], \"check_sum\": 1000.0}.\n\nUse when one total is paid across scheduled dates. Not for partial-period\nadjustments (proration). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"total > 0 and 1-36 installments\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "deposit_pct": { "default": 0, "description": "Optional upfront deposit as a percentage of total,\ne.g. 10 for 10%. Default 0.", "type": "number" }, "installments": { "description": "Number of payments after the deposit; 1 to 36.", "maximum": 36, "minimum": 1, "type": "integer" }, "total": { "description": "Full amount to split; must be greater than 0.", "exclusiveMinimum": 0, "type": "number" } }, "required": [ "total", "installments" ], "type": "object" }, "name": "installment_plan", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Total an invoice: per-line totals, subtotal, discount, tax, grand total. FREE.\n\nTypical input {\"line_items\": [{\"desc\": \"Design\", \"qty\": 2,\n\"unit_price\": 50}], \"tax_pct\": 8.5, \"discount_pct\": 10} returns\n{\"lines\": [{\"desc\": \"Design\", \"qty\": 2, \"unit_price\": 50,\n\"line_total\": 100.0}], \"subtotal\": 100.0, \"discount\": 10.0, \"tax\":\n7.65, \"total\": 97.65}.\n\nUse when several line items roll up with discount and tax. Not for one\ntransaction's fees (processor_fees) and not for spreading a total over\ntime (installment_plan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"line_items must contain at least one item,\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "discount_pct": { "default": 0, "description": "Discount percentage applied to the subtotal.\nDefault 0.", "type": "number" }, "line_items": { "description": "At least one line item object {\"desc\": str, \"qty\":\nnumber, \"unit_price\": number}; the first 100 items are used.", "items": { "additionalProperties": true, "type": "object" }, "minItems": 1, "type": "array" }, "tax_pct": { "default": 0, "description": "Tax percentage applied after the discount, e.g. 8.5.\nDefault 0.", "type": "number" } }, "required": [ "line_items" ], "type": "object" }, "name": "invoice_total", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Break down payment-processor fees: fee, net, and effective rate. FREE.\n\nUses editable presets for stripe/paypal/square/shopify (verify current\nrates) or your own custom_pct + custom_fixed. Typical input {\"amount\":\n1000, \"processor\": \"stripe\", \"transactions\": 10} returns {\"gross\":\n1000, \"fee\": 32.0, \"net\": 968.0, \"effective_rate_pct\": 3.2, \"note\":\n\"...\"}.\n\nUse when the charge amount is known and the net payout is the question.\nNot for the reverse: the gross needed to net a target is charge_to_net. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"amount must be > 0, transactions >= 1\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "description": "Total gross amount processed; must be greater than 0.", "exclusiveMinimum": 0, "type": "number" }, "custom_fixed": { "default": 0, "description": "Fixed per-transaction fee used when processor is\n\"custom\", e.g. 0.25.", "type": "number" }, "custom_pct": { "default": 0, "description": "Percentage fee used when processor is \"custom\",\ne.g. 2.5 for 2.5%.", "type": "number" }, "processor": { "default": "stripe", "description": "One of \"stripe\", \"paypal\", \"square\", \"shopify\", or\n\"custom\". Default \"stripe\".", "enum": [ "stripe", "paypal", "square", "shopify", "custom" ], "type": "string" }, "transactions": { "default": 1, "description": "How many transactions the amount is spread across;\nat least 1. Default 1.", "minimum": 1, "type": "integer" } }, "required": [ "amount" ], "type": "object" }, "name": "processor_fees", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Compute a prorated charge or refund for a partial billing period. PREMIUM (license).\n\nTypical input {\"amount_per_period\": 90, \"days_used\": 10,\n\"days_in_period\": 30} returns {\"days_used\": 10, \"days_in_period\": 30,\n\"prorated_charge\": 30.0, \"prorated_refund\": 60.0, \"answer\": 30.0}.\n\nUse when a plan starts, ends, or changes mid-period. Not for splitting a\nfull amount into scheduled payments (installment_plan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"need amount > 0 and 0 <= days_used <= days_in_period\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "amount_per_period": { "description": "Full-period price; must be greater than 0.", "exclusiveMinimum": 0, "type": "number" }, "days_in_period": { "default": 30, "description": "Length of the billing period in days; at least 1.\nDefault 30.", "minimum": 1, "type": "integer" }, "days_used": { "description": "Days of the period consumed; 0 to days_in_period.", "minimum": 0, "type": "integer" }, "refund_mode": { "default": false, "description": "If true, \"answer\" is the refund amount instead of the\ncharge. Default false.", "type": "boolean" } }, "required": [ "amount_per_period", "days_used" ], "type": "object" }, "name": "proration", "outputSchema": { "additionalProperties": true, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0ba0bc3bd2d3fbb36f26b7c86f1b435e9d6570a289b91216953ad7c50d63879c | sha256sum