Skip to main content
Glama

elaichi__connector__list_tools

Read-onlyIdempotent

List the tools a provider exposes that YOU are allowed to run, with each tool’s full JSON Schema. It is the connector’s own catalogue — no account and no credential is involved, so it answers "what could Elaichi do with X" before anything is connected — but it is NOT account-independent and NOT unfiltered: the organization’s restrictions for the CALLER are applied first, so two members can get different answers for the same slug, and neither is the provider’s full catalogue. If governance has blocked the whole connector for you this REFUSES with a permission error rather than answering an empty list — an empty list would be a false statement about the connector, where a refusal is a true one about you; call connector.get and read restricted to find that out without provoking it. Restrictions are per-caller, not per-connection, so for the same slug this returns the SAME set connection.list_tools does — reach for that one when you hold a conn_… id or the question is about a real account, and this one when all you have is a slug. They refuse identically too — neither answers an empty list for a blocked connector — so an empty tools from either one means the provider genuinely has nothing to list. Returns { slug, tools: [...], nextCursor, prevCursor } — the rows are under tools, NOT under result, so this is not the standard list envelope. limit defaults to 200, which is every tool of almost every connector in one call; a non-null nextCursor means this connector has more, and you reach them by sending it back as cursor until it comes back null. Never report a page whose nextCursor is not null as the connector’s complete tool list — connector.get’s tool_count is the count. Every row carries a full JSON Schema, so prefer a narrow question to paging the lot.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYesConnector slug from connector.list, e.g. "slack".
limitNoRows per page, 1–200. Defaults to 200 — the whole set in one call for almost every organization — rather than the 50 the other lists here default to. Larger values are clamped, not rejected.
cursorNoOpaque cursor taken verbatim from a previous call’s `nextCursor`. Omit for the first page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations (readOnlyHint=true, idempotentHint=true, openWorldHint=false) are consistent with the description, which then adds rich behavior beyond them: it REFUSES with a permission error when the whole connector is blocked rather than returning an empty list, restrictions are per-caller not per-connection, and it uses a non-standard envelope (rows under `tools`, not `result`). The warning never to report a page with a non-null nextCursor as complete is genuinely useful disclosure.

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?

Purpose is front-loaded in the first sentence, and the rest is a logical progression: caveats, sibling differentiation, envelope, pagination. However, the description is very long and contains somewhat philosophical phrasing ('an empty list would be a false statement about the connector, where a refusal is a true one about you') that could be trimmed without losing meaning. Most sentences earn their place, but a tighter rewrite would improve it.

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?

With no output schema, the description correctly carries the full burden of explaining the return value: { slug, tools: [...], nextCursor, prevCursor }, including the envelope gotcha. It covers the refusal-vs-empty distinction, the per-caller filter semantics, the default limit, clamping, and the complete pagination protocol. Nothing an agent needs to call it correctly is missing.

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?

Schema coverage is 100% and the schema already documents slug, limit (1–200, default 200), and cursor. The description adds value beyond that: it explains that the 200 default differs from the 50 that other lists default to, that larger values are clamped rather than rejected, that cursor is opaque and must be taken verbatim from a previous nextCursor, and how pagination terminates. This goes beyond the schema's plain text.

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?

Opens with a specific verb+resource: 'List the tools a provider exposes that YOU are allowed to run, with each tool's full JSON Schema.' It immediately distinguishes itself from siblings — it is the connector's catalogue, filtered by the caller's restrictions, and explicitly contrasts with connection.list_tools and connector.get. The scope is unambiguous.

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?

Gives explicit when-to-use guidance: 'reach for that one when you hold a conn_… id or the question is about a real account, and this one when all you have is a slug.' It also instructs the agent to call connector.get and read `restricted` to check a block without provoking a refusal, and explains that connection.list_tools returns the identical set for the same slug. No inference is left to the agent.

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