List services
list_servicesServices this business provides, each with a description and the URL of its page. Omit tag to get all.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Return only services with this tag |
list_servicesServices this business provides, each with a description and the URL of its page. Omit tag to get all.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Return only services with this tag |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered structurally. The description adds useful behavioral context by specifying the output shape (description and URL) and the default behavior when no tag is provided. However, it does not disclose additional runtime traits such as ordering, result limits, or error conditions, so the added behavioral depth is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one sentence conveys both the resource and the output fields, and immediately follows with the key usage note about the optional tag. Every word earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one optional parameter, a fully described enum, and annotations covering safety and idempotency, the description provides the essential missing pieces: the return contents and default filtering behavior. No output schema is present, but the description compensates by naming the fields an agent can expect. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the tag parameter already has a clear description and a full enum. The description goes beyond the schema by explicitly stating the default behavior when the tag is omitted ('Omit tag to get all'). This gives the agent actionable parameter guidance that is not present in the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning the services this business provides, with each service's description and page URL. This distinguishes it from siblings like get_pricing and list_posts, which cover different resources. The resource and verb are both specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: use this tool when you need the business's services and their associated pages. It gives a default behavior ('Omit tag to get all') that clarifies the optional parameter, though it does not explicitly discuss when to prefer this over sibling tools. The intended use case is still evident without needing exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.