Skip to main content
Glama
aadilr

CostBench MCP Server

by aadilr

CostBench MCP Server

Verified software-pricing intelligence for any MCP client — true costs, hidden fees, negotiation data, price history, side-by-side comparisons, a dated price-change feed, and total cost of ownership for 3,390+ products. Read-only, free, no API key, no signup.

Powered by CostBench.com. Every figure the server returns carries its source and date — the data is only as trustworthy as its provenance, so CostBench publishes the provenance with each number. Responses include an attribution field and per-entity links back to the sourced page.

Tools

Tool

Description

get_pricing

Full sourced pricing record for a product: tiers, hidden costs, contract terms, market data, sentiment, negotiation tips, TCO scenarios, and price history — each claim with its sources. Args: slug, optional depth (summary|full).

get_hidden_costs

The documented hidden / implementation / add-on costs (uplifts, onboarding fees, overages), each with a sourced quote + date. Args: slug.

get_negotiation_tips

Sourced negotiation tactics with success-likelihood. Args: slug.

get_price_history

Per-quarter price snapshots + trend — has the price changed? Args: slug.

compare_software

Side-by-side pricing for 2–4 products (starting price, median annual cost, free tier, ratings). Args: slugs (array).

discover_software

Find products by category, maxPrice, hasFreeTier. Returns matching slugs to look up.

calculate_tco

Total cost of ownership for a product and team size: sourced line items, year-one + multi-year totals, effective per-seat cost. Args: slug, seats, optional tier, termYears.

estimate_llm_cost

Cost of an LLM/API workload (input + output tokens) for a usage-priced provider, from its real rate card. Args: slug, inputTokens, outputTokens, optional model.

get_price_changes

Recent pricing changes CostBench detected against vendor pricing pages — dated, before/after bands, source link. Args: optional slug, category, days (default 30), limit (default 25). Same data as the public feed at https://costbench.com/data/pricing-changes.json.

All tools are read-only (readOnlyHint: true). Products are addressed by slug (e.g. salesforce, microsoft-teams, openai-api); use discover_software if you don't know one.

Related MCP server: Shortlist Price Index MCP

The server is hosted at https://costbench.com/mcp using streamable HTTP transport (MCP spec 2025-03-26). If your client supports remote MCP servers, point it straight at the endpoint:

{
  "mcpServers": {
    "costbench": {
      "type": "streamable-http",
      "url": "https://costbench.com/mcp"
    }
  }
}

Claude Code:

claude mcp add --transport http costbench https://costbench.com/mcp

Option 2 — Local stdio server (this package)

For clients that only speak stdio, this package bridges stdio ↔ the hosted endpoint:

{
  "mcpServers": {
    "costbench": {
      "command": "npx",
      "args": ["-y", "github:aadilr/costbench-mcp"]
    }
  }
}

Or clone and run directly:

git clone https://github.com/aadilr/costbench-mcp.git
cd costbench-mcp
npm install
node index.js

Option 3 — Agent Skill / Claude Code plugin

This repo doubles as an Agent Skill and Claude Code plugin.

Any skills-capable agent (Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, and more):

npx skills add aadilr/costbench-mcp

Claude Code plugin (bundles the MCP server + the skill):

/plugin marketplace add aadilr/costbench-mcp
/plugin install costbench@costbench

The software-pricing skill prefers the MCP tools when connected and otherwise falls back to a bundled script (skills/software-pricing/scripts/pricing.sh) that talks to the hosted endpoint over plain HTTPS — no MCP client required.

Option 4 — Docker

docker build -t costbench-mcp .
docker run -i --rm costbench-mcp

Quick test

# List the tools
curl -X POST https://costbench.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# Get pricing for a product
curl -X POST https://costbench.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_pricing","arguments":{"slug":"salesforce","depth":"summary"}}}'

The get_pricing call above returns a record like:

{
  "slug": "salesforce",
  "name": "Salesforce",
  "category": { "slug": "crm", "name": "CRM" },
  "priceRange": { "low": 0, "median": 100, "high": 550, "currency": "USD" },
  "priceUnit": "user/month",
  "tiers": [
    { "name": "Starter Suite", "priceMonthly": 25, "priceAnnual": 300, "priceUnit": "user/month" },
    { "name": "Pro Suite", "priceMonthly": 100, "priceAnnual": 1200, "priceUnit": "user/month" }
  ],
  "attribution": "Source: CostBench (https://costbench.com) — verified, sourced software pricing intelligence."
}

