Dynamic Pricing & Overbooking MCP
Server Details
Set prices and booking limits by demand to fill capacity profitably
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
The two tools have clearly distinct roles: revenue_optimizer performs the analysis for normal-sized inputs, while revenue_optimizer_get_engine is explicitly a large-data/sandbox fallback that returns a Python script. The size thresholds in the description make the boundary unambiguous.
Both names use snake_case and share the revenue_optimizer prefix, so they are predictable as a pair. However, the base name is a noun phrase rather than a verb_noun action, and get_engine slightly undersells that it generates a full script.
Two tools is thin for a domain with this much surface area, and the main tool bundles pricing, elasticity, protection levels, overbooking, and forecasting into one call. The large-data fallback is a sensible second tool, but the set still feels borderline under-segmented.
The surface covers the core domain well: forecasting, price optimization, elasticity, protection levels, overbooking limits, show-rate estimation, and a large-data escape hatch. Minor gaps remain around scenario comparison or explicit result retrieval, but no critical workflow dead end is apparent.
Available Tools
2 toolsrevenue_optimizerDynamic Pricing, Booking Pace, Protection Levels & OverbookingARead-onlyInspect
Yield management for perishable capacity (hotel rooms, seats, tickets, rentals, slots, covers). From products (capacity, sold, days to the date, price, floor/ceiling) and optional bookings (stay/event date, lead time or booking date, status, class, price, segment), price history (date, price, units), fare classes (fare, demand still to come) and show history it returns: booking pace vs comparable past dates and an additive-pickup forecast with range; the price now maximising expected contribution within a band (demand from pickup x price response); price elasticity by log-log regression with confidence interval, refusing flat-price or demand-driven histories, pooled across products; Littlewood / EMSR-a / EMSR-b protection levels and booking limits with the exact optimal levels and expected revenue vs first-come-first-served; overbooking limit (binomial shows) with the chance of turning anyone away, show rates by segment with Beta-Binomial shrinkage, never for critical clinic types. Recommendations only. Decision cards first. Up to 500 products / 20,000 bookings; larger: revenue_optimizer_get_engine.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Plan date YYYY-MM-DD (default: latest booking date). | |
| bookings | No | product, stay/event date, booking_date or lead_time, status, cancel date, class, price, segment, units. | |
| capacity | No | Capacity for fare classes without a product row. | |
| currency | No | INR | |
| industry | No | hotel | |
| products | No | One row per product and date: product, capacity, sold, days_out or stay/event date, price; optional price_floor, price_ceiling, unit_cost, segment, show_rate, denied_cost, no_show_fee, critical, elasticity, expected_remaining_demand. | |
| denied_cost | No | Cost of turning one customer away (walk / bump / compensation). | |
| fare_classes | No | product, class, fare, mean_demand, sd_demand (demand still to come); capacity on the row or via `capacity` when no product row. | |
| show_history | No | segment, booked, showed. | |
| price_history | No | product, date, price, units sold. | |
| pace_alert_pct | No | ||
| currency_symbol | No | ||
| max_denied_prob | No | ||
| max_overbook_pct | No | ||
| min_price_points | No | ||
| default_elasticity | No | Only an explicit user assumption; flagged as assumed. | |
| count_cancellations | No | Count cancellations as no-shows (for limits set far ahead). | |
| max_products_listed | No | ||
| allow_price_increase | No | Default true; false for clinics. | |
| max_price_change_pct | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| alerts | No | |
| status | Yes | 1 = ok, 0 = nothing could be planned |
| message | No | |
| summary | No | |
| metadata | Yes | |
| products | No | |
| decisions | Yes | Plain-language cards, priority order. Relay these first. |
| elasticity | No | |
| protection | No | |
| show_rates | No | |
| assumptions | No | |
| data_quality_report | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and non-destructive annotations already present, the description adds substantial behavioral context: recommendations only, decision cards first, refusal on flat-price or demand-driven histories, pooled elasticity, and no overbooking for critical clinic types. These are meaningful constraints and caveats beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by input data, outputs, constraints, and the sibling alternative. The description is dense and includes long run-on clauses, but most of the density is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 20-parameter tool with an output schema and read-only annotations, the description covers the analytical outputs, input data shapes, scale limits, and important refusal cases. It is not exhaustive on every tuning parameter, but the schema and output schema fill those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the main data inputs (products, bookings, price history, fare classes, show history) and their key fields, which helps beyond the 55% schema coverage. However, many control parameters such as pace_alert_pct, max_denied_prob, min_price_points, count_cancellations, and max_price_change_pct are not explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific domain (yield management for perishable capacity) and enumerates the concrete outputs: pace forecasts, optimal price, elasticity, protection levels, and overbooking limits. It also distinguishes the sibling by directing larger datasets to revenue_optimizer_get_engine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context across hotel, airline, event, rental, restaurant, clinic, and other perishable-capacity settings, plus an explicit alternative at the 500-product/20,000-booking threshold. It does not describe when not to use the tool beyond that scale cutoff and the clinic caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revenue_optimizer_get_engineRevenue Optimizer — Get Engine Script (large histories)ARead-onlyInspect
For more than 500 products, 20,000 bookings or 5,000 price-history rows, or any such file already in your code sandbox. Returns a complete numpy-only Python script with the same engine as revenue_optimizer; it reads products, fare classes, price history, bookings and show history, prints the decision cards and one line per product, and writes everything to revenue_plan.json. No booking data reaches this server on this path.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | Other inputs exactly as revenue_optimizer takes them (industry, as_of ...). | |
| bookings_path | No | Optional bookings / reservations export. | |
| products_path | No | Products file (CSV/TSV/JSON). | |
| fare_classes_path | No | Optional fare classes file. | |
| show_history_path | No | Optional show-up history file. | |
| price_history_path | No | Optional price / units history file. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| paths | No | |
| script | Yes | |
| language | No | |
| requires | No | |
| writes_file | No | |
| instructions | Yes | |
| engine_version | Yes | |
| scipy_required | No | |
| data_requirements | No | |
| network_access_required | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by disclosing the privacy-relevant fact that no booking data reaches the server on this path, that the output is generated code (not computed results), and that the script writes revenue_plan.json and prints decision cards plus one line per product. These are exactly the side effects and trust considerations an agent needs before choosing this route.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the size threshold that drives the routing decision, followed by output description and the data-privacy note. No filler and no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no further explanation, and the description still summarizes them. Combined with the explicit invocation thresholds, sandbox-write behavior and no-upload guarantee, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each path parameter is already documented in the schema, so the baseline is 3. The description adds only that the engine reads products, fare classes, price history, bookings and show history, which largely restates the schema and says nothing about what 'params' must contain or what happens when optional paths are omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and deliverable: it returns a complete numpy-only Python script running the same engine as revenue_optimizer. The opening threshold clause immediately distinguishes it from its only sibling, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete, numeric selection criteria (>500 products, >20,000 bookings, >5,000 price-history rows, or data already resident in the sandbox) and names the sibling that shares the engine, implying the in-server path for smaller payloads. The when-to-use condition is unambiguous rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
revenue_optimizer - First observed
revenue_optimizer_get_engine
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.