원클릭으로
search-model
Search OpenRouter API for AI models and get pricing/capability details for model-reference.md
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Search OpenRouter API for AI models and get pricing/capability details for model-reference.md
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | search-model |
| description | Search OpenRouter API for AI models and get pricing/capability details for model-reference.md |
Search the OpenRouter API for AI models and retrieve detailed information including pricing, context length, and capabilities. Use this to research models before adding them to docs/model-reference.md.
curl -s https://openrouter.ai/api/v1/models | jq '.'
This returns a JSON object with a data array containing all available models.
# Search by provider (e.g., anthropic, openai, google)
curl -s https://openrouter.ai/api/v1/models | jq '.data[] | select(.id | contains("anthropic"))'
# Search by model name (e.g., claude, gpt, gemini)
curl -s https://openrouter.ai/api/v1/models | jq '.data[] | select(.id | contains("claude"))'
# Get specific model by exact ID
curl -s https://openrouter.ai/api/v1/models | jq '.data[] | select(.id == "anthropic/claude-opus-4.5")'
For each model, the API returns:
{
"id": "anthropic/claude-opus-4.5",
"name": "Claude Opus 4.5",
"description": "Anthropic's most capable model...",
"context_length": 200000,
"pricing": {
"prompt": "0.000015", // Price per token (input)
"completion": "0.000075" // Price per token (output)
},
"top_provider": {
"context_length": 200000,
"is_moderated": false
}
}
Convert per-token pricing to per-1M tokens for documentation:
# Get model and calculate pricing
MODEL_ID="anthropic/claude-opus-4.5"
curl -s https://openrouter.ai/api/v1/models | jq --arg id "$MODEL_ID" '
.data[]
| select(.id == $id)
| {
id: .id,
name: .name,
description: .description,
context_length: .context_length,
pricing_per_1m: {
input: (.pricing.prompt | tonumber * 1000000),
output: (.pricing.completion | tonumber * 1000000)
}
}
'
# Compare all Claude 4.5 models
curl -s https://openrouter.ai/api/v1/models | jq '
[.data[] | select(.id | contains("claude") and contains("4.5"))]
| map({
id: .id,
name: .name,
input_per_1m: (.pricing.prompt | tonumber * 1000000),
output_per_1m: (.pricing.completion | tonumber * 1000000),
context: .context_length
})
| sort_by(.input_per_1m)
'
When you find a model to add, format it like this:
### openrouter:provider/model-name
**Name:** Model Display Name
**Description:** [1-2 sentences about the model's strengths]
**Typical cost:** ~$X.XX per 1M input tokens, ~$X.XX per 1M output tokens
**When to use:**
- Use case 1
- Use case 2
- Use case 3
**Use instead of:** `older-model-1`, `older-model-2`
Note: OpenRouter uses simple version numbers (e.g., claude-sonnet-4.5), NOT date-suffixed versions (e.g., claude-sonnet-4-20250514).
Find all Claude models with pricing:
curl -s https://openrouter.ai/api/v1/models | jq '
[.data[] | select(.id | contains("anthropic/claude"))]
| map({
id: .id,
name: .name,
input_per_1m: ((.pricing.prompt | tonumber) * 1000000 | round),
output_per_1m: ((.pricing.completion | tonumber) * 1000000 | round)
})
| sort_by(.input_per_1m)
'
Get details for a specific model:
MODEL="anthropic/claude-opus-4.5"
curl -s https://openrouter.ai/api/v1/models | jq --arg m "$MODEL" '
.data[]
| select(.id == $m)
| {
id,
name,
description,
context: .context_length,
"pricing (per 1M tokens)": {
input: ((.pricing.prompt | tonumber) * 1000000),
output: ((.pricing.completion | tonumber) * 1000000)
}
}
'
Compare OpenAI vs Claude pricing:
curl -s https://openrouter.ai/api/v1/models | jq '
[.data[] | select(.id | test("openai/gpt-4|anthropic/claude-.*-4"))]
| map({
id: .id,
input_cost: ((.pricing.prompt | tonumber) * 1000000 | round),
output_cost: ((.pricing.completion | tonumber) * 1000000 | round)
})
| sort_by(.input_cost)
'
Finding the cheapest Claude model:
curl -s https://openrouter.ai/api/v1/models | jq '
[.data[] | select(.id | contains("anthropic/claude-"))]
| sort_by(.pricing.prompt | tonumber)
| first
| {id, name, input_per_1m: ((.pricing.prompt | tonumber) * 1000000)}
'
Checking if a model exists:
MODEL="anthropic/claude-opus-4.5"
curl -s https://openrouter.ai/api/v1/models | jq --arg m "$MODEL" '
.data[] | select(.id == $m) | .id
'
Finding all embedding models:
curl -s https://openrouter.ai/api/v1/models | jq '
[.data[] | select(.id | contains("embedding"))]
| map({id, name, pricing: .pricing})
'
Save results to file if doing multiple queries:
curl -s https://openrouter.ai/api/v1/models > /tmp/openrouter-models.json
cat /tmp/openrouter-models.json | jq '.data[] | select(.id | contains("claude"))'
Check model availability before adding to model-reference.md
Round pricing to 2 decimal places for readability:
jq '(.pricing.prompt | tonumber * 1000000 * 100 | round / 100)'
Model ID format in model-reference.md is always openrouter:provider/model-name
anthropic/claude-opus-4.5)docs/model-reference.md using the format aboveKeep the Threa Pi remote-control extension in `extensions/pi-remote/` aligned with the current Pi extension API and Threa bot-runtime public API. Use when asked to update, verify, sync, or troubleshoot the Pi remote plugin, `/remote-control`, or `threa-remote.ts`.
Create a well-structured pull request with proper description, design decisions, and file changes. Use when asked to create a PR, open a PR, or submit changes for review.
Call Threa's public REST API (send/list/search/update/delete messages, list streams/users/members, search memos/attachments) with curl or a Bun script. Use when asked to post messages to a stream, seed a stream with test data, drive the API from automation, dedupe by metadata, inspect a production workspace (streams, messages, members) for troubleshooting, or otherwise hit https://staging.threa.io / https://app.threa.io endpoints with an API key. Reads from production should use the read-only prod key.
Rewrite user-facing copy (marketing pages, docs, headings, UI microcopy, READMEs, PR descriptions) to strip AI-slop and salesy tone, leaving plain, understated, factual prose. Use when asked to "deslopify", "deslop", "remove the AI slop", "make this less salesy/less AI-sounding", "make the copy plainer", or when reviewing copy for slop tells.
Run multi-perspective code review on a PR or the local branch
Write a session handover doc for the next agent picking up this line of work. Use when asked to "write a handover", "hand over", "handoff doc", or at the end of a session whose work continues in a future session.