Skip to main content
Glama

mcp-sales-intel

A production-shaped MCP server that turns any marketplace into competitive intelligence.

Scout live Fiverr gigs, analyse pricing bands and competition, and get a data-anchored package-price ladder — all through natural language from Claude, Cursor, or any MCP client.

This is the reference implementation I use to demonstrate MCP server work: real external data, bounded inputs, structured errors, caching, and both stdio and streamable-HTTP transports. Zero secrets required.


Why this exists

Most Fiverr MCP gigs ship a demo server that returns hardcoded JSON. This one actually scrapes, actually parses, actually computes. It's the difference between "here's a server" and "here's a server that works on Monday."

Related MCP server: BizIntel MCP Server

Tools

Tool

What it does

list_gigs

Scrape live Fiverr search results → title, seller, rating, reviews, entry price, URL. Filter by price/rating.

analyse_market

Pricing bands, review distribution, and an explicit "open market" verdict from raw page markdown.

price_gig

A Basic/Standard/Premium ladder anchored to observed medians — not vibes.

Quick start

# stdio (works with Claude Desktop, Cursor, Hermes, mcporter)
uv run mcp-sales-intel

# streamable HTTP (for shared/remote deployments)
MCP_TRANSPORT=streamable-http uv run mcp-sales-intel

Wire it into an MCP client

claude_desktop_config.json / Cursor mcp.json:

{
  "mcpServers": {
    "sales-intel": {
      "command": "uv",
      "args": ["run", "--directory", "/abs/path/to/mcp-sales-intel", "mcp-sales-intel"]
    }
  }
}

Requirements

  • Python 3.12+

  • mcp Python SDK 2.x (note: FastMCP was renamed MCPServer in 2.0)

  • firecrawl CLI on PATH — only for live scraping. The other two tools work without it.

Example

"Analyse the mcp server development market and price my gig."

The agent calls list_gigs, feeds the result to analyse_market, then price_gig, and returns a real ladder with the reasoning attached.

Design notes

  • Bounded inputs. Query length and max_results are clamped; bad ranges return a structured error instead of raising.

  • 30-minute cache per query, LRU-evicted, so repeated agent calls don't re-scrape and burn credits.

  • Honest failures. Missing CLI, timeouts, non-zero exits, and layout drift all return {"error": ..., "gigs": []} rather than fabricating results.

License

MIT

Available Tools

3 tools
analyse_marketAnalyse a market from scraped markdownA

Take raw Fiverr search-page markdown (as a string) and compute pricing bands, review-count distribution and an 'open market' verdict — i.e. how reachable a new seller is. Use for competitive analysis without re-scraping.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYes
open_market_review_thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the whole burden; it usefully discloses that input must be Fiverr search-page markdown and that output is derived analysis ('how reachable a new seller is'), and that it does no scraping. It does not say how malformed/partial markdown is handled, whether the computation is deterministic, or how the threshold influences the verdict, leaving gaps for a tool with no annotation coverage.

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?

Two sentences, no filler, with the input requirement, the computed outputs, and the intended use all front-loaded. Every clause earns its place.

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

Completeness4/5

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 explanation, and the description covers purpose, input expectations and usage context. The one meaningful omission is the review-threshold parameter's role in the verdict, but otherwise the definition is complete for a low-complexity, side-effect-free analysis tool.

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

Parameters3/5

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

Schema coverage is 0% and the description rescues one of two parameters by specifying the expected content and format of 'markdown' (raw scraped Fiverr search-page markdown as a string), which the bare 'string' schema does not convey. The second parameter, open_market_review_threshold, is entirely unexplained despite directly shaping the 'open market' verdict, so compensation is only partial.

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?

States a concrete verb and resource ('Take raw Fiverr search-page markdown ... compute pricing bands, review-count distribution and an open market verdict') and names its outputs, so an agent knows exactly what it produces. Sibling differentiation is only implied ('without re-scraping' hints it does not fetch, unlike list_gigs/price_gig) rather than stated, which keeps it short of a 5.

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

Usage Guidelines3/5

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

'Use for competitive analysis without re-scraping' gives a clear context and a reason to prefer this over re-fetching, which is implied guidance. It never names the sibling tools as alternatives or states when not to use it (e.g. when you have no markdown yet), so usage remains inferred rather than explicit.

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

list_gigsList gigs in a categoryB

