GPUvec developer access
Read-only public accelerator data and real planning calculations. No account, API key, Exa subscription or Google API is needed.
MCP for AI agents
Streamable HTTP endpoint: https://gpuvec.com/mcp (no trailing slash). Uses the official MCP Python SDK v2; no custom JSON-RPC imitation or legacy SSE endpoint. Add it as a remote HTTP server in your MCP host.
VS Code: save this as .vscode/mcp.json, then start the GPUvec server from the MCP server list. Other hosts have different configuration formats: choose HTTP / Streamable HTTP, not stdio. Claude's remote custom-connector UI accepts https://gpuvec.com/mcp directly.
{
"servers": {
"gpuvec": {
"type": "http",
"url": "https://gpuvec.com/mcp"
}
}
} Official Python client: install mcp>=2.3.0,<3, then run:
import asyncio
from mcp import Client
async def main():
async with Client("https://gpuvec.com/mcp") as client:
tools = await client.list_tools()
print(tools)
result = await client.call_tool("find_offers", {"model": "RTX 4090", "limit": 5})
print(result.structured_content)
asyncio.run(main()) For local testing replace the URL with http://127.0.0.1:5001/mcp (or your actual bound port). Production and loopback Hosts are allowlisted; an untrusted Host returns 421 and an untrusted Origin returns 403. Non-browser clients omit Origin. Cross-origin browser access is limited to GPUvec and loopback development origins; no wildcard credentials are accepted.
Tools and bounds
- list_accelerators: search and manufacturer filters; get_accelerator: exact model name or canonical slug.
- compare_accelerators: models array containing 2–4 distinct exact model names or slugs; no invented benchmark ranking.
- find_offers: exact model and provider filters, source_backed_only=true by default. false includes explicitly unverified historical records.
- list_providers: independent provider directory, with search/limit/offset. Recorded regions do not establish headquarters country; that field remains null.
- compute_capability: search plus known/unknown/not_cuda status and segment/capability filters; not a driver or framework compatibility guarantee.
- estimate_qdrant: shared capacity engine including Turbo formats, quantized memory tiers and explicit billing_hours; pricing_quote_id selects a dated managed Cloud quote or custom (default). Returns period_cost_usd, not a fixed-month invoice.
- list_qdrant_pricing: exact provider/region filters with limit/offset; 39 paid CPU configurations in three regions plus a constrained single-node free tier. Quote IDs, resources, checked_at and exclusions are included.
- List endpoints use limit=1..50 (default 20), offset=0..10000. Text is at most 120 characters; query at most 2048 bytes; JSON/MCP body at most 16 KiB. Unknown arguments are rejected.
- No SQL, arbitrary URL fetching, filesystem access, private user data, writes, credentials or paid search API calls are exposed.
Public JSON API
The same implementation powers MCP and these JSON endpoints. Responses use api_version and data (plus pagination when applicable); errors use api_version and error with a stable code and message. GET is read-only; Qdrant POST calculates without storing inputs. Use explicit true/false for boolean query values.
Offer filters (also find_offers tool arguments): max_price_per_gpu_hour and max_instance_price_per_hour are inclusive USD/hour ceilings; min_gpu_count is a whole number from 1 to 1,000,000; min_vram_per_gpu and min_vram_total are inclusive GB floors. Decimal filters must be finite values from 0 to 1,000,000,000. Omit optional numeric filters rather than sending null in a URL.
All supplied filters are ANDed. Numeric filters exclude unknown values, even when the threshold is zero. Instance price requires a documented instance-hour rate, or a documented GPU-hour rate and known GPU count. VRAM per GPU/total uses the documented vram_unit; conversion between scopes requires known GPU count. Unknown scopes never pass memory filters. Unavailable offers have no normalized comparable price.
billing_model is a case-insensitive substring of the recorded billing text, not an inferred ON_DEMAND/SPOT classification. availability accepts available, unavailable, waitlist, coming_soon or unknown (omit for all); it describes recorded status, never current stock. sort accepts price_per_gpu_hour (default), -price_per_gpu_hour, instance_price_per_hour or -instance_price_per_hour; minus means descending and unknown comparable prices are always last. Sorting and filtering happen before pagination.
JSON errors: 422 invalid_arguments for unknown parameters, duplicates (except repeated comparison models), out-of-range/non-finite numbers or invalid enums; 404 not_found for unknown exact models or routes; 405 method_not_allowed; 413 request_too_large; 415 unsupported_media_type. MCP rejects invalid tool arguments with protocol error -32602. No price-history series, market medians, headquarters-country or inferred interconnect filter is exposed: the catalogue does not establish those facts.
curl 'https://gpuvec.com/api/v1'
curl 'https://gpuvec.com/api/v1/accelerators?manufacturer=AMD&limit=5'
curl 'https://gpuvec.com/api/v1/accelerators/rtx-4090'
curl 'https://gpuvec.com/api/v1/compare?models=RTX%204090&models=H100'
curl 'https://gpuvec.com/api/v1/offers?model=H100&limit=5'
curl 'https://gpuvec.com/api/v1/providers?limit=20'
curl 'https://gpuvec.com/api/v1/offers?model=H100&max_price_per_gpu_hour=3&min_vram_per_gpu=80&sort=price_per_gpu_hour'
curl 'https://gpuvec.com/api/v1/offers?source_backed_only=false&min_gpu_count=4&min_vram_total=320&max_instance_price_per_hour=20&sort=-instance_price_per_hour'
curl 'https://gpuvec.com/api/v1/compute-capability?search=RTX%204090'
curl 'https://gpuvec.com/api/v1/qdrant-pricing?provider=aws®ion=us-east-1'
curl -X POST 'https://gpuvec.com/api/v1/qdrant-estimate' \
-H 'Content-Type: application/json' \
-d '{"num_points":1000000,"num_vectors":1000000,"dimensions":768}' Qdrant Cloud cost example: POST qdrant-estimate with pricing_quote_id='aws:us-east-1:mx2', nodes=3, replication=2, shards=4 and billing_hours=732. A chosen Cloud snapshot overrides hourly_per_node; custom rates remain separate. Resource fit checks modeled RAM/disk only, never CPU/QPS or a deployment recommendation. Rates are dated, nonbinding and exclude additional disk, storage upgrades, backups, paid inference and taxes.
Cold memory working-set budgets default to zero, not a guaranteed percentage saving. Raw sparse storage is disk-only; sparse_bytes_per_nonzero is an explicit sizing assumption. Quantization adds a copy; native Turbo datatypes change original storage. Version requirements and encoding-overhead exclusions are documented on the calculator.
Units, sources and unknowns
Specification memory is MiB, bandwidth GB/s, power W and clocks MHz. Offer prices are USD with an explicit GPU-hour, instance-hour or unknown billing unit; recorded VRAM has a separate scope. A normalized per-GPU price exists only when the original unit and any required GPU count are documented. Availability is not live inventory. Source review is not verification of every historical price.
Responses retain canonical public page URLs, source URLs, review/verification dates, verified_fields, unverified_fields and unknown_fields. Null means unknown; not zero. Source verification applies only to listed fields and specific model variants. Qdrant payload_kb and indexed_payload_kb mean KiB per unique point; results are estimates in bytes, not measured capacity or hardware recommendations.
MCP is not search indexing
MCP lets an agent deliberately call tools. Search engines and Exa discover ordinary public HTML and HTTP links; they do not automatically use MCP, and this API does not force indexing or rankings. Human-readable canonical pages remain the primary search documents. No paid search API integration is required to read this data.
Accelerator catalogue · Compute capability reference · GPU comparison · Qdrant calculator · Data methodology