Skip to content

OptimToken

by OptimNow · remote · no sign-in to list tools · v0.4.2 · published by GitHub user OptimNow

Compare LLM API and cloud compute pricing, estimate workload costs, pick a model within budget.

Changes · 2

5 tools: 2 change things and 3 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http ai-pricing-hub https://optimtoken-mcp.optimnow.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

5 tools

Changes things 2Claude Code: ask
  • estimate-llm-costCost a workload with EXACT numbers the caller supplies: arbitrary token counts per request and any monthly volume, not just the 10k/100k/1m presets the other cost tools use.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Cost a workload with EXACT numbers the caller supplies: arbitrary token counts per request and any monthly volume, not just the 10k/100k/1m presets the other cost tools use. Use this for 'about 800 in and 200 out, 4 million calls a month', or to price one named model across every use-case profile. To compare 2-4 named models like for like at a preset volume, use compare-models-side-by-side instead. Provide a model name to get detailed cost breakdowns, or compare costs across all use case presets. Each figure comes twice: list price, and the optimized price achievable with prompt caching and the batch API. Cost figures are final as returned: rounded server-side and dated by `provenance`, with the lever behind each saving, or the reason there is none, named in the text.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • recommend-llm-modelPick a model.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Pick a model. Returns a ranked top 3 for one workload under optional constraints, each with a per-constraint satisfied/violated breakdown as the evidence. Use this when the user wants an ANSWER rather than a table — 'what should I use for support tickets under $500 a month'. To browse or filter the whole catalogue instead, use compare-llm-models. Constraints: (monthly budget, minimum ELO, required capability, self-hostability). Returns a top 3 as structured facts — efficiency rank, ELO, list and optimized cost, FinOps flag, volatility, and a per-constraint satisfied/violated breakdown. When nothing satisfies every constraint the query is reported as over-constrained, `recommendations` is empty, and the nearest misses are returned in `nearMisses` instead, each carrying the constraint it failed and flagged as a miss in the text. The ranking is computed server-side and is final.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 3Claude Code: allow
  • compare-compute-pricingCompare cloud compute instance pricing across AWS, Azure, GCP, DigitalOcean, OCI, OVH, and Alibaba.Reads text others writeNo findings

    Why it is in this group

    • The name "compare-compute-pricing" says "compare": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Compare cloud compute instance pricing across AWS, Azure, GCP, DigitalOcean, OCI, OVH, and Alibaba. Filter by region, provider, vCPUs, memory, category, processor, or use case. All prices are Linux on-demand list prices in USD. Not every price column is live: `provenance.priceTypes` says which of each provider's price columns come from a live API, which are static constants, and which are unavailable, and `provenance.staticPriceColumns` lists the non-live ones outright; a savings-plan or reserved rate that appears there is a static estimate, not a live quote. Prices are returned as the catalogue serves them and dated by `provenance`.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • compare-llm-modelsBrowse and filter the whole LLM catalogue and get back a ranked table: price, quality (ELO), efficiency and capabilities.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "compare-llm-models" says "compare": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "browse" and "table": it reads databases.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Browse and filter the whole LLM catalogue and get back a ranked table: price, quality (ELO), efficiency and capabilities. Use this when the user wants to SEE THE FIELD — 'show me models under $1/1M', 'which providers have vision models', 'list open-weight models above ELO 1300'. For a single PICK under a budget use recommend-llm-model; to weigh 2-4 NAMED models against each other use compare-models-side-by-side. Prices come from optimtoken.optimnow.io where reachable; the response's `provenance` says which tier served them and whether they are vendor-verified. Filter by provider, price tier (category), openness, capability, price range, or minimum ELO score. Optionally enrich with business metrics for a use case. Price tier and openness are independent: a model can be Frontier-priced and open-weight at once. Reports both list-price cost and the optimized cost achievable with prompt caching and the batch API. Prices, costs and scores are final as returned: rounded and ranked server-side, and dated by `provenance`. The text block is a numbered table of the same figures.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • compare-models-side-by-sideCompare 2-4 named LLM models against all 8 use-case profiles at a chosen monthly volume, showing list and optimized cost for each.Reads text others writeNo findings

    Why it is in this group

    • The name "compare-models-side-by-side" says "compare": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Compare 2-4 named LLM models against all 8 use-case profiles at a chosen monthly volume, showing list and optimized cost for each. Use when the user names specific models to weigh against each other, rather than filtering the whole catalogue. If they also supply their own token counts, or a volume outside 10k/100k/1m, use estimate-llm-cost instead. Every name is resolved against the catalogue and the outcome is reported in `resolution` and in the text: a name that matched nothing, matched several models, or duplicated an earlier pick is stated explicitly, and such a name gets no column rather than a zero cost. Prices and costs are final as returned: rounded server-side and dated by `provenance`.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data1
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write5
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 14:53 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
2
Protocol version
2025-06-18
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
none
Authorization servers
none
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • WarnThe whole server

    The endpoint served tools/list without credentials, and the list has 2 tools that change things (2 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://optimtoken-mcp.optimnow.io/mcp: tools/list returned 5 tools to an anonymous client, including estimate-llm-cost (write), recommend-llm-model (write)

    What this check looks for

Install

Pinned to version 0.4.2. Values in angle brackets are yours to fill in.

claude mcp add --transport http ai-pricing-hub https://optimtoken-mcp.optimnow.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__ai-pricing-hub__compare-llm-models",
      "mcp__ai-pricing-hub__compare-models-side-by-side",
      "mcp__ai-pricing-hub__compare-compute-pricing"
    ],
    "ask": [
      "mcp__ai-pricing-hub__estimate-llm-cost",
      "mcp__ai-pricing-hub__recommend-llm-model"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as ai-pricing-hub. Review it before you use it.

Capability tags behind 5 rules
  • mcp__ai-pricing-hub__compare-llm-models private-data, untrusted-input
  • mcp__ai-pricing-hub__estimate-llm-cost untrusted-input
  • mcp__ai-pricing-hub__compare-models-side-by-side untrusted-input
  • mcp__ai-pricing-hub__recommend-llm-model untrusted-input
  • mcp__ai-pricing-hub__compare-compute-pricing untrusted-input