Koskamo

Veqen MCP

Veqen provides MCP servers for AI cost monitoring and protection. The public server offers read-only access to model prices without sign-in, while the ledger server allows agents to query spend, manage budgets, reconcile bills, and protect against stolen keys using OAuth or API keys.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Veqen MCP logo, by VeqenCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Veqen
You need:OAuth (you pick the organization), or a full-access API keyno sign-in
MCP endpoint (Streamable HTTP)
https://veqen-app.com/mcp/prices
Vendor documentation

What you can do with it

  • Query AI spend by feature, model, or customer
  • Estimate costs for switching models or workloads
  • Manage budgets and credits for teams
  • Shut off stolen provider keys and claim refunds

Source and maintenance

Community listingRegistry 2.0.0

Protocol and capabilities

Server
veqen-prices 2.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Veqen's public price book for AI models from labs, open-model hosts, clouds and media providers: per-million-token rates including cache reads and writes, batch and priority tiers, long-context tiers and retirement dates, and per-unit rates for image, video, speech, transcription, rerank and OCR models. Amounts are USD.

Tools

4 advertised

get_model_price — Get a model's price
Advertised by the server during the last successful anonymous check.
Advertised read-only

Rates for one model of any kind. Token rates are USD per million tokens: input (in), output (out), cache read (cr), cache write (cw, cw1h) and audio (ain, aout), with batch, priority and long-context tiers. Models billed per image, second, character, query or page have a unit rate (unit), and may have size, quality or resolution variants (v:...).

