Skip to main content
Glama

Read content

content_read
Read-onlyIdempotent

Reads entries, categories, comments, filters, albums and video channels of a content module (news, blog, publ, board, photo, video, faq, dir, load, gb, stuff, mchat, polls) on the active site.

Input Schema

NameRequiredDescriptionDefault
idNoRecord, category, comment, or forum entity id.
dateNoList filter date yyyy-mm-dd or yyyy.
pageNoList page, from 1.
sortNoList sort asc|desc.
treeNocomments_all: yes tree / no flat.
actionYesOperation to run. Each oneOf entry describes one action and lists its parameters.
detailNoRecord form of a paged list. brief (default): the fields that identify a record, without full texts and HTML; for entries id, title up to 120 characters, status, date added (UTC, ISO 8601), public URL, category id and an excerpt up to 200 characters. Titles and excerpts are plain text; names, logins, paths, URLs and other identifiers are as the source gives them. full: complete records. A list reply is at most 30 KB and holds every record of its page: a record that does not fit in full comes in brief form, marked detail brief, the reply counts such records in brief_records, and get by id returns the complete record; brief records shorten their excerpts, then keep only their ids and titles. Only a page that does not fit even so is cut: truncated is true and next names the offset to go on from.
moduleNoContent module code. poll is the same module as polls (module and settings lists name it poll). Not used by comments_all. The forum has its own forum_* tools.
offsetNoRecords to skip from the start of a list; overrides page. A list reply cut at its size limit names the offset that follows in next.
pendingNo1 = moderation / pending-only list.
user_idNoAct-as user id.
categoryNoCategory id (list filter / add).
per_pageNoRecords per page: 1-50, 20 by default, larger values count as 50.
channel_idNoVideo channel id.
filter_numNoFilter number 1-3.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "list",
      -    "description": "Lists entries of a module (photo: albums), with paging and filters. Required: module. Optional: id, page, per_page, category, date, pending, user_id, sort."
      -  },
      -  {
      -    "const": "get",
      -    "description": "Returns one entry. Required: module, id."
      -  },
      -  {
      -    "const": "fields",
      -    "description": "Lists the entry fields of a module, including custom fields other1-other5. Required: module."
      -  },
      -  {
      -    "const": "category_list",
      -    "description": "Lists the categories of a module, or returns one category by id. Required: module. Optional: id."
      -  },
      -  {
      -    "const": "comments_list",
      -    "description": "Lists the comments of an entry. Required: module, id."
      -  },
      -  {
      -    "const": "comments_all",
      -    "description": "Lists the latest comments of all modules. No module is needed. Optional: page, per_page, tree, sort."
      -  },
      -  {
      -    "const": "filter_list",
      -    "description": "Lists the entry filters of a module. Required: module. Optional: filter_num, id."
      -  },
      -  {
      -    "const": "album_list",
      -    "description": "Lists photo albums (module photo). Required: module. Optional: category, page."
      -  },
      -  {
      -    "const": "channel_list",
      -    "description": "Lists video channels, or returns one by channel_id or id (module video). Required: module. Optional: channel_id, id."
      -  },
      -  {
      -    "const": "channel_category_list",
      -    "description": "Lists video channel categories (module video). Required: module. Optional: id."
      -  },
      -  {
      -    "const": "smiles",
      -    "description": "Lists chat smiles (module mchat). Required: module."
      -  }
      -]New value: +[
      +  {
      +    "const": "list",
      +    "description": "Lists entries of a module (photo: photos of the albums) a page at a time, with filters. By default entries are brief, without full texts; complete entries come with detail=full, and one complete entry from get by id. The reply has page, per_page, total, has_more, truncated and, while entries remain, next with the paging arguments of the following page. Required: module. Optional: id, page, per_page, offset, detail, category, date, pending, user_id, sort."
      +  },
      +  {
      +    "const": "get",
      +    "description": "Returns one entry. Required: module, id."
      +  },
      +  {
      +    "const": "fields",
      +    "description": "Lists the entry fields of a module, including custom fields other1-other5. Required: module. Optional: offset."
      +  },
      +  {
      +    "const": "category_list",
      +    "description": "Lists the categories of a module, or returns one category by id. Required: module. Optional: id, offset."
      +  },
      +  {
      +    "const": "comments_list",
      +    "description": "Lists the comments of an entry a page at a time, paged like list. Brief comments by default; detail=full gives complete comments with their replies. Required: module, id. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "comments_all",
      +    "description": "Lists the latest comments of all modules a page at a time, paged like list. No module is needed. Brief comments by default; detail=full gives complete comments. Optional: page, per_page, offset, detail, tree, sort."
      +  },
      +  {
      +    "const": "filter_list",
      +    "description": "Lists the entry filters of a module. Required: module. Optional: filter_num, id, offset."
      +  },
      +  {
      +    "const": "album_list",
      +    "description": "Lists the photos of photo albums (module photo), of one album when category is set; paged like list. Required: module. Optional: category, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "channel_list",
      +    "description": "Lists video channels, or returns one by channel_id or id (module video). Required: module. Optional: channel_id, id, offset."
      +  },
      +  {
      +    "const": "channel_category_list",
      +    "description": "Lists video channel categories (module video). Required: module. Optional: id, offset."
      +  },
      +  {
      +    "const": "smiles",
      +    "description": "Lists chat smiles (module mchat). Required: module. Optional: offset."
      +  }
      +]
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "Record form of a paged list. brief (default): the fields that identify a record, without full texts and HTML; for entries id, title up to 120 characters, status, date added (UTC, ISO 8601), public URL, category id and an excerpt up to 200 characters. Titles and excerpts are plain text; names, logins, paths, URLs and other identifiers are as the source gives them. full: complete records. A list reply is at most 30 KB and holds every record of its page: a record that does not fit in full comes in brief form, marked detail brief, the reply counts such records in brief_records, and get by id returns the complete record; brief records shorten their excerpts, then keep only their ids and titles. Only a page that does not fit even so is cut: truncated is true and next names the offset to go on from.",
      +  "enum": [
      +    "brief",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Records to skip from the start of a list; overrides page. A list reply cut at its size limit names the offset that follows in next.",
      +  "type": "number"
      +}
    • changedInput schema / properties / page / description
      Previous value: -"List page."New value: +"List page, from 1."
    • changedInput schema / properties / per_page / description
      Previous value: -"List page size (max 100)."New value: +"Records per page: 1-50, 20 by default, larger values count as 50."
  2. Added

