Daily prices, stock and measured LLM speeds for local AI computers and graphics cards.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Which tracked machines can run an open model (4-bit weights fit in memory), cheapest first, with measured tok/s where someone has published a result. Use list_models for ids.
Model id or name, e.g. gpt-oss-120b or Qwen3 Coder 30B A3B.
Default 20.
us = prices in USD, eu = prices in EUR. Default us.
Highest price in the region's currency.
Only machines with a published speed for this model.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http localaiprices https://localaiprices.com/mcp
Which tracked machines can run an open model (4-bit weights fit in memory), cheapest first, with measured tok/s where someone has published a result. Use list_models for ids.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 20. |
| model* | string | Model id or name, e.g. gpt-oss-120b or Qwen3 Coder 30B A3B. |
| region | string | us = prices in USD, eu = prices in EUR. Default us. |
| max_price | number | Highest price in the region's currency. |
| measured_only | boolean | Only machines with a published speed for this model. |
{
"type": "object",
"required": [
"model"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Default 20."
},
"model": {
"type": "string",
"description": "Model id or name, e.g. gpt-oss-120b or Qwen3 Coder 30B A3B."
},
"region": {
"enum": [
"us",
"eu"
],
"type": "string",
"description": "us = prices in USD, eu = prices in EUR. Default us."
},
"max_price": {
"type": "number",
"description": "Highest price in the region's currency."
},
"measured_only": {
"type": "boolean",
"description": "Only machines with a published speed for this model."
}
}
}One machine in full by id (from search_machines) or page URL: price per store with stock and check time, price history summary, every published speed result with its source, and value.
| Argument | Type | Description |
|---|---|---|
| id* | string | Machine id, e.g. framework-desktop-128, or its localaiprices.com/p/<id>/ URL. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Machine id, e.g. framework-desktop-128, or its localaiprices.com/p/<id>/ URL."
}
}
}Price drops, price rises, restocks and newly tracked machines, newest first. Set since to a timestamp and only later changes come back; reuse next_since from the reply for the next call. Prices are checked once a day.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 50. |
| since | string | ISO date or time; only changes after it. Omit for all. |
| types | array | Only these kinds of change. |
| machine | string | Only changes for this machine id. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Default 50."
},
"since": {
"type": "string",
"description": "ISO date or time; only changes after it. Omit for all."
},
"types": {
"type": "array",
"items": {
"enum": [
"price_drop",
"price_rise",
"back_in_stock",
"out_of_stock",
"new_machine"
],
"type": "string"
},
"description": "Only these kinds of change."
},
"machine": {
"type": "string",
"description": "Only changes for this machine id."
}
}
}The open models we track: id, size, memory needed at 4-bit and 8-bit, how many machines fit each and how many have a measured speed, and the page URL.
No arguments.
{
"type": "object",
"properties": {}
}Find local AI computers and graphics cards by budget, memory and type. Returns price, measured tok/s, value (tok/s per 1,000 of currency), when the price was checked, and the page URL. Prices are checked once a day.
| Argument | Type | Description |
|---|---|---|
| kind | string | machine = complete computer, gpu-card = graphics card only (needs a PC). Default any. |
| sort | string | value = tok/s per 1,000 (default), price = cheapest first, speed = fastest first. |
| limit | integer | Default 10. |
| region | string | us = prices in USD, eu = prices in EUR. Default us. |
| benchmark | string | Speed to use: small = Llama-2 7B Q4_0 (default, most results), large = gpt-oss-120b (needs 64GB+). |
| max_price | number | Highest price in the region's currency. |
| in_stock_only | boolean | Leave out machines a store reports as out of stock. |
| min_memory_gb | number | Least memory (unified memory or VRAM) in GB, e.g. 128. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
{
"type": "object",
"properties": {
"kind": {
"enum": [
"machine",
"gpu-card",
"any"
],
"type": "string",
"description": "machine = complete computer, gpu-card = graphics card only (needs a PC). Default any."
},
"sort": {
"enum": [
"value",
"price",
"speed"
],
"type": "string",
"description": "value = tok/s per 1,000 (default), price = cheapest first, speed = fastest first."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Default 10."
},
"region": {
"enum": [
"us",
"eu"
],
"type": "string",
"description": "us = prices in USD, eu = prices in EUR. Default us."
},
"benchmark": {
"enum": [
"small",
"large"
],
"type": "string",
"description": "Speed to use: small = Llama-2 7B Q4_0 (default, most results), large = gpt-oss-120b (needs 64GB+)."
},
"max_price": {
"type": "number",
"description": "Highest price in the region's currency."
},
"in_stock_only": {
"type": "boolean",
"description": "Leave out machines a store reports as out of stock."
},
"min_memory_gb": {
"type": "number",
"description": "Least memory (unified memory or VRAM) in GB, e.g. 128."
}
}
}