{"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"search_models","title":"Search models","description":"Find the exact id of an LLM tracked by InferIndex from a name or partial name (e.g. 'deepseek', 'qwen3 max', 'claude opus'). Returns matching model ids and names, best match first.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Model name or part of it"}},"required":["query"],"additionalProperties":false},"annotations":{"title":"Search models","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cheapest","title":"Cheapest offers for a model","description":"Cheapest current API offers for one model across direct providers and aggregators, in USD per 1M tokens (input, output, blended 3:1). Stale prices, and flex/batch tiers, are excluded by default. Optional filters (context, tools, JSON, vision, region, no training on prompts, open sign-up) and usage (tokens per request, requests per day) to get an estimated cost per request and per month. Returns the winner in detail and one short line per following offer. A condition that is absent was not published by the provider, it never means \"no\"; a flag not listed in signals is false.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."},"min_context":{"type":"integer","description":"Minimum context window in tokens","minimum":0},"tools":{"type":"boolean","description":"Only offers that support tool calling"},"json":{"type":"boolean","description":"Only offers that support JSON output"},"vision":{"type":"boolean","description":"Only offers that accept image input"},"region":{"type":"string","description":"Only providers that process data in this region: eu, us, …"},"no_training":{"type":"boolean","description":"Only providers whose published terms say they do not train on your prompts"},"no_waitlist":{"type":"boolean","description":"Only providers with open sign-up (no waitlist, invitation or country restriction)"},"strict":{"type":"boolean","description":"Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged)"},"include_tiers":{"type":"string","description":"Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default)"},"prompt_tokens":{"type":"integer","description":"Input tokens per request, for the estimated cost","minimum":0},"output_tokens":{"type":"integer","description":"Output tokens per request, for the estimated cost","minimum":0},"cached_ratio":{"type":"number","minimum":0,"maximum":1,"description":"Share of input tokens served from the provider's prompt cache (0 to 1)"},"requests_per_day":{"type":"integer","description":"Requests per day, to also get an estimated monthly cost","minimum":0},"limit":{"type":"integer","description":"Number of offers to return, winner included (default 5, max 25)","minimum":1,"maximum":25},"detail":{"type":"string","enum":["compact","full"],"description":"compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer"}},"required":["model"],"additionalProperties":false},"annotations":{"title":"Cheapest offers for a model","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"compare_providers","title":"Compare providers for a model","description":"Current offers for one model, one line per provider and source (direct or via an aggregator), cheapest first (10 by default), with price, quantization, signals and training on prompts when published; the cheapest offer comes in detail. Pass detail: \"full\" for context, every published condition (data regions, sign-up) and reliability from official status pages on each offer.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."},"sort":{"type":"string","enum":["blended","input","output","estimated_cost"],"description":"Sort order: default blended (3:1 mix), or estimated_cost (the cost of your load) when prompt_tokens or output_tokens is given; estimated_cost needs one of them"},"limit":{"type":"integer","description":"Number of offers to return, cheapest included (default 10, max 50)","minimum":1,"maximum":50},"detail":{"type":"string","enum":["compact","full"],"description":"compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer"},"region":{"type":"string","description":"Only providers that process data in this region: eu, us, …"},"no_training":{"type":"boolean","description":"Only providers whose published terms say they do not train on your prompts"},"no_waitlist":{"type":"boolean","description":"Only providers with open sign-up (no waitlist, invitation or country restriction)"},"strict":{"type":"boolean","description":"Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged)"},"include_tiers":{"type":"string","description":"Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default)"},"prompt_tokens":{"type":"integer","description":"Input tokens per request, for the estimated cost","minimum":0},"output_tokens":{"type":"integer","description":"Output tokens per request, for the estimated cost","minimum":0},"cached_ratio":{"type":"number","minimum":0,"maximum":1,"description":"Share of input tokens served from the provider's prompt cache (0 to 1)"},"requests_per_day":{"type":"integer","description":"Requests per day, to also get an estimated monthly cost","minimum":0}},"required":["model"],"additionalProperties":false},"annotations":{"title":"Compare providers for a model","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"price_history","title":"Price history of a model","description":"Price history of one model: every offer tracked by InferIndex (daily or weekly min/max/last price in USD, or raw price changes), plus the official price of the model's lab over time. Give either days, or from/to (YYYY-MM-DD), or at (a date) for the prices in effect that day.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."},"days":{"type":"integer","description":"Number of days back from today (default 7)","minimum":1},"from":{"type":"string","description":"Start date, YYYY-MM-DD (with to, instead of days)"},"to":{"type":"string","description":"End date, YYYY-MM-DD"},"at":{"type":"string","description":"A single date, YYYY-MM-DD: prices in effect that day"},"granularity":{"type":"string","enum":["day","week","raw"],"description":"day (default), week, or raw price changes"},"provider":{"type":"string","description":"Only this provider"},"limit":{"type":"integer","description":"Maximum number of points (default 100, max 500)","minimum":1,"maximum":500}},"required":["model"],"additionalProperties":false},"annotations":{"title":"Price history of a model","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"estimate_cost","title":"Estimate the cost of a workload","description":"Estimated cost of a workload on one model at each provider: cost per request, and per month if requests_per_day is given, taking the provider's tiered pricing and prompt-cache price into account. Offers sorted by estimated cost, cheapest first: the cheapest in detail, then one short line per offer with its estimated cost.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."},"prompt_tokens":{"type":"integer","description":"Input tokens per request, for the estimated cost","minimum":0},"output_tokens":{"type":"integer","description":"Output tokens per request, for the estimated cost","minimum":0},"cached_ratio":{"type":"number","minimum":0,"maximum":1,"description":"Share of input tokens served from the provider's prompt cache (0 to 1)"},"requests_per_day":{"type":"integer","description":"Requests per day, to also get an estimated monthly cost","minimum":0},"limit":{"type":"integer","description":"Number of offers to return, cheapest included (default 5, max 25)","minimum":1,"maximum":25},"detail":{"type":"string","enum":["compact","full"],"description":"compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer"}},"required":["model"],"additionalProperties":false},"annotations":{"title":"Estimate the cost of a workload","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"provider_ranking","title":"Providers ranked by price gap","description":"Providers ranked by how far below or above the market their prices are: each provider's median gap to the market, in percent (score_pct, negative when below the market), where the market of a model is the median blended 3:1 price of its providers, counted only on models with at least min_providers comparable providers (models_measured). Also the number of models where the provider holds the offer the cheapest tool would select (cheapest_count). Ranked from min_models models measured; refreshed every hour.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Providers ranked by price gap","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_gpus","title":"GPU types tracked for rental prices","description":"GPU types whose rental price InferIndex tracks (H100, A100, L40S…), with the lowest price per GPU per hour in USD for each tier (guaranteed, community, spot) and the number of GPUs of that configuration. Prices are per GPU per hour, as published by each provider, and dated. Tiers are different products and are never compared with each other.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"GPU types tracked for rental prices","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"gpu_rentals","title":"Rental offers for one GPU, by tier","description":"Rental offers for one GPU type: provider, price in USD per GPU per hour, number of GPUs in the published configuration, billing and region when published. One block per tier (guaranteed, community, spot), each with its own cheapest offer, also given per configuration (cheapest_by_gpu_count: the price per GPU of a single GPU and of a multi-GPU node are not comparable); tiers are never compared with each other. guaranteed: capacity the provider presents as not interrupted; community: third-party hosts; spot: interruptible capacity. Prices are as published by the provider, and dated. Get the GPU id from list_gpus.","inputSchema":{"type":"object","properties":{"gpu":{"type":"string","description":"GPU id from list_gpus, for example h100-sxm-80gb"},"tier":{"type":"string","enum":["guaranteed","community","spot"],"description":"Only this tier (default: one block per tier)"},"gpu_count":{"type":"integer","description":"Only this published configuration: 1, 2, 4, 8 or 16 GPUs","minimum":1,"maximum":16},"region":{"type":"string","description":"Only this region, as published by the provider"},"detail":{"type":"string","enum":["compact","full"],"description":"compact (default): the 3 cheapest offers of each tier. full: up to 50 offers per tier"}},"required":["gpu"],"additionalProperties":false},"annotations":{"title":"Rental offers for one GPU, by tier","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"self_host_or_api","title":"Self-host an open model or use the API?","description":"Is it cheaper to host an open-weights model yourself on rented GPUs, or to use the cheapest API offer? Returns a one-sentence verdict (headline) and the numbers behind it: the break-even volume in million tokens per day, the throughput the whole configuration must deliver for self-hosting to cost less (required_tokens_per_second: compare it with what your setup does), the break-even utilization when a throughput is known, the GPU configuration and its hourly price, and what the verdict rests on (confidence). Without a volume you still get the verdict and the break-even volume. It is an estimate: the throughput is a published measurement (measured), an estimate scaled from one (derived; estimated for a wide range), or a published minimum (lower_bound: a floor, valid for requests of up to 2,048 tokens in total, that can show self-hosting wins, never that the API is cheaper); or you give your own tokens_per_second. When no published figure decides, the headline gives the break-even volume and the required throughput, to compare with yours, rather than a yes or no, and may point out a dearer setup that published figures do decide (settled_alternative: for comparison, not a recommendation). headline_kind and headline_values give the headline as fields. It declines to give a number (status refused, with a reason) when it cannot do so reliably, for example a closed model, weights that do not fit the requested GPU, or a GPU nobody rents. Hardware rental only: the hourly price the provider publishes for the machine. It does not count the engineering to deploy and run the model, monitoring, redundancy, start-up time, or storage and network costs billed separately.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."},"tokens_per_day":{"type":"integer","description":"Your volume in tokens per day (input and output together). Or give requests_per_day, prompt_tokens and output_tokens","minimum":1},"requests_per_day":{"type":"integer","description":"Requests per day (with prompt_tokens and output_tokens)","minimum":1},"prompt_tokens":{"type":"integer","description":"Input tokens per request","minimum":1},"output_tokens":{"type":"integer","description":"Output tokens per request","minimum":1},"utilization":{"type":"number","minimum":1,"maximum":100,"description":"Average share of time the GPUs serve requests, in percent (default 50)"},"tokens_per_second":{"type":"number","minimum":1,"description":"Your own measured throughput for the whole configuration, input and output tokens together, instead of our estimate"},"weights_margin":{"type":"integer","minimum":50,"maximum":95,"description":"Percent of the GPU memory the model weights may fill (default 70; the rest is the engine reserve and the context cache)"},"gpu":{"type":"string","description":"Impose a GPU: id from list_gpus, for example h100-sxm-80gb"},"gpu_count":{"type":"integer","description":"Impose a number of GPUs: 1, 2, 4, 8 or 16","minimum":1,"maximum":16},"quantization":{"type":"string","enum":["fp16","bf16","fp8","int8","fp4","int4"],"description":"Precision of the weights (default fp8); must be published by at least one provider unless fp16 or bf16"},"tier":{"type":"string","enum":["guaranteed","community","spot"],"description":"GPU rental tier (default guaranteed)"},"detail":{"type":"string","enum":["compact","full"],"description":"compact (default): verdict, headline and key numbers. full: also the three throughput scenarios, the model and every assumption"}},"required":["model"],"additionalProperties":false},"annotations":{"title":"Self-host an open model or use the API?","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}]}}