MCP Server

Last Price

ai.last-price/pricing
Business & Operations Commerce & Retail Public & reachable MCP 2025-11-25

What this MCP does

Computes and verifies contextual product prices using registered pricing functions and business inputs.

browse_catalog
Browse the public marketplace catalog of pricing functions.
Input schema
{'type': 'object', 'properties': {}}
compute_price
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.
Input schema
{'type': 'object', 'required': ['currency'], 'properties': {'geo': {'type': 'string', 'description': 'Optional geography hint, e.g. US.'}, 'currency': {'type': 'string', 'maxLength': 3, 'minLength': 3, 'description': 'Three-letter ISO currency code, e.g. USD.'}, 'metadata': {'type': 'object', '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.'}, 'max_price': {'type': 'number', 'minimum': 0, 'description': 'Optional maximum acceptable price.'}, 'min_price': {'type': 'number', 'minimum': 0, 'description': 'Optional minimum acceptable price. A competitive offer needs this or a declared unit_cost and target_margin_pct.'}, 'unit_cost': {'type': 'number', 'minimum': 0, '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.'}, 'product_id': {'type': 'string', 'description': 'Optional identifier of what is being priced.'}, 'function_id': {'type': 'string', 'format': 'uuid', 'description': 'Optional explicit pricing function UUID to use.'}, 'product_type': {'enum': ['saas', 'ecommerce', 'marketplace', 'digital', 'api', 'custom'], 'type': 'string', 'description': 'Optional category. Defaults to "custom".'}, 'current_price': {'type': 'number', 'minimum': 0, '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.'}, 'customer_segment': {'type': 'string', 'description': 'Optional segment, e.g. enterprise.'}, 'target_margin_pct': {'type': 'number', 'maximum': 95, 'minimum': 0, 'description': 'Margin on price for cost-plus, not markup on cost: price = unit_cost / (1 - margin). Defaults to 30.'}, 'routing_preference': {'enum': ['cheapest', 'fastest', 'explicit', 'round_robin', 'weighted', 'policy', 'default'], 'type': 'string', 'description': 'How to route across pricing functions. Defaults to "default".'}, 'include_explanation': {'type': 'boolean', 'description': 'If true, ask for an explanation and confidence with the price.'}}}
list_functions
List the pricing functions registered for the authenticated tenant.
Input schema
{'type': 'object', 'properties': {}}
pricing_conversation
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.
Input schema
{'type': 'object', 'properties': {'action': {'enum': ['prepare', 'compute'], 'type': 'string', 'default': 'prepare'}, 'answers': {'type': 'object', 'properties': {'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'max_price': {'type': 'number', 'minimum': 0}, 'min_price': {'type': 'number', 'minimum': 0}, 'unit_cost': {'type': 'number', 'minimum': 0}, 'current_price': {'type': 'number', 'minimum': 0}, 'target_margin_pct': {'type': 'number', 'maximum': 95, 'minimum': 0}}, 'additionalProperties': False}, 'request': {'type': 'object', 'description': 'Partial REST PricingComputeRequest, including nested context, constraints, an explicit function selection and options. Reuse continuation.request on subsequent calls.'}}, 'additionalProperties': False}
verify_price
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.
Input schema
{'type': 'object', 'required': ['proposed_price'], 'properties': {'geo': {'type': 'string', 'description': 'Optional geography hint, e.g. US.'}, 'currency': {'type': 'string', 'maxLength': 3, 'minLength': 3, 'description': 'Three-letter ISO currency code, e.g. USD. Defaults to USD.'}, 'metadata': {'type': 'object', 'description': 'Optional free-form context.'}, 'max_price': {'type': 'number', 'minimum': 0, 'description': 'Optional hard ceiling. Binding: a verdict will never relax it.'}, 'min_price': {'type': 'number', 'minimum': 0, 'description': 'Optional hard floor. Binding: a verdict will never relax it.'}, 'product_id': {'type': 'string', 'description': 'Optional identifier of what is being priced.'}, 'product_type': {'enum': ['saas', 'ecommerce', 'marketplace', 'digital', 'api', 'custom'], 'type': 'string', 'description': 'Optional category of what is being priced.'}, 'current_price': {'type': 'number', 'minimum': 0, 'description': 'Optional incumbent price. Not required: asking whether a price is sensible does not presuppose an existing one.'}, 'proposed_price': {'type': 'number', 'minimum': 0, 'description': 'The price to judge. This is the subject of the call.'}, 'customer_segment': {'type': 'string', 'description': 'Optional segment, e.g. enterprise.'}}}
Added
browse_catalog
Oct. 2, 2026, 2:40 a.m.
Added
list_functions
Oct. 2, 2026, 2:40 a.m.
Added
verify_price
Oct. 2, 2026, 2:40 a.m.
Added
compute_price
Oct. 2, 2026, 2:40 a.m.
Added
pricing_conversation
Oct. 2, 2026, 2:40 a.m.