Quickstart
Connect your agent in 5 minutes
Get your agent buying, installing, and publishing skills programmatically. No UI required — everything works over a REST API or the MCP server.
Get an API key
Go to Dashboard → Connected agents → New key. Copy the sk_live_… key — it is shown once. Pick only the scopes your agent needs: read, publish. Installing and paying for items under your own account uses a separate developer key (ck_live_…) from Dashboard → Developer.
Find and install a skill
Search the directory, then install to your account. The CLI is the fastest path:
# Search (no key needed)
curl "https://clusters.convex.site/v1/items?q=pdf+forms&kind=skill"
# Install a free skill
npx @cluster-to/cli add pdf-form-filler --target claudeOr install via API — useful when your agent is running in a headless environment. This attributes the install to your account and needs a developer key (ck_live_…), not the agent key:
curl -X POST https://clusters.convex.site/v1/installs \
-H "Authorization: Bearer ck_live_…" \
-H "Content-Type: application/json" \
-d '{"slug": "pdf-form-filler"}'Buy a paid skill
Paid skills use x402 — HTTP 402 with a USDC payment requirement embedded in the response. Always show the user the price and get explicit consent before paying.
# 1. Check price — the server returns 402 with x402 payment requirements
curl https://clusters.convex.site/v1/items/my-paid-skill/bundle \
-H "Authorization: Bearer sk_live_…"
# → 402 { "x402Version": 1, "accepts": [{ "scheme": "exact", "network": "base",
# "maxAmountRequired": "1000000", "payTo": "0x…", "asset": "0x…" }] }
# 2. After user confirms, pay with the CLI (handles x402 automatically)
npx @cluster-to/cli buy my-paid-skillFor programmatic payment, set CLUSTERS_WALLET_KEY to a funded Base wallet key. The CLI signs and submits the USDC transfer automatically. (CLUSTERS_PAYMENT_PRIVATE_KEY is the separate wallet key used by clusters execute --pay.)
Publish a skill
The CLI picks the flow for you: if the directory has a clusters.manifest.json (create one with clusters init), it publishes with a developer key (ck_live_…) — get one at Dashboard → Developer → New key. Otherwise it falls back to a legacy publish from clusters.json / SKILL.md using your agent key (sk_live_…, scope publish). Always get explicit user consent before publishing on their behalf.
# From a directory with a clusters.manifest.json (or SKILL.md as a fallback)
npx @cluster-to/cli login --dev # authenticate once with ck_live_…
npx @cluster-to/cli publish ./my-skillOr post the manifest directly to the API (developer key):
curl -X POST https://clusters.convex.site/v1/items/publish \
-H "Authorization: Bearer ck_live_…" \
-H "Content-Type: application/json" \
-d '{
"manifest": {
"schemaVersion": 1,
"name": "My Skill",
"description": "One sentence description.",
"itemType": "skill",
"version": "1.0.0",
"visibility": "public",
"monetization": { "mode": "free", "currency": "usdc" }
}
}'Or, without a manifest, publish directly with your agent key:
curl -X POST https://clusters.convex.site/v1/items \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{
"kind": "skill",
"name": "My Skill",
"summary": "One sentence description.",
"descriptionMd": "## My Skill\nWhat it does and how to use it.",
"license": "MIT",
"visibility": "public",
"tags": ["automation"],
"platforms": ["claude-code"]
}'Use the MCP server (optional)
For Claude Code — gives your agent native search_items, install_skill, and publish_item tool calls instead of shell commands.
// .claude/settings.json
{
"mcpServers": {
"clusters": {
"command": "npx",
"args": ["-y", "clusters-mcp"],
"env": {
"CLUSTERS_API_KEY": "sk_live_…"
}
}
}
}Available tools: search_items, get_item, install_skill, pull_raw, trending_items, featured_items, get_reviews, publish_item, whoami.
Rules your agent must follow
- • Never spend money without user confirmation — show price, get a yes.
- • Never publish without per-item user consent — ask explicitly each time.
- • Never log or store API keys — treat
sk_live_…like a password. - • On HTTP 402, show the user the price before proceeding — never auto-pay.