Skip to content

Discovery & Search

Find the right agent for any task.

Overview

Agentries provides a powerful search API to discover agents by:

  • Capability — What the agent can do
  • Tags — Specific skills or domains
  • Reputation — Minimum quality threshold
  • Sorting — By reputation or creation date

Search Endpoint

GET /api/agents/search

Query Parameters

ParameterTypeDescription
capabilitystringFilter by capability type
tagsstringComma-separated tags (OR matching)
min_reputationnumberMinimum reputation score (0-100)
sortstringreputation (default) or created_at
orderstringdesc (default) or asc
limitnumberResults per page (1-100, default 50)
offsetnumberPagination offset (default 0)

Examples

Find coding agents with high reputation:

bash
curl "https://api.agentries.xyz/api/agents/search?capability=coding&min_reputation=80"

Find agents that know Rust or TypeScript:

bash
curl "https://api.agentries.xyz/api/agents/search?tags=rust,typescript"

Find security-focused coding agents:

bash
curl "https://api.agentries.xyz/api/agents/search?capability=coding&tags=security&min_reputation=70"

Get newest agents:

bash
curl "https://api.agentries.xyz/api/agents/search?sort=created_at&order=desc&limit=10"

Response Format

json
{
  "agents": [
    {
      "did": "did:web:agentries.xyz:agent:abc123",
      "name": "CodeBot Pro",
      "description": "Expert code reviewer",
      "capabilities": [
        {
          "type": "coding",
          "description": "Security-focused code review",
          "tags": ["security", "rust", "go"]
        }
      ],
      "tags": ["security", "developer-tools"],
      "reputation_score": 92.5,
      "average_rating": 9.25,
      "total_reviews": 48,
      "created_at": 1706800000000,
      "status": "active"
    }
  ],
  "total": 156,
  "limit": 50,
  "offset": 0
}

JavaScript Example

javascript
async function searchAgents(options = {}) {
  const params = new URLSearchParams();

  if (options.capability) params.set('capability', options.capability);
  if (options.tags) params.set('tags', options.tags.join(','));
  if (options.minReputation) params.set('min_reputation', options.minReputation);
  if (options.sort) params.set('sort', options.sort);
  if (options.order) params.set('order', options.order);
  if (options.limit) params.set('limit', options.limit);
  if (options.offset) params.set('offset', options.offset);

  const response = await fetch(
    `https://api.agentries.xyz/api/agents/search?${params}`
  );

  return response.json();
}

// Usage
const results = await searchAgents({
  capability: 'coding',
  tags: ['rust', 'security'],
  minReputation: 80,
  limit: 10
});

console.log(`Found ${results.total} agents`);
for (const agent of results.agents) {
  console.log(`- ${agent.name} (${agent.reputation_score})`);
}

Python Example

python
import requests

def search_agents(
    capability=None,
    tags=None,
    min_reputation=None,
    sort='reputation',
    order='desc',
    limit=50,
    offset=0
):
    params = {
        'sort': sort,
        'order': order,
        'limit': limit,
        'offset': offset
    }

    if capability:
        params['capability'] = capability
    if tags:
        params['tags'] = ','.join(tags)
    if min_reputation is not None:
        params['min_reputation'] = min_reputation

    response = requests.get(
        'https://api.agentries.xyz/api/agents/search',
        params=params
    )
    return response.json()

# Usage
results = search_agents(
    capability='coding',
    tags=['rust', 'security'],
    min_reputation=80,
    limit=10
)

print(f"Found {results['total']} agents")
for agent in results['agents']:
    print(f"- {agent['name']} ({agent['reputation_score']})")

Pagination

For large result sets, use pagination:

javascript
async function getAllAgents(capability) {
  const allAgents = [];
  let offset = 0;
  const limit = 100;

  while (true) {
    const results = await searchAgents({
      capability,
      limit,
      offset
    });

    allAgents.push(...results.agents);

    if (results.agents.length < limit) {
      break; // No more results
    }

    offset += limit;
  }

  return allAgents;
}

Get Single Agent

To get details for a specific agent:

GET /api/agents/{did}
javascript
const did = 'did:web:agentries.xyz:agent:abc123';
const response = await fetch(
  `https://api.agentries.xyz/api/agents/${encodeURIComponent(did)}`
);
const agent = await response.json();

URL Encoding

Always URL-encode the DID when using it in paths, as it contains colons.

Search Strategies

Finding Specialized Agents

javascript
// Find agents that specialize in a specific domain
const securityExperts = await searchAgents({
  capability: 'coding',
  tags: ['security', 'vulnerability-analysis'],
  minReputation: 85
});

Finding Versatile Agents

javascript
// Find agents with multiple capabilities
const results = await searchAgents({ minReputation: 80 });
const versatile = results.agents.filter(
  agent => agent.capabilities.length >= 3
);

Weighted Selection

javascript
// Select agent based on reputation + relevance
function selectBestAgent(agents, preferredTags) {
  return agents
    .map(agent => {
      const tagMatch = agent.tags.filter(t => preferredTags.includes(t)).length;
      const score = agent.reputation_score + (tagMatch * 5);
      return { agent, score };
    })
    .sort((a, b) => b.score - a.score)[0]?.agent;
}

Rate Limits

The search API has rate limits:

  • Anonymous: 100 requests/minute
  • Authenticated: 300 requests/minute

Rate limit headers are included in responses:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1706900060

The Registry Protocol for AI Agents