Developer Quickstart
Register an agent, get an API key, search the registry — four copy-paste commands and you're in. No SDK required.
All requests and responses use JSON. No authentication required for discovery endpoints.
What is Pinakes?
Pinakes is the open registry for AI agents. Any agent — MCP servers, A2A agents, REST APIs, GraphQL services — can register here and be discovered by other agents, orchestrators, and developers.
Registration is open. No account needed. You get an API key when you register your first agent — use it to update or delete that agent later.
Register your first agent
POST your agent's name, endpoint URL, protocols, and capabilities. You'll get back an agent ID and a one-time API key.
curl -X POST https://pinakes.polsia.app/api/agents \
-H "Content-Type: application/json" \
-d '{
"name": "My First Agent",
"description": "Describes what my agent does in one sentence.",
"endpoint_url": "https://my-agent.example.com",
"protocols": ["rest"],
"capabilities": [
{
"name": "process",
"description": "Processes a request and returns a result"
}
],
"tags": ["demo"],
"author": {
"name": "Your Name",
"email": "you@example.com"
}
}'
Successful response:
{
"success": true,
"agent": {
"id": "agt_a1b2c3d4e5f6",
"slug": "my-first-agent",
"name": "My First Agent",
"status": "active",
"trust_score": 5.0,
"protocols": ["rest"],
"capabilities": [...],
"created_at": "2026-03-26T18:00:00.000Z"
},
"api_key": "pk_a1b2c3d4e5f6g7h8i9j0..." // ← save this
}
api_key is shown once and never stored in plaintext. Copy it now — if you lose it, you'll need to delete and re-register your agent.Use your API key
Your api_key from step 1 authenticates write operations — updating or deleting your agent. Pass it as a Bearer token.
curl -X PUT https://pinakes.polsia.app/api/agents/YOUR_AGENT_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"description": "Updated description for my agent.",
"version": "1.1.0"
}'
GET /api/agents, GET /api/agents/:id) are public — no key required. Keys are only needed for write operations on agents you own.Key format
API keys are prefixed with pk_ followed by 64 hex characters. They are stored as SHA-256 hashes — Pinakes never stores the plaintext key after it returns it to you.
Discover agents
Search the registry by keyword, capability, protocol, or tag. No authentication required.
Basic search
curl "https://pinakes.polsia.app/api/agents?q=summarize"
Filter by protocol
curl "https://pinakes.polsia.app/api/agents?protocol=mcp&sort=trust_score"
Filter by capability
curl "https://pinakes.polsia.app/api/agents?capability=summarize&protocol=a2a"
Response:
{
"success": true,
"agents": [
{
"id": "agt_xyz...",
"name": "Document Summarizer",
"description": "Summarizes long documents...",
"trust_score": 8.4,
"protocols": ["a2a", "rest"],
"endpoint_url": "https://summarizer.example.com"
}
],
"total": 1,
"page": 1,
"limit": 20
}
Available query parameters
| Param | Example | Description |
|---|---|---|
q |
summarize | Full-text search across name, description, tags |
protocol |
mcp, a2a, rest | Filter by supported protocol |
capability |
summarize | Filter by capability name |
tag |
nlp | Filter by tag |
sort |
trust_score, created_at | Sort field (default: created_at) |
limit |
20 | Results per page (max 100) |
Check agent details
Fetch a specific agent by ID or slug to get its full profile, capabilities, trust score, and Agent Card.
Get by ID
curl "https://pinakes.polsia.app/api/agents/YOUR_AGENT_ID"
Get by slug
curl "https://pinakes.polsia.app/api/agents/slug/my-first-agent"
Fetch the Agent Card
Agent Cards are the standard JSON representation for A2A and MCP interoperability. Any orchestrator can fetch this to discover what your agent does and how to call it.
curl "https://pinakes.polsia.app/api/agents/YOUR_AGENT_ID/card"
{
"id": "agt_a1b2c3d4e5f6",
"name": "My First Agent",
"url": "https://my-agent.example.com",
"protocols": ["rest"],
"capabilities": [
{
"name": "process",
"description": "Processes a request and returns a result"
}
],
"trust": {
"score": 5.0
},
"_links": {
"self": "/api/agents/agt_a1b2c3d4e5f6",
"card": "/api/agents/agt_a1b2c3d4e5f6/card"
}
}
What's next?
You've got the basics. Here's where to go deeper.