Skip to main content
Glama
John-Eke11
by John-Eke11
README.md
# PriceScout

PriceScout is an AI-powered chatbot that researches and tracks LLM inference pricing across providers. It scrapes provider pricing pages with Firecrawl, uses Claude to pull out structured pricing data, and stores everything in a local SQLite database so it can answer pricing questions and comparisons without re-scraping every time.

Providers currently covered:

- **cloudrift** — https://www.cloudrift.ai/inference
- **deepinfra** — https://deepinfra.com/pricing
- **fireworks** — https://fireworks.ai/pricing#serverless-pricing
- **groq** — https://groq.com/pricing

## How it works

- `server.py` is an MCP server (built with FastMCP) exposing two tools: `scrape_websites`, which pulls pricing pages via Firecrawl and caches the results under `scraped_content/`, and `extract_scraped_info`, which looks up previously scraped content by provider name, URL, or domain.
- `client.py` is the chat client. It connects to the pricing server plus an MCP SQLite server and an MCP filesystem server, routes each query through Claude with tool access, and — whenever a response contains pricing details — asks Claude to extract structured plan data and writes it into the `pricing_plans` table.
- `server_config.json` wires up the three MCP servers (`llm_inference`, `sqlite`, `filesystem`) that the client connects to.

## Setup

1. Create a virtual environment with `uv` and sync dependencies: `uv sync`
2. Add an Anthropic API key and a Firecrawl API key to `.env` (`ANTHROPIC_API_KEY`, `FIRECRAWL_API_KEY`)
3. Run the client: `uv run client.py`

## Usage

Once running, ask things like:

- "How much does cloudrift ai (https://www.cloudrift.ai/inference) charge for deepseek v3?"
- "How much does deepinfra (https://deepinfra.com/pricing) charge for deepseek v3?"
- "Compare cloudrift ai and deepinfra's costs for deepseek v3"

Type `show data` at any point to see recently stored pricing entries, or `quit` to exit.

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation4/5

The two tools have distinct roles: one collects and stores scraped content, the other retrieves information by identifier. Some potential confusion exists because 'extract' could imply scraping, but the descriptions clarify the separation.

Naming Consistency5/5

Both tool names use lowercase snake_case with a clear verb-first pattern (extract_scraped_info, scrape_websites), making them consistent and descriptive.

Tool Count3/5

Only two tools is minimal for a service, but they cover a focused scrape-and-query workflow. It is slightly below the typical well-scoped range.

Completeness4/5

The workflow is functional: scrape_websites returns provider names and extract_scraped_info retrieves details. List/delete/update operations are missing but not essential for the apparent basic price-scout purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues