Total CMS
Server Details
Read-only Total CMS docs: Twig signatures, field types, schema options, the CLI and the REST API.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- totalcms/cms
- GitHub Stars
- 10
TDQS
Scored across 20 tools
The set has four overlapping search tools—search, search_collections, search_collection, and docs_search—and search vs search_collections both search all collections with only return-shape differences. fetch vs docs_get and get_resource vs get_object are explained but still add selection overhead. Specialized tools like latest_release and needs_review are distinct, but the global search cluster is genuinely muddy.
Mostly snake_case, but conventions are mixed: docs_get is noun-first while get_object/get_view are verb-first, and latest_release, needs_review, fetch, and search break the verb_noun pattern. search_collection vs search_collections differs by one character while changing scope significantly.
20 tools is borderline heavy for a docs/content server, and a meaningful portion is duplicated search/discovery surface (search, search_collections, search_collection, docs_search, docs_lookup). Trimming those duplicates would make the set feel well-scoped.
The read-only surface is comprehensive for docs and collections: discovery, describe, query, search, get, views, guides, comparisons, releases, and resource resolution. Gaps are minor—no docs page index/listing and no mutation operations—but for a docs/content retrieval server the core workflows are covered.
Available Tools
20 toolsdescribe_collectionARead-onlyIdempotentInspect
Describe one collection in detail. Returns the collection metadata plus a properties array — each entry is a property with its type, description, and indexed/filterable/sortable flags. Call list_collections first to find a collection id, then describe_collection to see what is queryable inside it. indexed: true means the property appears in query_collection / search_collection results (and may be filterable/sortable). indexed: false means the property exists on objects but is not returned by query/search — retrieve it through get_object instead.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection id (slug-form). Use list_collections to discover available collections. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| access | Yes | Persona that can query this collection. |
| ownership | No | Set when the collection limits the caller to their own objects, or has fields only the site sets: what the caller sees and may change. |
| properties | Yes | One entry per exposed property (mcp.expose:false fields are stripped). Per-property mcp.description is surfaced here when set. |
| description | No | Collection-level mcp.description, falling back to the schema description. |
| url_pattern | No | URL template for objects, e.g. "/blog/{id}". Empty string when no pattern is configured. |
| total_objects | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable semantics about what `indexed: true` versus `false` means in downstream query/search results, which goes beyond the annotations; it does not cover error/not-found behavior, keeping it from a 5.
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?
Front-loaded with the core action and return shape, followed by the lookup workflow and the indexed-flag semantics. Every sentence carries actionable information with no repetition or filler.
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?
Given a single required parameter, 100% schema coverage, an output schema, and read-only annotations, the description is complete. It explains both the input discovery path and the meaning of returned property flags, leaving no material gap 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 single `collection` parameter is fully documented in the schema. The description adds practical meaning by telling the agent how to obtain a valid collection id via list_collections, exceeding the baseline for complete schema coverage.
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?
States a specific verb and resource ('Describe one collection in detail') and immediately specifies what is returned (metadata plus a properties array with type/description/flags). It distinguishes itself from siblings by naming list_collections, query_collection, search_collection, and get_object in service of the workflow.
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?
Explicitly prescribes the sequence: 'Call list_collections first to find a collection id, then describe_collection.' It also states the fallback path for non-indexed properties ('retrieve it through get_object instead'), giving both when-to-use and an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_viewARead-onlyIdempotentInspect
Describe one data view in detail. Returns metadata (id, name, description, last_built, access, total_items) plus output_shape — the list of keys present on the first cached item, sampled so agents can compose effective query_view / get_view calls. Admin callers also receive the view's Twig definition for dev visibility. Use list_views to discover view ids first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | View id. Use list_views to discover available views. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| access | Yes | |
| definition | No | Twig source for the view. Admin persona only — absent for public callers. |
| last_built | No | |
| description | No | |
| total_items | Yes | |
| output_shape | Yes | Keys present on the first cached item. Empty when the view has never been built or produced no items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered; the description adds real behavioral detail beyond that with the admin-only Twig definition and the fact that output_shape is sampled from the first cached item rather than exhaustive. It stops short of noting cost or failure behavior for unknown ids, which keeps it out of the top band.
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?
Three front-loaded sentences with no filler, and the return-shape and admin notes are packed efficiently. The enumeration of return fields is somewhat redundant given an output schema exists, which is the only thing keeping it from a 5.
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?
For a one-parameter read tool with full schema coverage, an output schema, and complete annotations, the description covers purpose, prerequisite, return contents, sampling caveat, and admin-only extras. Nothing an agent needs in order 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single required 'id' parameter whose schema description already says to use list_views. The description's own 'use list_views' line duplicates that structured guidance rather than adding format or constraint detail.
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 first sentence names a specific verb and resource ('Describe one data view in detail') and the body immediately distinguishes it from get_view and query_view by framing it as the metadata/shape-inspection step that precedes them. An agent can tell what this tool is for without opening the schema.
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?
It explicitly states the prerequisite ('Use list_views to discover view ids first') and gives the downstream reason to call this tool ('so agents can compose effective query_view / get_view calls'), which implicitly but clearly routes the agent between the three view-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_getARead-onlyIdempotentInspect
Fetch a full Total CMS documentation page as markdown by its path (as returned by docs_search), e.g. "twig/data" or "site-builder/overview".
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Documentation page path from docs_search results |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds real value beyond that by disclosing the return format (markdown) and that the entire page is returned ('full ... page'), which hints at potentially large responses. It stops short of describing behavior on an invalid or stale path.
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?
One sentence, front-loaded with the verb and resource, then the required precursor and concrete examples. No filler, and every clause (format, full page, path provenance, examples) carries distinct information.
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 an output schema present and full parameter coverage, the description needn't explain return values; it still names the format. For a single-parameter read tool with rich annotations, the one gap is what happens when the path is invalid or no longer matches a page.
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?
The schema documents the single path parameter at 100% coverage, setting a baseline of 3. The description goes beyond that by supplying concrete path format examples ('twig/data', 'site-builder/overview'), which tell the agent what a well-formed value looks like rather than just repeating the field description.
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?
States a specific verb (Fetch), a specific resource (a full Total CMS documentation page), an output format (markdown), and the exact input (its path). The phrase 'as returned by docs_search' implicitly separates it from docs_search and docs_lookup, so an agent can distinguish retrieval-by-path from searching without opening a schema.
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 parenthetical 'as returned by docs_search' gives clear ordering context (search first, then fetch by path), which is the key usage decision for this tool. It does not explicitly exclude alternatives such as docs_lookup or list_guides, and the many doc-adjacent siblings make that omission noticeable, but the primary workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_lookupARead-onlyIdempotentInspect
Look up a specific Total CMS reference entry: Twig functions/filters, field types, REST API endpoints, schema configuration keys, CLI commands, extension API, or builder API. Omit name to list all entries of a kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| name | No | Entry name (function name, field type, "GET /api/collections", command name…). Omit to list the kind. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds one behavioral detail — that omitting `name` returns a listing rather than a single entry — but says nothing about result shape or limits beyond what the output schema would carry.
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?
Two sentences, front-loaded with the core purpose and the enumerated kinds, with the listing behavior in the second sentence. No filler or repetition.
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?
An output schema exists, so return values need not be described, and for a two-parameter reference lookup the description covers purpose and the one non-obvious calling mode. The remaining gap is sibling disambiguation against docs_search/docs_get, which matters given the crowded namespace.
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 50%, with `name` documented in-schema with examples. The description restates the kind categories that the enum already enumerates and adds the omit-to-list semantics, which is also present in the schema description, so it contributes little beyond structured data. Baseline 3 for a two-parameter tool with partial coverage.
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?
States a specific verb ('Look up') plus a specific resource (a Total CMS reference entry) and enumerates the entry kinds covered, so the agent knows exactly what domain it serves. It does not name or differentiate itself from the many sibling lookup tools (docs_get, docs_search, describe_collection), leaving the boundary implicit.
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 only explicit usage rule is 'Omit `name` to list all entries of a kind,' which tells the agent how to widen the call into a listing. There is no statement of when to prefer this over docs_search or docs_get, so the choice among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_searchARead-onlyIdempotentInspect
Search the Total CMS documentation. Returns matching pages with their path, title, group, and section headings. Use docs_get with a returned path to read the full page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default 8, max 20) | |
| query | Yes | Search terms, e.g. "image resize twig" or "webhook automation" |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | Present when a search actually ran — guidance for the next call. |
| total | No | Present when a search actually ran — total matches before the limit was applied. |
| message | No | Present only when the query was too short (no token of 2+ characters). No `total`/`hint` alongside it. |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond them by naming the returned fields (path, title, group, section headings) and showing how results feed into docs_get.
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?
Three short sentences, front-loaded with the purpose and with zero redundant phrasing. The return fields and the next-step pointer each earn their place.
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?
This is a two-parameter read-only search tool with a full schema and an output schema, so the description does not need to explain return values, though it helpfully does anyway. The only omission is routing guidance against the remaining search siblings.
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 description coverage is 100%, with both query and limit documented including the default of 8 and maximum of 20. The description adds no parameter-level meaning beyond the schema, so this is the baseline 3 rather than higher.
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?
States a specific verb and resource ('Search the Total CMS documentation') and separates itself from docs_get by framing that tool as the follow-up for reading full pages. It does not distinguish itself from other search-like siblings such as docs_lookup or search, so it falls short of a 5.
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 gives an explicit follow-up workflow: take a returned path and pass it to docs_get to read the full page. That is clear usage context, but there are no exclusions or guidance on when to prefer docs_lookup or other search siblings instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchARead-onlyIdempotentInspect
Fetch the full document for a search result id. Returns {id, title, text, url, metadata}; text is the readable body for citation. Pass an id returned by the search tool.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A document id returned by the `search` tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful context beyond that: the returned fields and that `text` is the readable body intended for citation. It doesn't discuss failure behavior for a bad id, which is the only notable gap.
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?
Two sentences, both front-loaded with the essential information: what is fetched, what comes back, and where the id originates. No sentence is wasted.
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?
For a single-parameter hydration tool with full annotations, an output schema, and a clearly named prerequisite tool, the description covers everything an agent needs to call it correctly. Return values are also summarized, which is a bonus given the output schema exists.
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 single parameter already documents that the id comes from the `search` tool. The description repeats that same constraint without adding format or validity details beyond the schema, so the baseline of 3 applies.
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 states a specific verb and resource: fetch the full document for a search result id. It also names the return shape, so an agent knows this is a hydration call rather than a search. It does not, however, distinguish itself from similar siblings like docs_get or get_resource.
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?
It explicitly states the prerequisite: pass an id returned by the `search` tool, which prevents calling it with arbitrary strings. It gives no when-not conditions or comparison against alternatives such as docs_get, so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_comparisonARead-onlyIdempotentInspect
Find the head-to-head comparison page for a competitor by name (case-insensitive partial match). Returns the full page content including the feature table.
Parameters:
competitor (string, required): Competitor name, e.g. "Kirby" or "Craft".
Returns: paginated comparisons objects with url per item.
| Name | Required | Description | Default |
|---|---|---|---|
| competitor | Yes | Competitor name, e.g. "Kirby" or "Craft". |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching comparisons objects, each decorated with a `url` field where the collection has a public URL pattern configured. Field set varies by collection — call describe_collection for the schema. |
| limit | Yes | Cap applied to this response — server may have lowered the requested limit. |
| total | Yes | Total matching items (post-persona-filter). |
| offset | Yes | |
| has_more | Yes | True when total > offset + count(items); call again with offset += limit to paginate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is clear. The description adds useful matching semantics (case-insensitive partial match) and mentions page content, but the return statements are somewhat inconsistent: 'full page content including the feature table' versus 'paginated comparisons objects with url per item.'
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 short and front-loaded with purpose, but the explicit Parameters section largely duplicates the schema, and the Returns section is redundant because an output schema exists. The two return-related sentences also create ambiguity rather than adding clarity.
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?
For a simple, single-parameter read-only lookup with rich annotations and an output schema, the description is mostly complete. The only notable gap is the ambiguous phrasing around whether the tool returns full page content or paginated comparison objects with URLs.
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 description coverage is 100%, so the schema already documents the single competitor parameter and examples. The description adds meaningful semantics beyond the schema by specifying case-insensitive partial matching, which affects how the agent should supply the competitor name.
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 states a specific verb and resource: find the head-to-head comparison page for a competitor. It also names the matching behavior and scopes the result to comparison pages, which distinguishes it from generic sibling tools like search or docs_search.
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?
Usage is implied by the tool name and description, but there is no explicit guidance on when to use this tool versus search, docs_search, or other sibling lookup tools. The description does not mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_objectARead-onlyIdempotentInspect
Fetch a single object by its id from a collection. Returns the full object as a flat map of fields, decorated with a url field where the collection has a public URL pattern configured. This tool does not search or filter — use query_collection for paginated lists or search_collection for free-text search.
Available collections and filterable properties:
articles — id (id, sortable), title (text), author (select), summary (textarea), date (date, sortable), draft (toggle), updated (datetime, sortable)
comparisons — competitor (text), competitorUrl (url), heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable)
extension — id (id, sortable), name (text), extensionId (text), soldAs (text), summary (textarea), category (select), price (number, sortable), currency (select), minEdition (select), minVersion (text), bundled (toggle), beta (toggle), docsUrl (url), productUrl (url), draft (toggle), owner (select), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)
releases — id (id, sortable), version (text), title (text), date (date, sortable), draft (toggle), urgent (toggle), fullnotesurl (url), announce (toggle)
roundups — heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable)
showcase — name (text), url (url), industry (select), id (id, sortable), owner (select), draft (toggle), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Object id (slug). Get candidate ids from query_collection or search_collection output. | |
| format | No | Rendered format for content fields. Accepted now for forward-compat; full conversion ships with the Tiptap→markdown converter in a later release. | markdown |
| locale | No | BCP 47 locale tag. Accepted for forward-compat with the 3.6 i18n release — has no effect today. | |
| collection | Yes | Collection id. Use list_collections to discover available collections. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Object id (slug). |
| url | No | Public URL for this object when the collection has a URL pattern configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuine behavioral detail beyond that: the return is a flat map of fields and may be decorated with a derived `url` when a URL pattern is configured — a non-obvious transformation. It stops short of noting anything about missing/404 behavior or permission scoping.
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 first two sentences are tight and front-loaded, but the bulk of the description is a per-collection field inventory labeled 'filterable properties' (including sortable/range markers) — metadata that is largely irrelevant to a get-by-id call and belongs on query_collection. It is informative but not well-matched to this tool's job.
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 an output schema present, return shapes need not be explained, and annotations carry the safety profile; the description covers purpose, alternatives, id sourcing, and valid collections. The residual gap is the off-purpose filter-property inventory, which could make an agent think filtering is supported here despite the explicit denial.
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%, so baseline would be 3, but the description earns extra credit: the schema's `collection` examples ('blog', 'products') are misleading, and the enumerated collection list (articles, comparisons, extension, releases, roundups, showcase) supplies the actual valid ids. It adds nothing about `format`/`locale`, though those are already self-documented as forward-compat no-ops.
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?
Opens with a specific verb+resource+scope: 'Fetch a single object by its id from a collection.' It then explicitly names what it is not (search/filter) and routes to the correct siblings, so the agent can distinguish it from query_collection and search_collection without opening a schema.
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?
States the negative constraint ('does not search or filter') and names both alternatives with their selecting conditions ('query_collection for paginated lists', 'search_collection for free-text search'). The id parameter descriptions reinforce the workflow by pointing to query_collection/search_collection output as the source of ids.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resourceARead-onlyIdempotentInspect
Resolve a tcms:// resource URI to its underlying object. Format: tcms://{collection}/{id} — e.g. tcms://blog/hello-world. Equivalent to calling get_object with the parsed collection and id; returns the same shape. Use this when a URI has been surfaced to you (in other tool output, in user input, etc.); use get_object directly when you have a separate collection + id pair. Extension-registered URIs (other schemes) are reachable via the resources/read transport surface.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | A tcms:// resource URI identifying one object. Format: tcms://{collection}/{id}. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Object id (slug). |
| url | No | Public URL for this object when the collection has a URL pattern configured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond annotations: it returns the same shape as get_object and that extension-registered schemes are reachable via the resources/read transport surface.
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?
Front-loads the core purpose and format, then gives usage guidance and a note on extension URIs. It is efficient overall, though the extension-URI sentence is somewhat niche and dense.
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 a fully described schema, rich annotations, and an output schema, the description covers what the tool does, how to use it versus the sibling, and what shape to expect. No critical information 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 already documents the uri format with examples. The description adds only the parsing equivalence to get_object (collection + id), which is marginal beyond the schema's own details.
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?
States a specific verb and resource: resolve a tcms:// URI to its underlying object. It explicitly distinguishes itself from the sibling get_object by explaining the equivalence and the different input shape.
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?
Gives explicit routing guidance: use get_resource when a URI has been surfaced, use get_object directly when you have a separate collection + id pair. It also mentions extension-registered URIs are handled through resources/read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewARead-onlyIdempotentInspect
Fetch a data view's full cached result by id. Output is freeform — each item's field set depends on the view's Twig definition. Call describe_view first to learn the expected shape. Capped at 50 items; larger views return the first 50 plus a hint to call query_view for pagination. For per-item paginated access use query_view directly.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | View id. Use list_views to discover available views. | |
| format | No | Forward-compat with collection tools. View data is freeform so this has no effect today. | markdown |
| locale | No | BCP 47 locale tag — forward-compat for the 3.6 i18n release. No effect today. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | Present only when truncated — points the agent at query_view. |
| items | Yes | Items produced by the view, capped at 50. Field set varies by view — call describe_view for the expected shape. |
| total | Yes | Total cached items in the view (pre-cap). |
| truncated | Yes | True when total > 50; pair with query_view for full pagination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (which only declare read-only/idempotent safety) by disclosing that output is freeform and shape-dependent on the Twig definition, and by disclosing the hard 50-item cap plus the truncation hint. Those are exactly the behaviors an agent needs and cannot infer from structured fields.
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?
Four tight sentences, each doing distinct work: purpose, output shape, prerequisite, and truncation/routing. The cap and the fallback to query_view are front-loaded before any incidental detail.
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?
Although an output schema exists, the description correctly warns that the return shape is effectively freeform and view-dependent, plus it covers truncation and the prerequisite call. Nothing an agent needs to invoke this correctly is missing.
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 description coverage is 100%, so the baseline is 3; the description confirms the 'by id' lookup but adds no syntax or format guidance for params. The schema itself already documents format and locale as no-effect forward-compat fields, so the description's silence is acceptable but not additive.
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?
States a specific verb and resource: 'Fetch a data view's full cached result by id'. The 'full cached result' phrasing contrasts with the per-item paginated access of query_view, so the agent can separate the two siblings without reading schemas.
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?
Gives explicit sequencing ('Call describe_view first to learn the expected shape') and an explicit alternative with its selecting condition ('For per-item paginated access use query_view directly'). Both when-to-use and when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
latest_releaseARead-onlyIdempotentInspect
The most recent Total CMS release: version, title, date and the release summary.
Returns: paginated releases objects with url per item.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching releases objects, each decorated with a `url` field where the collection has a public URL pattern configured. Field set varies by collection — call describe_collection for the schema. |
| limit | Yes | Cap applied to this response — server may have lowered the requested limit. |
| total | Yes | Total matching items (post-persona-filter). |
| offset | Yes | |
| has_more | Yes | True when total > offset + count(items); call again with offset += limit to paginate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds that results are paginated and include a URL per item, which is useful behavioral context beyond annotations, but it does not discuss auth, rate limits, or other operational constraints.
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 two compact sentences with no wasted text. It front-loads the core purpose and then adds a brief return-format note.
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?
Given that the tool takes no parameters, has rich annotations, and has an output schema, the description is nearly complete. It states the resource and pagination behavior; the remaining details are appropriately delegated to structured fields.
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?
The tool has zero parameters, so there is no parameter semantics to document. The baseline for zero-parameter tools is 4.
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 resource as the most recent Total CMS release and names the specific fields returned: version, title, date, and release summary. It is specific enough to distinguish the tool from generic search/list siblings, though it does not explicitly contrast itself with any alternative.
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 phrase 'most recent' implies this tool should be used when only the latest release is needed, but there is no explicit guidance on when to use it versus siblings like search, query_collection, or list tools. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsARead-onlyIdempotentInspect
Discover the collections visible to you. Lean overview — one entry per collection. Returns id, name (display label), schema (the schema id this collection uses), description, url_pattern, access level, and total_objects (so you can decide whether to paginate or enumerate). For the per-property detail of one collection (which properties exist, which are filterable/sortable), call describe_collection. Then query_collection / search_collection / get_object for the data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Number of collections in the response (post-persona-filter). |
| collections | Yes | Persona-filtered list, sorted alphabetically by id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds useful context beyond that: results are limited to visible collections, the response is a lean one-entry-per-collection overview, and total_objects is provided to help decide whether to paginate or enumerate.
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 front-loaded and structured well, moving from what the tool does to return shape and then next-step siblings. It is slightly redundant in enumerating all returned fields despite an output schema, though the total_objects rationale earns its place.
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 an output schema and strong annotations already present, the description supplies the remaining context an agent needs: visibility scope, overview granularity, useful return highlights, and explicit next-tool routing. Nothing critical is missing for a zero-parameter listing tool.
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?
The tool has zero parameters, so there is no parameter semantics burden. The description appropriately does not invent parameter details; the baseline score for a zero-parameter tool applies.
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 states a specific resource and scope: collections visible to the caller, one entry per collection. It explicitly contrasts this lean overview with describe_collection for per-property detail and with query_collection/search_collection/get_object for data, so an agent can distinguish its role from key siblings.
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?
It gives clear routing guidance: use describe_collection for per-property detail, then query_collection/search_collection/get_object to retrieve data. It does not explicitly state when not to use this tool or how it differs from search_collections, so it is strong but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_guidesARead-onlyIdempotentInspect
The site's Guides: evergreen buying-guide pages served at /guides/{id}, stored in the roundups collection. Returns every guide in display order with its id, heading, lede, reviewed date and draft flag. A guide's full content (contenders, choose, howToChoose, faqs, sources) is on the object itself: get_object with collection "roundups".
Returns: paginated roundups objects with url per item.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching roundups objects, each decorated with a `url` field where the collection has a public URL pattern configured. Field set varies by collection — call describe_collection for the schema. |
| limit | Yes | Cap applied to this response — server may have lowered the requested limit. |
| total | Yes | Total matching items (post-persona-filter). |
| offset | Yes | |
| has_more | Yes | True when total > offset + count(items); call again with offset += limit to paginate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real context beyond that: results come back in display order, the draft flag is meaningful metadata, and pagination behavior. It doesn't say what pagination controls look like, but that's minor here.
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?
Front-loaded with what the tool returns and how it's stored, then the get_object pointer. The trailing 'Returns: paginated roundups objects with url per item' partially repeats the fields already enumerated in the first sentence, costing a little tightness.
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?
An output schema exists, yet the description still summarizes the returned fields and pagination, which is helpful orientation rather than wasted duplication. Combined with annotations, an agent has what it needs to call this correctly; only edge cases like empty results or paging mechanics are unstated.
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?
Zero parameters, so there is nothing to document and the baseline of 4 applies. The description's mention of pagination is the only hint that paging might be involved, which is consistent with a no-arg call returning a paginated envelope.
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?
Names the specific resource (evergreen buying-guide pages), its serving path (/guides/{id}), and its backing collection (roundups). It also distinguishes itself from get_object by stating where full guide content lives, so an agent can tell the two apart without opening schemas.
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?
Implicitly scopes use to listing/overview of guides and explicitly routes to get_object with collection "roundups" when full content is needed. It does not state exclusions (e.g., when to prefer search_collection or query_collection for filtered subsets), so it stops short of a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viewsARead-onlyIdempotentInspect
Discover the pre-computed data views visible to you. Lean overview — one entry per view. Data views are Twig-defined queries that aggregate across collections; their result is cached and accessible by id. Returns id, name, description, last_built, and access. Use the id with query_view (paginated query), get_view (fetch the whole cached result), or describe_view (output shape + metadata). For raw collection content use list_collections instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| views | Yes | Persona-filtered list, sorted alphabetically by id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value beyond that: the results are pre-computed and cached, the listing is a lean one-entry-per-view overview, and the id is the handle into three differently-shaped access paths. It doesn't discuss visibility scoping rules, staleness of last_built, or pagination of the list itself.
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?
Front-loaded with purpose, then semantics, then routing, then the exclusion — a logical ordering with no filler. The enumeration of returned fields (id, name, description, last_built, access) is somewhat redundant given an output schema exists, costing a bit of space.
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?
Complete for a zero-param discovery tool: it explains what a view is, that results are cached, what the id unlocks across three sibling tools, and when to switch to collections. With an output schema present, it needn't detail return shapes further, and annotations carry the safety profile.
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?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. It correctly explains that all filtering is handled by downstream tools taking the returned id rather than by this call.
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?
Opens with a specific verb+resource ('Discover the pre-computed data views') and immediately defines the domain concept ('Twig-defined queries that aggregate across collections; result is cached and accessible by id'). It explicitly distinguishes itself from list_collections, so an agent can separate it from the many collection-oriented siblings without opening a schema.
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?
States exactly what to do next with the returned id and names each downstream tool with its role: query_view for paginated queries, get_view for the whole cached result, describe_view for shape/metadata. It also names the exclusion condition ('For raw collection content use list_collections instead'), which is a genuine when-not-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
needs_reviewARead-onlyIdempotentInspect
Comparison pages ordered by how long ago their competitor facts were last verified, oldest first. Pass before (ISO date) to return only pages last verified before that date. Each page shows its verification date publicly, so keeping these fresh matters.
Parameters:
before (string, optional): Only pages whose reviewed date is on or before this ISO date (optional).
Returns: paginated comparisons objects with url per item.
| Name | Required | Description | Default |
|---|---|---|---|
| before | No | Only pages whose reviewed date is on or before this ISO date (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching comparisons objects, each decorated with a `url` field where the collection has a public URL pattern configured. Field set varies by collection — call describe_collection for the schema. |
| limit | Yes | Cap applied to this response — server may have lowered the requested limit. |
| total | Yes | Total matching items (post-persona-filter). |
| offset | Yes | |
| has_more | Yes | True when total > offset + count(items); call again with offset += limit to paginate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a read-only, idempotent, non-destructive, closed-world operation, so safety is covered. The description adds genuinely new behavior: the oldest-first ordering, the pagination of results, and the fact that verification dates are shown publicly, which explains why freshness matters.
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?
Front-loaded with the ordering rule, then filtering, then rationale, then a compact returns line. Slight waste in repeating the parameter description already present in the schema, but nothing extraneous otherwise.
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?
An output schema exists, so the short returns line is redundant but not harmful. Between annotations, the single fully documented parameter, and the description's ordering and pagination notes, an agent has everything needed to call it correctly; only the sibling routing guidance is missing.
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 description's parameter section restates the schema's own wording almost verbatim (including the inclusive 'on or before' boundary). It adds no format examples or guidance on omitting the parameter beyond what the schema already provides, so baseline 3 applies.
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?
Names the specific resource (comparison pages) and the exact ordering (staleness of competitor-fact verification, oldest first), which disambiguates against the otherwise similar find_comparison sibling by implication. It never explicitly says how it differs from find_comparison, so the differentiation relies on the reader inferring it from the ordering clause.
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?
Implies usage through 'keeping these fresh matters' and shows how to narrow with `before`, but gives no explicit when-to-use versus alternatives such as find_comparison or query_collection. An agent gets a hint of intent but no routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_collectionARead-onlyIdempotentInspect
Query a collection for paginated content. Returns the matching items plus pagination metadata (total, limit, offset, has_more); each item is decorated with a public url field where one is configured. Use REST-style include / exclude filter strings (comma-separated field:value pairs; AND-semantics for include, OR-semantics for exclude) and sort (e.g. date:desc). Only properties listed in the catalog below are queryable — other schema properties exist on objects but are not filterable here; use get_object if you need the full record or describe_collection to see every property. This tool does not free-text search content — use search_collection for that. It does not fetch a single object by id — use get_object.
Available collections and filterable properties:
articles — id (id, sortable), title (text), author (select), summary (textarea), date (date, sortable), draft (toggle), updated (datetime, sortable)
comparisons — competitor (text), competitorUrl (url), heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable)
extension — id (id, sortable), name (text), extensionId (text), soldAs (text), summary (textarea), category (select), price (number, sortable), currency (select), minEdition (select), minVersion (text), bundled (toggle), beta (toggle), docsUrl (url), productUrl (url), draft (toggle), owner (select), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)
releases — id (id, sortable), version (text), title (text), date (date, sortable), draft (toggle), urgent (toggle), fullnotesurl (url), announce (toggle)
roundups — heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable)
showcase — name (text), url (url), industry (select), id (id, sortable), owner (select), draft (toggle), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort rule "field:direction"; multiple rules comma-separated. Only fields marked sortable in the catalog will sort. | |
| limit | No | Maximum items to return. Capped at 50 (vs. REST's 100) to fit MCP response-size budgets. | |
| format | No | Rendered format for content fields. Accepted now for forward-compat; full conversion ships with the Tiptap→markdown converter in a later release. | markdown |
| locale | No | BCP 47 locale tag. Accepted for forward-compat with the 3.6 i18n release — has no effect today. | |
| offset | No | Number of items to skip — combine with limit for pagination. | |
| exclude | No | Comma-separated field:value pairs that exclude items (OR). Drafts the caller may not see are removed before this filter runs, whatever it says. | |
| include | No | Comma-separated field:value pairs items must ALL match. Wildcards "*foo*", "foo*", "*foo" supported. | |
| collection | Yes | Collection id (slug-form). Use list_collections to discover available collections. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matching objects in sort order. Field set varies by collection — call describe_collection for the schema. |
| limit | Yes | Cap applied to this response — server may have lowered the requested limit. |
| total | Yes | Total matching items (post-persona-filter). |
| offset | Yes | |
| has_more | Yes | True when total > offset + count(items); call again with offset += limit to paginate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds substantial context beyond that: pagination metadata is returned, items are decorated with a public url when configured, drafts may be removed before filters run, include uses AND semantics while exclude uses OR semantics, and only catalog-listed properties are queryable.
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 front-loaded with purpose and alternative routing before presenting the per-collection catalog. Although long, every part earns its place because the catalog and filter semantics are required to use include, exclude, and sort correctly.
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?
Even though an output schema exists, the description usefully states the return shape and pagination metadata. It covers the required collection parameter, filter and sort behavior, pagination limits, catalog limitations, and sibling alternatives—complete for an eight-parameter query tool.
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 already 100%, but the description adds meaning beyond the schema: it explains include/exclude as comma-separated field:value pairs with AND vs OR semantics and wildcard support, notes that only fields marked sortable can be used in sort, and provides a per-collection catalog of filterable properties.
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 states a specific verb and resource: query a collection for paginated content. It clearly distinguishes this tool from search_collection for free-text search and get_object for single-record retrieval, so an agent can identify it without opening the schema.
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?
It explicitly names alternatives and the conditions that select them: use search_collection for free-text search, get_object to fetch a single object or full record, and describe_collection to see every property. This is exactly the routing guidance an agent needs among many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_viewARead-onlyIdempotentInspect
Paginated query against a data view's cached result. REST-syntax include/exclude/sort, same vocabulary as query_collection. View data is freeform — call describe_view first to learn the field set before composing filters. limit is capped at 50; use offset to paginate larger views.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | View id from list_views. | |
| sort | No | Sort spec, e.g. "date:desc". | |
| limit | No | ||
| format | No | Forward-compat with query_collection; no effect today since view data is freeform. | markdown |
| locale | No | Forward-compat for 3.6 i18n. | |
| offset | No | ||
| exclude | No | REST-style negative filter. | |
| include | No | REST-style filter, e.g. "category:tech,published:true". Field names depend on the view's output shape. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Items in the requested page. Field set varies by view; call describe_view for the shape. |
| limit | Yes | Effective cap applied to this response. |
| total | Yes | |
| offset | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: results are cached, view data is freeform, and limit is capped at 50. It does not discuss staleness of the cache or latency, which would have pushed it higher.
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?
Four tight sentences with the core action and the describe_view prerequisite front-loaded. Every sentence contributes a distinct constraint or routing hint, and there is no filler.
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?
An output schema exists so return values need not be explained, and the description covers the remaining agent-relevant concerns: freeform field discovery, pagination, and the limit cap. Nothing needed to invoke it correctly is missing.
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?
With 75% schema description coverage the baseline is 3, and the description earns above that by explaining that include/exclude/sort use REST syntax and the same vocabulary as query_collection, plus routing field-name discovery to describe_view. It adds cross-tool semantics the schema cannot express.
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 opens with a specific verb and resource ('Paginated query against a data view's cached result') and immediately differentiates itself from query_collection by sharing its vocabulary. An agent can distinguish it from siblings like get_view or query_collection without opening the schema.
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?
It gives an explicit prerequisite ('call describe_view first to learn the field set') and a pagination instruction ('use offset to paginate larger views'). It stops short of stating exclusions relative to query_collection, but the 'cached result' scoping implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyIdempotentInspect
Search site content across all collections you can see. Returns matching results as {id, title, url}; pass a result id to fetch to read the full document. Drafts are hidden from anonymous callers.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine context beyond that: the result shape {id, title, url} and the permission-dependent behavior that drafts are hidden from anonymous callers. It omits pagination/result-count limits, which is the main behavioral gap.
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?
Three tight sentences: purpose first, then the result shape and follow-up action, then the access caveat. No filler and nothing buried.
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?
For a one-parameter read tool with annotations and an output schema, the description covers purpose, return shape, follow-up path, and an access caveat. The only remaining hole is ranking/pagination or result-limit behavior, which an agent would want when results are large.
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?
With a single required parameter and 100% schema description coverage, the schema already carries the parameter meaning ("Search terms."). The description adds no syntax, format, or query-semantics detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource ("Search site content") plus the scope ("across all collections you can see"), which implicitly separates it from per-collection siblings like search_collection. However, it never names or contrasts with search_collections, docs_search, or query_collection, leaving the agent to infer the boundary.
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 gives a clear usage chain: search, then pass a result id to `fetch` to read the full document, which names a concrete alternative next step. It also states a caller-dependent exclusion ("Drafts are hidden from anonymous callers"). It lacks explicit when-not guidance against the similarly named search siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_collectionARead-onlyIdempotentInspect
Free-text search within a single collection. Returns matching items decorated with a public url; total reflects what was found. Supports AND (default), OR, and "quoted phrases". Searches across the properties listed in the catalog below — other schema properties exist on objects but are not searchable here; use get_object for the full record or describe_collection to see every property. This tool does not filter by field value — use query_collection with include/exclude for that. Drafts are auto-hidden from anonymous callers.
Available collections and filterable properties:
articles — id (id, sortable), title (text), author (select), summary (textarea), date (date, sortable), draft (toggle), updated (datetime, sortable)
comparisons — competitor (text), competitorUrl (url), heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable)
extension — id (id, sortable), name (text), extensionId (text), soldAs (text), summary (textarea), category (select), price (number, sortable), currency (select), minEdition (select), minVersion (text), bundled (toggle), beta (toggle), docsUrl (url), productUrl (url), draft (toggle), owner (select), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)
releases — id (id, sortable), version (text), title (text), date (date, sortable), draft (toggle), urgent (toggle), fullnotesurl (url), announce (toggle)
roundups — heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable)
showcase — name (text), url (url), industry (select), id (id, sortable), owner (select), draft (toggle), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items to return (capped at 50 to fit MCP response-size budgets). | |
| query | Yes | Search terms. AND-semantics by default; use `or` between terms for OR; wrap phrases in double quotes. | |
| format | No | Output format for styledtext properties on the matched items. markdown is friendliest for AI consumption. | markdown |
| locale | No | BCP 47 locale tag. Accepted for forward-compat with the 3.6 i18n release — has no effect today. | |
| collection | Yes | Collection id to search within. Use list_collections to discover available collections. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matched objects, each a flat field map decorated with a `url`. Field set varies by collection. |
| limit | Yes | Applied result cap. |
| query | Yes | The query that was run. |
| total | Yes | Number of items returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real context on top: matching items get a public `url`, `total` reflects actual matches, and drafts are auto-hidden from anonymous callers — an auth-dependent behavior nothing in the annotations implies. It stops short of describing ranking/relevance ordering or pagination beyond the 50 cap, which would be the last increment to 5.
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 substantive guidance is front-loaded in four tight sentences before the catalog, and each sentence adds a distinct rule (search scope, query syntax, searchable-vs-full-record, field-filter alternative). The per-collection property dump is long and partly overlaps what describe_collection returns, which keeps it from a 5.
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?
For a 5-parameter read tool with full schema coverage, an output schema, and complete annotations, nothing an agent needs to call it correctly is missing — target collection values, query grammar, result decoration, and draft visibility are all present.
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 description coverage is 100%, so the baseline is 3; the description exceeds it by supplying the collection catalog, which is the value space for the required `collection` parameter and cannot be derived from the schema. It also restates the AND/OR/quoted-phrase query grammar, though that is largely duplicated from the schema's own query description.
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?
States a specific verb ('free-text search') and bounded resource ('within a single collection'), and immediately distinguishes itself from the plural sibling search_collections and the field-filter sibling query_collection. An agent can pick between them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-not guidance: 'does not filter by field value — use query_collection with include/exclude for that', plus pointers to get_object for full records and describe_collection for all properties. The alternatives and the conditions selecting them are named outright, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_collectionsARead-onlyIdempotentInspect
Full-text search across every collection you can see, in one call. Returns matching items each decorated with collection (which collection the hit came from) and url. Pair collection + id to fetch the full record via get_object. Call list_collections for the available collections and describe_collection on any one for its full property list; properties not flagged filterable there exist on objects but are not searched here (use get_object for the full record). For a single-collection search use search_collection instead — same query syntax, scoped tighter. Drafts are auto-hidden from anonymous callers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items returned in aggregate across all collections. Capped at 50 for MCP response-size budgets. | |
| query | Yes | Search terms. AND-semantics by default; use `or` between terms for OR; wrap phrases in double quotes. | |
| format | No | Output format for styledtext properties on the matched items. markdown is friendliest for AI consumption. | markdown |
| locale | No | BCP 47 locale tag. Accepted for forward-compat with the 3.6 i18n release — has no effect today. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Matched objects across collections, each a flat field map decorated with `collection` (the source collection id) and `url`. Field set varies by collection. |
| limit | Yes | Applied aggregate result cap. |
| query | Yes | The query that was run. |
| total | Yes | Number of items returned in aggregate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive behavior, but the description adds real context beyond them: drafts are auto-hidden from anonymous callers, non-filterable properties exist on objects yet are not searched, and results are decorated with `collection` and `url`. It stops short of describing result ordering or pagination behavior beyond the limit cap.
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?
Front-loads the core action in the first sentence, then layers alternatives and caveats. Dense but nearly every clause earns its place; the property/filterable caveat is the only sentence that could be trimmed for a hurried reader.
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?
Given an output schema exists, the description need not detail return shapes, yet it still flags the two key result fields and how to use them. Combined with the scoping caveats and sibling routing, an agent has everything needed to call this correctly.
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% (baseline 3), and the description adds semantic scope for `query` by clarifying that only filterable properties are searched and that results must be paired with `id` to fetch records. It doesn't restate limit/format/locale, which the schema already handles well.
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?
States a specific verb and resource ('Full-text search across every collection you can see, in one call') plus the scope boundary (all collections vs. one). It explicitly names the narrower sibling search_collection and contrasts it, so an agent can distinguish the two without opening schemas.
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?
Explicitly routes the agent: use list_collections for available collections, describe_collection for property lists, get_object (via collection + id) for the full record, and search_collection for single-collection scope. Each alternative is paired with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
20 tool updates
- First observed
describe_collection - First observed
describe_view - First observed
docs_get - First observed
docs_lookup - First observed
docs_search - First observed
fetch - First observed
find_comparison - First observed
get_object - First observed
get_resource - First observed
get_view - First observed
latest_release - First observed
list_collections - First observed
list_guides - First observed
list_views - First observed
needs_review - First observed
query_collection - First observed
query_view - First observed
search - First observed
search_collection - First observed
search_collections
Publisher details
- Operator
- Aspect Services, LLC · Publisher source
- Operator website
- https://totalcms.co · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://totalcms.co/integrations · Publisher source
- Trust center
- https://totalcms.co/trust · Publisher source
- Restrictions
- None. Public read-only endpoint over Streamable HTTP: no account, no API key, no OAuth, no paid plan, no regional limits. · Publisher source
Related MCP Connectors
Read-only mdprint product information, documentation and Markdown examples. No document uploads.
Headless CMS. Search the docs and read, draft, publish, and schedule entries via OAuth.
Read-only HotAPI documentation: search integration guides and inspect OpenAPI operations.
Public read-only SYMBaiEX developer and agent documentation.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides access to microCMS documentation, enabling AI assistants to search and retrieve the latest document content.3122 npm8MIT
- AlicenseNot gradedqualityBmaintenanceRead-only remote tools let agents search a curated directory of skills, harnesses, MCP servers, tools, protocols and APIs, then fetch full entries plus long-form guides, comparisons, stacks and downloadable Agent Skills. Needs no install, API key or authentication over Streamable HTTP.MIT
- AlicenseNot gradedqualityBmaintenanceRead-only, unauthenticated remote MCP server for public Wavedash docs, providing SDK guidance, engine setup help, and publishing checklists for agents.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables users to list, search, and read official versioned PostgreSQL documentation, including archived, beta, and development releases, and retrieve pages as Markdown.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.