Scrape live Fiverr search results for a query and return gig cards with title, seller, rating, review count, entry price and URL. Use this to scout what sellers are actually offering and charging.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_priceNo
min_priceNo
min_ratingNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden alone. It usefully discloses that results are scraped live (implying fresh, network-dependent, non-deterministic data) and what each card contains, but says nothing about rate limits, rate-limit/blocking risk, auth needs, or pagination behavior for a 5-parameter scrape.

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?

Two tight sentences with the operation front-loaded and the returned fields listed compactly. No filler, though it spends words on return contents that the output schema already covers.

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?

An output schema exists, so return-value explanation is not strictly needed, and the call signature is simple. But with 0% parameter documentation and no annotations, the definition leaves an agent guessing about filter semantics and scrape behavior (limits, failures) it must handle.

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?

Schema description coverage is 0% across 5 parameters, so the description must compensate and it does not. It never explains the query syntax, the units/scope of max_price and min_price (entry price?), min_rating's scale, or what max_results does when more matches exist.

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?

States a specific verb+resource ('Scrape live Fiverr search results ... return gig cards') and enumerates the returned fields, so the operation is unambiguous. It does not differentiate itself from siblings like price_gig or analyse_market, whose scopes could plausibly overlap with 'scouting what sellers are charging'.

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

Usage Guidelines3/5

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

'Use this to scout what sellers are actually offering and charging' hints at intent (market reconnaissance) but gives no when-to-use boundaries, no prerequisites, and no guidance on when to prefer price_gig or analyse_market over this search-based listing.

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

price_gigRecommend a gig price ladderB

Given a set of gigs (or a market query), recommend a three-tier Basic/Standard/Premium package ladder with prices anchored to observed medians.

ParametersJSON Schema
NameRequiredDescriptionDefault
gigsNo
queryNo
floor_usdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It does disclose a genuine behavioral trait beyond the schema — that prices are anchored to observed medians rather than invented — and the operation is implicitly a safe read. It omits any note on determinism, whether results are advisory only, or how unspecified/both-input cases are resolved.

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?

A single front-loaded sentence that states the output artifact and the pricing basis with no filler. Every clause carries information.

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?

The presence of an output schema means return structure need not be restated, which lowers the bar. Still, with three undocumented parameters, no annotations covering the safety profile, and unstated interaction between gigs/query, an agent lacks enough to call this confidently in edge cases.

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?

Schema description coverage is 0% and the description addresses only two of the three params loosely ('set of gigs', 'market query'). floor_usd, which materially changes the recommendation and defaults to 25, is never explained, nor is the precedence or exclusivity between gigs and query when both are supplied.

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 names a specific verb+resource: it recommends a three-tier Basic/Standard/Premium price ladder with medians as the anchor. That is far more informative than the bare tool name, though it never differentiates itself from siblings list_gigs and analyse_market, which plausibly feed it.

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

Usage Guidelines3/5

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

The parenthetical 'a set of gigs (or a market query)' tells the agent the two input paths, which is implicit routing guidance toward list_gigs output or analyse_market output. It does not state when to prefer this tool over analyse_market, nor when not to call it.

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. 3 tool updatesv0.1.0
    • First observedanalyse_market
    • First observedlist_gigs
    • First observedprice_gig

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

The three tools target clearly distinct actions: scraping live gigs, analyzing supplied market markdown, and generating a pricing ladder. Their descriptions make boundaries explicit, so an agent should not confuse list_gigs with analyse_market or price_gig.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern: list_gigs, analyse_market, price_gig. The convention is predictable and readable throughout.

Tool Count4/5

Three tools cover the core scrape-analyze-price workflow without redundancy, which is well-scoped for a niche sales-intel server. It is slightly lean, but each tool earns its place.

Completeness3/5

The surface covers scraping, analysis, and pricing, but there is a notable gap: analyse_market requires raw Fiverr search-page markdown while list_gigs only returns structured gig cards, leaving no direct tool path to obtain that input. Additional gaps include seller-level detail and historical tracking, though the main workflow is partially covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to perform real-time business intelligence tasks including competitive analysis, website scoring, review analysis, and market research.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform real-time market research including competitor analysis, pricing intelligence, and company overviews via live web search through Tavily API.
    -
  • F
    license
    B
    quality
    C
    maintenance
    Enables AI-powered competitor pricing analysis by scraping LLM inference pricing websites via Firecrawl, storing the data in SQLite, and answering cost comparison queries through natural language.
    2
    -