TDQS

B3.2/5.0
Behavior3/5

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 fully covered. The description adds only the 'active site' context and the module/resource scope; it says nothing about pagination, truncation, or return behavior beyond what the schema's detail/offset params already document.

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?

A single front-loaded sentence with the verb first and no filler. The parenthetical module-code list partly duplicates the schema enum, a minor redundancy, but the sentence remains tight and readable.

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

Completeness3/5

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

For a complex 11-action, 15-parameter tool with no output schema, the one-line description is thin on return-value and paging behavior, though the action enum and detail parameter in the schema compensate substantially. Adequate but not fully self-contained.

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

Parameters3/5

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

Schema description coverage is 100% and the action enum carries per-action required/optional parameter detail, so the schema does the heavy lifting. The description itself adds no parameter meaning, which is the baseline 3 case when coverage is high.

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

Purpose4/5

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

The description states a specific verb ('Reads') and enumerates concrete resources (entries, categories, comments, filters, albums, video channels) plus the supported module codes. It clearly conveys the content-reading scope, but it does not explicitly differentiate itself from the content_write/content_delete siblings, relying on the name instead.

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

Usage Guidelines2/5

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

The description offers no when-to-use, when-not, or alternative guidance; it is a single scope sentence. Prerequisites (an active site) are only implied by 'on the active site', and the routing hints (e.g. forum_* tools, comments_all needing no module) live in the schema, not the description.

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.