What's in the data

Products

3,390+

Categories

255

Comparisons

5,850+

Coverage

Tiers, hidden costs, contract terms, negotiation data, price history, TCO, LLM rate cards

Each field carries a license marker (owned | restricted): CostBench's own sourced research is owned; a small number of third-party market-data medians are restricted — surfaceable to a user but not licensed for commercial redistribution.

Environment variables

Variable

Default

Purpose

COSTBENCH_MCP_URL

https://costbench.com/mcp

Override the upstream endpoint

Privacy & limits

  • No authentication or account required. All tools are read-only — the server never writes anything.

  • Per-IP rate limiting: 60 requests/minute.

  • Data is sourced and dated; cite the links.page URL a response returns, not the bare number.

License

MIT

Available Tools

2 tools
get_hidden_costsA
Read-only
Inspect

The documented hidden/implementation/add-on costs of a product (uplifts, onboarding fees, overages), each with a sourced quote + date. The "what they don't tell you" answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe-read nature is covered. The description adds that results include sourced quotes and dates, which is useful, but it does not disclose operational details like update frequency, data limitations, or pagination. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the essential purpose and examples, and closes with a clarifying tagline. Every word earns its place; there is no fluff or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one parameter and no output schema, the description explains the return concept (costs with sourced quote/date) but leaves the only required parameter undocumented and does not clarify the response shape or any constraints. It is minimally viable but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'slug' with no description, and the tool description does not compensate. The phrase 'of a product' weakly implies slug identifies a product, but the expected format, source, or possible values are entirely left unspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as hidden/implementation/add-on costs, with concrete examples (uplifts, onboarding fees, overages) and a memorable tagline. This distinguishes it from sibling tools like get_pricing and get_price_history, which cover standard pricing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear context: use this tool when you need the costs that are not readily advertised. It does not explicitly name alternatives or provide when-not-to-use guidance, but the scope is distinct enough to imply separation from general pricing and historical price tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_negotiation_tipsC
Read-only
Inspect

Sourced negotiation tactics for a product with success-likelihood (how to get a discount).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so read-only behavior is covered. The description adds that tips are 'sourced' and include 'success-likelihood', giving some extra context about the output. However, it does not clarify the response structure or what the success-likelihood metric represents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, short and to the point. The phrasing is slightly awkward but it remains concise and front-loaded with the core idea.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is one parameter, no output schema, and sparse annotations, the description is incomplete. It fails to document the 'slug' parameter or describe what the returned negotiation tips and success-likelihood look like, leaving the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter 'slug' with zero description coverage. The description mentions 'for a product', which vaguely implies slug identifies a product, but it does not explicitly define the parameter or its expected format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states that the tool provides negotiation tactics for a product, including success-likelihood and how to get a discount. This clearly indicates the tool's function. It doesn't explicitly differentiate from siblings, but the tool name itself is fairly distinctive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like get_price_history or get_pricing. There is no context about use cases or exclusions.

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.

  1. 2 tool updatesv0.1.0
    • First observedget_hidden_costs
    • First observedget_negotiation_tips

TDQS

A3.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one surfaces hidden costs, the other provides negotiation tactics. There is no overlap in functionality.

Naming Consistency5/5

Both tools follow a consistent 'get_' prefix with descriptive noun phrases ('hidden_costs', 'negotiation_tips'), forming a clear and predictable pattern.

Tool Count3/5

Only two tools is minimalist but reasonable for a highly specialized server focused on cost revelation and negotiation tips. However, the narrow scope may limit usability in broader cost analysis workflows.

Completeness3/5

The tools cover two key aspects of cost benchmarking—hidden costs and negotiation—but lack potentially important operations like listing products, comparing prices, or tracking cost changes over time.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Inject real-time leaked B2B SaaS pricing, historical discounts, and aggressive negotiation playbooks directly into AI agents.
    1
    5 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A dated log of SaaS price changes across 494 tools: old price, new price and verification date for every move, plus category-level pulse and the biggest recorded increases.
    21 npm
    2
    MIT