Tools reference
Idlerate exposes five MCP tools on https://relay.idlerate.dev/mcp. Every call needs a bearer key with the matching scope (see Keys).
Typical flow: list_models → run_model → get_status (with wait_ms) → get_result. Use cancel to stop a queued or running job.
list_models
List Ollama models on each paired machine.
Scope: models:list
Arguments: none
Returns:
| Field | Meaning |
|---|---|
models |
Flat list of models (each includes which device it came from when you have more than one machine) |
machines |
One entry per paired machine: device_id, name, platform, status, paused, connected, stale, models, optional GPU fields, pause_reason |
stale |
true when none of your machines are connected |
device_connected |
true when at least one machine is connected |
run_model
Queue a model run. Returns immediately with a job id; it does not wait for the GPU.
Scope: models:run
| Argument | Required | Notes |
|---|---|---|
model |
yes | Ollama model name, for example qwen2.5:7b |
prompt |
yes | User prompt (max about 1,000,000 bytes) |
system |
no | Optional system prompt |
options |
no | Optional Ollama sampler options object |
machine |
no | Device id or exact machine name. Omit to pick a free machine of yours that has the model. A shared machine is used only if you pass its id here or turn on Auto overflow to shared machines (off by default). Sharing is rolling out to accounts over the first weeks |
Returns (structured): job_id, status (usually queued), device_id, machine, device_paused, pause_reason.
If device_paused is true, the job stays queued until that machine is free again.
Your account needs an active trial or plan to run jobs. Otherwise the tool returns subscription_required.
get_status
Read a job. Optionally wait until it finishes.
Scope: jobs:read
| Argument | Required | Notes |
|---|---|---|
job_id |
yes | From run_model |
wait_ms |
no | How long to wait for a terminal status. 0 (default) returns immediately. Max 25000. Call again to keep waiting |
Terminal statuses: succeeded, failed, cancelled.
Returns (among other fields): job_id, status, device_id, machine, device_paused, pause_reason, queue_position, error, partial (tail of the latest output, at most 8192 characters), output_bytes, timestamps.
partial is a preview only. Use get_result for the full answer after success.
get_result
Return one page of model output for a finished job (succeeded). Errors if the job is not done yet.
Scope: jobs:read
| Argument | Required | Notes |
|---|---|---|
job_id |
yes | |
offset |
no | Byte offset into the result. Default 0 |
length |
no | Max bytes to return. Default 100000, max 100000 |
Returns: job_id, status, output, truncated (true while more pages remain), total_bytes / result_bytes, next_offset, done.
When done is false, call again with offset set to next_offset until done is true.
cancel
Cancel a queued or running job. If Ollama already started, the PC stops that request.
Scope: jobs:cancel
| Argument | Required |
|---|---|
job_id |
yes |
Returns: job_id and status (typically cancelled).
Tips
- Prefer
get_statuswithwait_ms: 25000over tight polling. - Pass
machinewhen you care which PC runs the job; omit it when any free machine of yours with that model is fine. - To run one job on a shared machine, pass that machine’s id as
machine. Sharing is rolling out to accounts over the first weeks. This runs on another member’s PC. Don’t send anything private. - Large answers come back in pages — always follow
next_offsetuntildone.