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