get_model_price input schema
{
  "type": "object",
  "title": "get_model_priceArguments",
  "required": [
    "model"
  ],
  "properties": {
    "model": {
      "type": "string",
      "title": "Model",
      "maxLength": 200,
      "description": "Model id as you'd pass it to the API: gpt-4o-mini, Qwen/Qwen3.5-9B, fal-ai/flux/dev"
    },
    "provider": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ],
      "title": "Provider",
      "default": null,
      "description": "Provider key, such as openai, together, bedrock, fal or deepgram"
    }
  }
}
get_model_price output schema
{
  "type": "object",
  "title": "get_model_priceDictOutput",
  "additionalProperties": true
}
get_model_price annotations
{
  "title": "Get a model's price",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_models — Compare models on cost
Advertised by the server during the last successful anonymous check.
Advertised read-only

Cost of the same call on several models, per call and per month: tokens for text, embedding and realtime models, units (images, seconds, characters, queries or pages) for the rest.

compare_models input schema
{
  "type": "object",
  "title": "compare_modelsArguments",
  "required": [
    "models"
  ],
  "properties": {
    "units": {
      "type": "number",
      "title": "Units",
      "default": 0,
      "minimum": 0,
      "description": "Images, seconds of audio or video, characters, queries or pages per call"
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "title": "Models",
      "maxItems": 10,
      "minItems": 1
    },
    "variant": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ],
      "title": "Variant",
      "default": null,
      "description": "Image quality and size (high/1024x1024) or video resolution (1080p)"
    },
    "input_tokens": {
      "type": "integer",
      "title": "Input Tokens",
      "default": 0,
      "minimum": 0,
      "description": "Uncached input tokens per call"
    },
    "cached_tokens": {
      "type": "integer",
      "title": "Cached Tokens",
      "default": 0,
      "minimum": 0,
      "description": "Cache-read input tokens per call"
    },
    "output_tokens": {
      "type": "integer",
      "title": "Output Tokens",
      "default": 0,
      "minimum": 0,
      "description": "Output tokens per call, including reasoning"
    },
    "calls_per_month": {
      "type": "integer",
      "title": "Calls Per Month",
      "default": 100000,
      "minimum": 0
    }
  }
}
compare_models output schema
{
  "type": "object",
  "title": "compare_modelsDictOutput",
  "additionalProperties": true
}
compare_models annotations
{
  "title": "Compare models on cost",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_models — List models
Advertised by the server during the last successful anonymous check.
Advertised read-only

Current models in the price book, cheapest first, for one provider or one kind: text, embedding, realtime, image, video, speech, transcription, rerank or ocr.

list_models input schema
{
  "type": "object",
  "title": "list_modelsArguments",
  "properties": {
    "kind": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^(text|embedding|realtime|image|video|speech|transcription|rerank|ocr)$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Kind",
      "default": null
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 50,
      "maximum": 200,
      "minimum": 1
    },
    "provider": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ],
      "title": "Provider",
      "default": null
    },
    "include_retiring": {
      "type": "boolean",
      "title": "Include Retiring",
      "default": false
    }
  }
}
list_models output schema
{
  "type": "object",
  "title": "list_modelsDictOutput",
  "additionalProperties": true
}
list_models annotations
{
  "title": "List models",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
simulate_workload — Simulate a workload
Advertised by the server during the last successful anonymous check.
Advertised read-only

A month of calls across any mix of models, at list prices: each line's cost per call and per month, the total, a projection with monthly growth, where each line ranks among every current model of its kind, the same model on other hosts, and cheaper models from the same provider. Usage is per call.

simulate_workload input schema
{
  "type": "object",
  "$defs": {
    "Line": {
      "type": "object",
      "title": "Line",
      "required": [
        "model"
      ],
      "properties": {
        "batch": {
          "type": "boolean",
          "title": "Batch",
          "default": false
        },
        "calls": {
          "type": "number",
          "title": "Calls",
          "default": 0,
          "maximum": 1000000000000,
          "minimum": 0,
          "description": "Calls a month"
        },
        "label": {
          "type": "string",
          "title": "Label",
          "default": "",
          "maxLength": 80
        },
        "model": {
          "type": "string",
          "title": "Model",
          "maxLength": 200,
          "minLength": 1
        },
        "units": {
          "type": "number",
          "title": "Units",
          "default": 0,
          "maximum": 100000000,
          "minimum": 0,
          "description": "Images, seconds, characters, queries or pages per call"
        },
        "variant": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ],
          "title": "Variant",
          "default": null,
          "description": "Image size and quality, or video resolution"
        },
        "provider": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 32
            },
            {
              "type": "null"
            }
          ],
          "title": "Provider",
          "default": null
        },
        "input_tokens": {
          "type": "integer",
          "title": "Input Tokens",
          "default": 0,
          "maximum": 100000000,
          "minimum": 0,
          "description": "Uncached input tokens per call"
        },
        "cached_tokens": {
          "type": "integer",
          "title": "Cached Tokens",
          "default": 0,
          "maximum": 100000000,
          "minimum": 0
        },
        "output_tokens": {
          "type": "integer",
          "title": "Output Tokens",
          "default": 0,
          "maximum": 100000000,
          "minimum": 0
        },
        "audio_input_tokens": {
          "type": "integer",
          "title": "Audio Input Tokens",
          "default": 0,
          "maximum": 100000000,
          "minimum": 0
        },
        "audio_output_tokens": {
          "type": "integer",
          "title": "Audio Output Tokens",
          "default": 0,
          "maximum": 100000000,
          "minimum": 0
        }
      }
    }
  },
  "title": "simulate_workloadArguments",
  "required": [
    "lines"
  ],
  "properties": {
    "lines": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Line"
      },
      "title": "Lines",
      "maxItems": 25,
      "minItems": 1
    },
    "months": {
      "type": "integer",
      "title": "Months",
      "default": 12,
      "maximum": 36,
      "minimum": 1
    },
    "growth_pct": {
      "type": "number",
      "title": "Growth Pct",
      "default": 0,
      "maximum": 300,
      "minimum": -50,
      "description": "Volume growth, percent a month"
    }
  }
}
simulate_workload output schema
{
  "type": "object",
  "title": "simulate_workloadDictOutput",
  "additionalProperties": true
}
simulate_workload annotations
{
  "title": "Simulate a workload",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
930 ms
95th percentile latency
930 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 930 ms · metadata changed · 4 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http veqen-mcp https://veqen-app.com/mcp/prices

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add veqen-mcp --url https://veqen-app.com/mcp/prices

Cursor

Merge this server into .cursor/mcp.json in your project, then enable veqen-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "veqen-mcp": {
      "url": "https://veqen-app.com/mcp/prices"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "veqen-mcp": {
      "type": "streamableHttp",
      "url": "https://veqen-app.com/mcp/prices",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start veqen-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "veqen-mcp": {
      "type": "http",
      "url": "https://veqen-app.com/mcp/prices"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http veqen-mcp https://veqen-app.com/mcp/prices

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "veqen-mcp": {
      "url": "https://veqen-app.com/mcp/prices"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "veqen-mcp": {
      "serverUrl": "https://veqen-app.com/mcp/prices"
    }
  }
}

Let your agent find its tools

Find servers like Veqen MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.