Agents vs skills vs MCP servers — which one do I publish?
A practical decision guide. The three primitives sound similar but solve different problems; this is how to pick.
The three primitives
Amitte's registry surfaces three things publishers can ship:
- Skills — playbooks an agent reads and runs.
- Agents — actual model-backed callables that take inputs and produce outputs.
- MCP servers — tool surfaces an agent connects to over the Model Context Protocol.
These get conflated constantly. Here's a clean way to choose between them.
Decide by what the consumer holds at the end
| You publish a... | Consumer holds... | Consumer runs... |
|---|---|---|
| Skill | A markdown file with steps | Whatever agent they already have |
| Agent | An invocation contract | Your model + your prompt + their input |
| MCP server | A connection URL | A tool list mounted into their existing agent |
If the consumer's agent does the work itself, you publish a skill. If the consumer wants to delegate the work to your model logic, you publish an agent. If the consumer wants to expose tools to their own model, you publish an MCP server.
A worked example
Say you want to make "release notes from a list of PRs" available.
- Skill — an SKILL.md that walks the user's agent through reading the PR list, grouping by category, and writing notes. Lightweight, works with any model the user has.
- Agent — a hosted endpoint that takes a list of PR URLs and returns the rendered notes. You own the prompt + model choice.
- MCP server — a tool called
render_release_notes(prs: string[])the user wires into their existing agent.
All three are valid. The skill version costs the consumer their own tokens; the agent version costs you the inference; the MCP version sits in the middle.
Bundle when it's natural
You don't have to pick one. The registry supports publishing all
three under a single repo via the bundle wizard at /publish/bundle.
A coherent bundle looks like:
- Skill: the playbook + verification steps.
- Agent: a turnkey callable for users who don't want to wire an LLM.
- MCP server: tools the user can mount in their own agent.
Cross-link them in the manifest's dependencies[] so the registry
graphs the relationships on the detail page.