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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:0ba0bc3bd2d3fbb36f26b7c86f1b435e9d6570a289b91216953ad7c50d63879c | sha256sum