Skip to main content
Glama

List verified agents and bots

list_bots
Read-onlyIdempotent

Return the whole /bots.json catalog of public agents and bots that pay, get paid, or connect a wallet. Output is { schema_version, generated_at, language, title, description, disclaimer, inclusion, schema, html_url, markdown_url, count, entries }. count equals entries.length. disclaimer is "Listed, not endorsed." The inclusion field states the rule: a public repository or demo, a known maker, a push in the 12 months before verification, and a license taken from a LICENSE file or marked unconfirmed. Each entries[] item is the same object get_bot returns: id, name, maker, description, protocols, url, license (string or null), license_verified, license_url (string or null), verified_at (YYYY-MM-DD), http_status (integer or null), archive_url (string or null), funds_or_keys, and notes. funds_or_keys is true when the software can access a wallet or keys. One unpaged response: no limit, no offset, and no text filter. Takes no parameters: call with an empty object. Use list_bots instead of get_bot when you need every entry, the count, the disclaimer, or the inclusion rule. Use get_bot instead when you already have one id and want that single object; an unknown id is an error on get_bot, not an empty list here. Use search_sources instead for papers and docs about agents. Use get_protocol_facts instead for how a payment protocol works. list_changes rows of kind bot prefix the id with bot:; strip that prefix before get_bot. A failed read returns isError. The text is the Error message (Fetch failed when the HTTP status is not OK), or Bot list failed. when the failure is not an Error. Free, no auth.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_bots"
  }
}

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
countYes
entriesYes
disclaimerYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "count": {
      +      "type": "integer"
      +    },
      +    "disclaimer": {
      +      "type": "string"
      +    },
      +    "entries": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "funds_or_keys": {
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "maker": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "maker",
      +          "funds_or_keys",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "count",
      +    "disclaimer",
      +    "entries"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds meaningful operational context: no parameters, a single unpaged response with no limit/offset/text filter, free access with no auth, and precise error behavior ('isError' with the Error message or 'Bot list failed.'). It stops short of full richness but exceeds what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads purpose and usage well, but a large middle section enumerates every output field (id, name, maker, protocols, url, license, license_verified, license_url, verified_at, http_status, archive_url, funds_or_keys, notes). Since an output schema already exists, these sentences are largely redundant and make the definition unnecessarily long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the empty input schema, rich annotations, and the presence of an output schema, the description is more than complete. It covers purpose, usage alternatives, return shape, error modes, and access requirements, leaving no ambiguity for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description confirms this explicitly: 'Takes no parameters: call with an empty object.' No further parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Return the whole /bots.json catalog of public agents and bots that pay, get paid, or connect a wallet.' It precisely scopes the resource and distinguishes it from siblings by naming get_bot, search_sources, and get_protocol_facts later. An agent can identify the tool's purpose without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: 'Use list_bots instead of get_bot when you need every entry, the count, the disclaimer, or the inclusion rule.' It also states when to use get_bot, search_sources, and get_protocol_facts instead. Even edge cases like stripping the 'bot:' prefix from list_changes rows are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources