Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 1 min ago
teppi

Server definition

Hash
sha256:43641b2c336d5904366035434c3ac4ba8a03da5640e1d0a38f1edbf7782b9c05
What it is
What a remote MCP server returned when asked what it offers: 8 tools

The blob, as servednamed by its sha256

{ "instructions": "Last Price prices commerce actions: pricing_conversation asks for missing pricing inputs before computing, compute_price returns a price for a product or a task, verify_price judges whether a proposed price is fair, list_functions and browse_catalog show the pricing functions behind them, report_outcome tells Last Price whether a price was used, and get_price_guardrails and set_price_guardrails read and replace the limits every price in your workspace keeps. Check the changelog at https://last-price.ai/changelog (also sent as notifications/lastprice/changelog when you open a stream) before relying on behaviour you learned earlier.", "tools": [ { "description": "Browse the public marketplace catalog of pricing functions.", "inputSchema": { "properties": {}, "type": "object" }, "name": "browse_catalog", "outputSchema": null }, { "description": "Compute a price for a product/context via the Last Price Pricing Compute Network. Returns the computed price, the function that produced it, token metering/cost, and a `trace` listing each stage the request passed through (cache, route, execute, fallback, constrain, meter). For a competitor offer, put competitor_price, competitor_currency and competitive_action in metadata, then supply min_price or unit_cost with target_margin_pct. Missing business inputs return an error naming them.", "inputSchema": { "properties": { "currency": { "description": "Three-letter ISO currency code, e.g. USD.", "maxLength": 3, "minLength": 3, "type": "string" }, "current_price": { "description": "The current or reference price. Optional: functions that price relative to an incumbent need it, but lastprice/cost-plus prices from unit_cost instead.", "minimum": 0, "type": "number" }, "customer_segment": { "description": "Optional segment, e.g. enterprise.", "type": "string" }, "function_id": { "description": "Optional explicit pricing function UUID to use.", "format": "uuid", "type": "string" }, "geo": { "description": "Optional geography hint, e.g. US.", "type": "string" }, "include_explanation": { "description": "If true, ask for an explanation and confidence with the price.", "type": "boolean" }, "max_price": { "description": "Optional maximum acceptable price.", "minimum": 0, "type": "number" }, "metadata": { "description": "Optional context. For competitive pricing: competitor_price, competitor_currency and competitive_action (match or undercut); undercut requires undercut_pct. Confirm product comparability before calling.", "type": "object" }, "min_price": { "description": "Optional minimum acceptable price. A competitive offer needs this or a declared unit_cost and target_margin_pct.", "minimum": 0, "type": "number" }, "product_id": { "description": "Optional identifier of what is being priced.", "type": "string" }, "product_type": { "description": "Optional category. Defaults to \"custom\".", "enum": [ "saas", "ecommerce", "marketplace", "digital", "api", "custom" ], "type": "string" }, "routing_preference": { "description": "How to route across pricing functions. Defaults to \"default\".", "enum": [ "cheapest", "fastest", "explicit", "round_robin", "weighted", "policy", "default" ], "type": "string" }, "target_margin_pct": { "description": "Margin on price for cost-plus, not markup on cost: price = unit_cost / (1 - margin). Defaults to 30.", "maximum": 95, "minimum": 0, "type": "number" }, "unit_cost": { "description": "What the work costs you. It lets lastprice/cost-plus price with no current_price, which is the usual case when pricing a task you are about to run. Routing picks a function that can use it; to require cost-plus, pass its UUID from list_functions as function_id.", "minimum": 0, "type": "number" } }, "required": [ "currency" ], "type": "object" }, "name": "compute_price", "outputSchema": null }, { "description": "Read the price guardrails saved for your workspace, and the defaults set_price_guardrails fills in for an omitted field. saved is false when none are saved, and then no workspace limit applies. Needs a Last Price credential with routing read scope.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_price_guardrails", "outputSchema": null }, { "description": "List the pricing functions registered for the authenticated tenant.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_functions", "outputSchema": null }, { "description": "Ask Last Price what pricing inputs are missing. Start with request: {}, return its questions to the caller, then send continuation.request and answers. Prepare is free and does not compute. When ready, action compute uses the existing authenticated pricing API; configure a credential first. Never invent answers or treat a continuation as authorization.", "inputSchema": { "additionalProperties": false, "properties": { "action": { "default": "prepare", "enum": [ "prepare", "compute" ], "type": "string" }, "answers": { "additionalProperties": false, "properties": { "currency": { "pattern": "^[A-Z]{3}$", "type": "string" }, "current_price": { "minimum": 0, "type": "number" }, "max_price": { "minimum": 0, "type": "number" }, "min_price": { "minimum": 0, "type": "number" }, "target_margin_pct": { "maximum": 95, "minimum": 0, "type": "number" }, "unit_cost": { "minimum": 0, "type": "number" } }, "type": "object" }, "request": { "description": "Partial REST PricingComputeRequest, including nested context, constraints, an explicit function selection and options. Reuse continuation.request on subsequent calls.", "type": "object" } }, "type": "object" }, "name": "pricing_conversation", "outputSchema": null }, { "description": "Report whether a price from compute_price was used. Pass receipt.id from that result as usage_event_id. Outcomes are what later routing and confidence learn from. With outcome pricing on, a rejection within the call's outcome window gives back part of what it cost; the result says what was refunded. Needs a Last Price credential. Report only what actually happened.", "inputSchema": { "properties": { "evidence_note": { "description": "Optional evidence: a short note on why.", "maxLength": 500, "type": "string" }, "evidence_reference": { "description": "Optional evidence: an order, ticket or invoice id in your own system.", "maxLength": 200, "type": "string" }, "evidence_url": { "description": "Optional evidence: an https link to the record.", "maxLength": 500, "type": "string" }, "outcome": { "description": "Whether the price was used.", "enum": [ "accepted", "rejected" ], "type": "string" }, "quality_score": { "description": "Optional: how good the price was, 0 to 1.", "maximum": 1, "minimum": 0, "type": "number" }, "usage_event_id": { "description": "The usage event of the priced call: receipt.id on the compute_price result.", "type": "string" } }, "required": [ "usage_event_id", "outcome" ], "type": "object" }, "name": "report_outcome", "outputSchema": null }, { "description": "Save the price guardrails for your workspace. max_change_pct, min_margin_pct and never_below_cost hold every final price your workspace is given, from compute_price and every other pricing call. band_lower_ratio and band_upper_ratio are only the range the optimizer and elasticity functions search when a call sends no minimum or maximum. This replaces the whole saved set: an omitted field takes its default, so read get_price_guardrails first and send every rule you want to keep. Needs a Last Price credential with routing write scope.", "inputSchema": { "additionalProperties": false, "properties": { "band_lower_ratio": { "default": 0.5, "description": "Lowest price the optimizer and elasticity functions search, as a multiple of the current price. Defaults to 0.5.", "exclusiveMinimum": 0, "maximum": 1, "type": "number" }, "band_upper_ratio": { "default": 2, "description": "Highest price the optimizer and elasticity functions search, as a multiple of the current price. Defaults to 2.", "maximum": 100, "minimum": 1, "type": "number" }, "max_change_pct": { "default": null, "description": "Most a final price may move from the current price, up or down, in percent. Null (the default) for no limit.", "exclusiveMinimum": 0, "maximum": 1000, "type": [ "number", "null" ] }, "min_margin_pct": { "default": null, "description": "Least margin over the unit cost a call sends, in percent of the price. Null (the default) for no minimum.", "exclusiveMaximum": 100, "minimum": 0, "type": [ "number", "null" ] }, "never_below_cost": { "default": true, "description": "Never price below the unit cost a call sends. Defaults to true.", "type": "boolean" } }, "type": "object" }, "name": "set_price_guardrails", "outputSchema": null }, { "description": "Ask whether a price makes sense for its context, rather than what the price should be. Returns a verdict (fair, too_high, too_low, or unknown), the band it was judged against, a signed deviation from the reference, a confidence, and the evidence behind it. A verdict of \"unknown\" means the price could not be judged, which is not the same as fair.", "inputSchema": { "properties": { "currency": { "description": "Three-letter ISO currency code, e.g. USD. Defaults to USD.", "maxLength": 3, "minLength": 3, "type": "string" }, "current_price": { "description": "Optional incumbent price. Not required: asking whether a price is sensible does not presuppose an existing one.", "minimum": 0, "type": "number" }, "customer_segment": { "description": "Optional segment, e.g. enterprise.", "type": "string" }, "geo": { "description": "Optional geography hint, e.g. US.", "type": "string" }, "max_price": { "description": "Optional hard ceiling. Binding: a verdict will never relax it.", "minimum": 0, "type": "number" }, "metadata": { "description": "Optional free-form context.", "type": "object" }, "min_price": { "description": "Optional hard floor. Binding: a verdict will never relax it.", "minimum": 0, "type": "number" }, "product_id": { "description": "Optional identifier of what is being priced.", "type": "string" }, "product_type": { "description": "Optional category of what is being priced.", "enum": [ "saas", "ecommerce", "marketplace", "digital", "api", "custom" ], "type": "string" }, "proposed_price": { "description": "The price to judge. This is the subject of the call.", "minimum": 0, "type": "number" } }, "required": [ "proposed_price" ], "type": "object" }, "name": "verify_price", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:43641b2c336d5904366035434c3ac4ba8a03da5640e1d0a38f1edbf7782b9c05 | sha256sum