Skip to main content
Glama

search_sites

Read-onlyIdempotent

Explore services for a topic when you have no concrete task; for a task, use resolve_task. Returns the best available relevant services and connection paths, including services with incomplete coverage or access details. Known constraint conflicts are excluded. Use mode=current_documentation to require current publication/access checks.

Input Schema

NameRequiredDescriptionDefault
modeNodiscovery
sortNorelevance
viewNoconnect
limitNo
queryNo
cursorNo
setup_codeNo
constraintsNo
caller_profileNo
reference_timeNoFixes now for relative dates such as "last seven complete UTC days"; defaults to the request time and is echoed in the interpretation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / caller_profile / properties / provider_access / items / properties / entitlement
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "available": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +    },
      +    "checked_at": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +    },
      +    "detail": {
      +      "maxLength": 300,
      +      "type": "string"
      +    },
      +    "evidence_ref": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +    },
      +    "expires_at": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +    },
      +    "status": {
      +      "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / caller_profile / properties / provider_access / items / properties / network
      Added value: +{
      +  "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime"
      +}
    • addedInput schema / properties / reference_time
      Added value: +{
      +  "description": "Fixes now for relative dates such as \"last seven complete UTC days\"; defaults to the request time and is echoed in the interpretation.",
      +  "format": "date-time",
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • removedInput schema / properties / caller_profile / description
      Removed value: -"Basic caller capabilities. Use the full catalogue for scoped provider-access proofs and resume checks."
    • addedInput schema / properties / caller_profile / properties / provider_access
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "billing": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "available": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +          },
      +          "checked_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +          },
      +          "evidence_ref": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +          },
      +          "expires_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +          },
      +          "status": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +          },
      +          "usage_included": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "configuration": {
      +        "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime"
      +      },
      +      "credentials": {
      +        "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime"
      +      },
      +      "environment": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "operation_ids": {
      +        "default": [],
      +        "items": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 30,
      +        "type": "array"
      +      },
      +      "path_id": {
      +        "maxLength": 150,
      +        "minLength": 3,
      +        "type": "string"
      +      },
      +      "path_revision": {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      "permissions": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "available": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +          },
      +          "checked_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +          },
      +          "evidence_ref": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +          },
      +          "expires_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +          },
      +          "scopes": {
      +            "default": [],
      +            "items": {
      +              "maxLength": 200,
      +              "type": "string"
      +            },
      +            "maxItems": 50,
      +            "type": "array"
      +          },
      +          "status": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "runtime": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "available": {
      +            "type": "boolean"
      +          },
      +          "checked_at": {
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "evidence_ref": {
      +            "maxLength": 120,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "expires_at": {
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "unknown",
      +              "reported",
      +              "verified",
      +              "blocked"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "runtime_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "spending": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "allow_recurring": {
      +            "type": "boolean"
      +          },
      +          "available": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/available"
      +          },
      +          "checked_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/checked_at"
      +          },
      +          "currency": {
      +            "maxLength": 3,
      +            "minLength": 3,
      +            "type": "string"
      +          },
      +          "evidence_ref": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/evidence_ref"
      +          },
      +          "expires_at": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/expires_at"
      +          },
      +          "limit": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "status": {
      +            "$ref": "#/properties/caller_profile/properties/provider_access/items/properties/runtime/properties/status"
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "path_id",
      +      "path_revision"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / caller_profile / properties / setup_progress
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "checked_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "environment": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "evidence_ref": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "expires_at": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "operation_ids": {
      +        "default": [],
      +        "items": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 30,
      +        "type": "array"
      +      },
      +      "path_id": {
      +        "maxLength": 150,
      +        "minLength": 3,
      +        "type": "string"
      +      },
      +      "path_revision": {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      "runtime_id": {
      +        "maxLength": 150,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "reported",
      +          "verified",
      +          "blocked",
      +          "in_progress"
      +        ],
      +        "type": "string"
      +      },
      +      "step_id": {
      +        "maxLength": 100,
      +        "minLength": 2,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path_id",
      +      "path_revision",
      +      "step_id",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 40,
      +  "type": "array"
      +}
  3. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare this is a safe, read-only, idempotent operation. The description adds non-obvious behavior: results include services with incomplete coverage or access details, known constraint conflicts are excluded, and a specific mode enforces current publication/access checks. It does not explain pagination or how caller_profile influences results, but it meaningfully exceeds what annotations provide.

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

Conciseness4/5

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

The description is four focused clauses, front-loading the key distinction from resolve_task before adding result behavior and mode guidance. It is dense but not bloated; every sentence contributes, though the phrasing is somewhat compressed.

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

Completeness2/5

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

With no output schema and a very complex input schema containing nested constraints and caller_profile objects, the description is far too thin. An agent lacks guidance on most parameters and on what the returned 'services and connection paths' actually look like, so it cannot confidently construct a call beyond the simplest case.

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

Parameters2/5

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

Schema description coverage is only 10%, and the schema contains 10 parameters including complex nested objects like constraints and caller_profile. The description only clarifies one mode value and one constraint-exclusion behavior, leaving query, sort, view, limit, cursor, setup_code, and nearly all nested fields undocumented in both schema and description.

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

Purpose4/5

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

The description clearly states the verb and resource: 'Explore services for a topic'. It explicitly distinguishes itself from resolve_task for concrete tasks, but does not differentiate from sibling tools like filter_sites or browse_catalogue, leaving some ambiguity about which exploration tool to pick.

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

Usage Guidelines4/5

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

It gives a clear when-to-use rule ('when you have no concrete task') and names the alternative for task-based work ('use resolve_task'). It also provides a mode-specific usage tip ('Use mode=current_documentation to require current publication/access checks'), but stops short of covering when to use filter_sites or browse_catalogue.

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