Skip to main content
kRouter
All posts
How kRouter works

kRouter Agent Skills: one link teaches an agent an endpoint

kRouter ships 8 Agent Skills: Markdown files an AI agent reads to call chat, TTS, STT, images, embeddings, web search and fetch on your own router.

Kodelyth · The team behind kRouter
· Updated
6 min read

If you use Claude Code, Aider, or any terminal-based AI agent, you have probably wished it could do more than just edit files. What if your agent could also generate speech audio, run web searches, create embeddings for your RAG pipeline, or generate images -- all through the same local endpoint?

kRouter makes this possible with Agent Skills.

What Is a Skill?

A Skill is a Markdown file in the kRouter GitHub repository that describes one group of kRouter's API endpoints. It includes the endpoint URL, how authentication works, how to discover the available models, the request fields, working examples, the response shape, and each provider's quirks.

When you hand an agent that file's URL, it reads the description and calls the endpoint the way the file says. No SDK installation. No hand-written API documentation. One URL, and the agent has what it needs.

Two things have to be true for that to work: the agent must be able to fetch a URL (Claude Code can), and the capability has to be backed by a provider you have connected in kRouter. A skill teaches the agent how to ask; it does not add a TTS or search provider by itself.

The 8 Skills

kRouter ships 8 skills: one entry skill and seven capability skills.

SkillEndpointWhat It DoesExample providers
krouter (Entry)--Setup, auth, model discovery, links to the other sevenAll
krouter-chat/v1/chat/completions, /v1/messagesChat and code generation, OpenAI or Anthropic formatClaude, GPT, Gemini, GLM, Kimi, Qwen
krouter-tts/v1/audio/speechText-to-speech audioOpenAI, ElevenLabs, Edge TTS, Google TTS, Deepgram
krouter-stt/v1/audio/transcriptionsSpeech-to-text transcriptionOpenAI Whisper, Groq, Gemini, Deepgram, AssemblyAI
krouter-image/v1/images/generationsImage generationOpenAI, Gemini, FLUX, MiniMax, SD WebUI
krouter-embeddings/v1/embeddingsVector embeddings for RAGOpenAI, Gemini, Mistral, Voyage, Jina
krouter-web-search/v1/searchWeb search resultsTavily, Exa, Brave, Serper, SearXNG
krouter-web-fetch/v1/web/fetchA URL as Markdown, text or HTMLFirecrawl, Jina Reader, Tavily, Exa

There is no skill for video yet. The /v1/videos endpoints exist, but only for xAI's Grok Imagine -- see the video post.

Detailed Skill Examples

The examples below run on the same machine as kRouter, so they need no API key unless you have switched on Require API key. From another machine, add -H "Authorization: Bearer <your-krouter-key>", using a key from the dashboard's Endpoint page. Every model is a provider/model id; GET /v1/models/tts (or stt, image, embedding, web) lists the ones your connected providers offer.

krouter-chat: Chat and Code Generation

The most commonly used skill. Your agent sends a standard OpenAI chat completion request to localhost:20128 and kRouter routes it to an account of the provider you named, picking the healthiest one with the Zenith engine.

curl http://localhost:20128/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cc/claude-sonnet-4-6",
    "messages": [{"role": "user", "content": "Explain quicksort in Python"}]
  }'

krouter-tts: Text-to-Speech

Generate audio from text with any of the TTS providers kRouter supports -- 15 in the current catalog, including a few that need no key at all, such as Edge TTS. The voice is part of the model id: openai/tts-1/nova means OpenAI's tts-1 model with the nova voice. See the TTS routing guide for voice mapping details.

curl http://localhost:20128/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model":"openai/tts-1/nova","input":"Hello from kRouter"}' \
  --output hello.mp3

krouter-stt: Speech-to-Text

Upload an audio file and get a transcript. The request uses the OpenAI Whisper format whichever STT provider answers it.

curl http://localhost:20128/v1/audio/transcriptions \
  -F "file=@meeting.mp3" \
  -F "model=openai/whisper-1"

krouter-embeddings: Vector Embeddings

Generate embeddings for RAG pipelines, semantic search, or clustering. Same OpenAI SDK interface, routed to whichever embedding provider you name.

curl http://localhost:20128/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{"model":"openai/text-embedding-3-small","input":"kRouter is an AI router"}'

krouter-web-search and krouter-web-fetch

These two skills give your agent access to the live web. web-search returns search results. web-fetch takes a URL and returns its content as Markdown by default -- useful for feeding documentation pages into an agent's context. For both, the provider is the model, and the request fails with "Missing required field" if you leave it out.

# Web search
curl http://localhost:20128/v1/search \
  -H "Content-Type: application/json" \
  -d '{"model":"tavily","query":"kRouter installation guide"}'
 
# Web fetch (URL to Markdown)
curl http://localhost:20128/v1/web/fetch \
  -H "Content-Type: application/json" \
  -d '{"model":"jina-reader","url":"https://docs.example.com/api"}'

How to Use Skills in Claude Code

Feed the raw GitHub URL of any skill to Claude Code as part of your prompt:

claude "Read this skill and use it to generate a podcast intro: \
  https://raw.githubusercontent.com/sifxprime/krouter/refs/heads/main/skills/krouter-tts/SKILL.md"

Claude fetches the skill, works out the /v1/audio/speech request from it, calls localhost:20128, and saves the .mp3 to your working directory. No SDK installation, and no key to manage for local calls.

If you are not sure which skill fits, give the agent the entry skill (skills/krouter/SKILL.md) instead. It covers setup and links to the other seven, so the agent can fetch the one it needs.

Chaining Skills in Multi-Step Workflows

The real power comes from chaining multiple skills. Here is a concrete agentic workflow:

  1. Agent reads krouter-web-search skill -> searches for "latest React 19 breaking changes"
  2. Agent reads krouter-web-fetch skill -> fetches the top 3 results as clean Markdown
  3. Agent reads krouter-chat skill -> summarizes the findings into a migration guide
  4. Agent reads krouter-tts skill -> generates an audio briefing of the summary

Each step uses a different kRouter endpoint, but the agent needs zero custom integration code. It reads the skill files and calls the endpoints.

What changed in this post

An earlier version of this post described a krouter mcp command that runs kRouter as an MCP server and exposes every endpoint as a tool. That command does not exist: the krouter CLI has no subcommands, and krouter mcp exits with "Unknown option: mcp". kRouter does have a small MCP bridge, but it only serves a few preset MCP servers to Claude Cowork; it does not turn kRouter's own endpoints into MCP tools. Skills are the way to teach an agent those endpoints.

Where to Find Skills

Open your local kRouter dashboard at http://localhost:20128/dashboard and choose Skills in the sidebar. The page starts with a ready-made line to paste into your agent ("Read this skill and use it: ..."), then lists each skill with a Copy link button. That link is the URL you give your agent.

Or browse them directly on GitHub: github.com/sifxprime/krouter/tree/main/skills.

The links point at the repository's main branch, so they always describe the latest kRouter. If you run an older version, a skill can mention a field or model your install does not have yet.

Common questions

Do I need an API key for skills?

Not for calls from the same machine: kRouter exempts local callers unless you switch on Require API key on the Endpoint page or set REQUIRE_API_KEY=true. Calls from another machine always need a key, sent as Authorization: Bearer <key>.

Do skills work with agents other than Claude Code?

Yes. A skill is plain Markdown. Any agent that can fetch a URL and make HTTP requests can use it -- Cursor, Codex, a custom SDK agent, or a chat assistant with web access.

Why does a search or fetch request come back with "Missing required field"?

Those two endpoints need a provider in the model (or provider) field, such as "model": "tavily". Chat, TTS, STT and embeddings take a provider/model id instead.

Is there a skill for video generation?

Not yet. kRouter's /v1/videos endpoints work with xAI's Grok Imagine, but none of the eight skills covers them.

Get Started

Install kRouter, then connect at least one provider for each capability you want your agent to use:

npm install -g @sifxprime/krouter
krouter -t

See Multimodal & Agent Skills for the media endpoints, the API reference for every route, and the changelog for the latest skill additions.

Kodelyth · The team behind kRouter

Published by Kodelyth, the team that builds kRouter. Posts are drafted with AI assistance and reviewed by a person before they go out. kRouter is free and MIT licensed.

Install kRouter