Skip to main content
Glama

Read forum

forum_read
Read-onlyIdempotent

Reads forums, sections, topics, posts and polls of the forum module on the active site.

Input Schema

NameRequiredDescriptionDefault
idNoRecord, category, comment, or forum entity id.
pageNoList page, from 1.
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.
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.
poll_idNoPoll id (forum or site polls).
post_idNoForum post id.
forum_idNoForum id.
per_pageNoRecords per page: 1-50, 20 by default, larger values count as 50.
topic_idNoTopic id.
section_idNoForum section id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "forum_list",
      -    "description": "Lists forums, or the forums under id (or forum_id). Optional: id, forum_id, offset."
      -  },
      -  {
      -    "const": "forum_get",
      -    "description": "Returns one forum (id in forum_id or id). Optional: forum_id, id."
      -  },
      -  {
      -    "const": "section_list",
      -    "description": "Lists forum sections, or returns one (id in section_id or id). Optional: section_id, id, offset."
      -  },
      -  {
      -    "const": "topic_list",
      -    "description": "Lists the topics of a forum a page at a time. Brief topics by default; detail=full gives complete topics. The reply has page, per_page, total, has_more, truncated and next. Optional: forum_id, topic_id, page, per_page, offset, detail."
      -  },
      -  {
      -    "const": "topic_get",
      -    "description": "Returns one topic (id in topic_id or id). Optional: topic_id, id, forum_id."
      -  },
      -  {
      -    "const": "post_list",
      -    "description": "Lists the posts of a topic a page at a time. Brief posts by default, without full texts; detail=full gives complete posts, post_get one complete post. The reply has page, per_page, total, has_more, truncated and next. Optional: topic_id, post_id, page, per_page, offset, detail."
      -  },
      -  {
      -    "const": "post_get",
      -    "description": "Returns one post (id in post_id or id). Optional: post_id, id, topic_id."
      -  },
      -  {
      -    "const": "poll_list",
      -    "description": "Lists forum polls a page at a time. Brief polls by default; detail=full gives complete polls. The reply has page, per_page, total, has_more, truncated and next. Optional: forum_id, poll_id, page, per_page, offset, detail."
      -  },
      -  {
      -    "const": "poll_get",
      -    "description": "Returns one forum poll (id in poll_id or id). Optional: poll_id, id, forum_id."
      -  },
      -  {
      -    "const": "poll_results",
      -    "description": "Returns the results of a forum poll (id in poll_id or id). Optional: poll_id, id."
      -  }
      -]New value: +[
      +  {
      +    "const": "forum_list",
      +    "description": "Lists forums, or the forums under id (or forum_id). Optional: id, forum_id, offset."
      +  },
      +  {
      +    "const": "forum_get",
      +    "description": "Returns one forum (id in forum_id or id). Required: forum_id or id."
      +  },
      +  {
      +    "const": "section_list",
      +    "description": "Lists forum sections, or returns one (id in section_id or id). Optional: section_id, id, offset."
      +  },
      +  {
      +    "const": "topic_list",
      +    "description": "Lists the topics of a forum a page at a time. Brief topics by default; detail=full gives complete topics. The reply has page, per_page, total, has_more, truncated and next. Optional: forum_id, topic_id, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "topic_get",
      +    "description": "Returns one topic (id in topic_id or id). Required: topic_id or id. Optional: forum_id."
      +  },
      +  {
      +    "const": "post_list",
      +    "description": "Lists the posts of a topic a page at a time. Brief posts by default, without full texts; detail=full gives complete posts, post_get one complete post. The reply has page, per_page, total, has_more, truncated and next. Required: topic_id or post_id. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "post_get",
      +    "description": "Returns one post (id in post_id or id). Required: post_id or id. Optional: topic_id."
      +  },
      +  {
      +    "const": "poll_list",
      +    "description": "Lists forum polls a page at a time. Brief polls by default; detail=full gives complete polls. The reply has page, per_page, total, has_more, truncated and next. Optional: forum_id, poll_id, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "poll_get",
      +    "description": "Returns one forum poll (id in poll_id or id). Required: poll_id or id. Optional: forum_id."
      +  },
      +  {
      +    "const": "poll_results",
      +    "description": "Returns the results of a forum poll (id in poll_id or id). Required: poll_id or id."
      +  }
      +]
  2. Changed5 schema fields changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "forum_list",
      -    "description": "Lists forums, or the forums under id (or forum_id). Optional: id, forum_id."
      -  },
      -  {
      -    "const": "forum_get",
      -    "description": "Returns one forum (id in forum_id or id). Optional: forum_id, id."
      -  },
      -  {
      -    "const": "section_list",
      -    "description": "Lists forum sections, or returns one (id in section_id or id). Optional: section_id, id."
      -  },
      -  {
      -    "const": "topic_list",
      -    "description": "Lists the topics of a forum. Optional: forum_id, topic_id, page, per_page."
      -  },
      -  {
      -    "const": "topic_get",
      -    "description": "Returns one topic (id in topic_id or id). Optional: topic_id, id, forum_id."
      -  },
      -  {
      -    "const": "post_list",
      -    "description": "Lists the posts of a topic. Optional: topic_id, post_id, page, per_page."
      -  },
      -  {
      -    "const": "post_get",
      -    "description": "Returns one post (id in post_id or id). Optional: post_id, id, topic_id."
      -  },
      -  {
      -    "const": "poll_list",
      -    "description": "Lists forum polls. Optional: forum_id, poll_id, page, per_page."
      -  },
      -  {
      -    "const": "poll_get",
      -    "description": "Returns one forum poll (id in poll_id or id). Optional: poll_id, id, forum_id."
      -  },
      -  {
      -    "const": "poll_results",
      -    "description": "Returns the results of a forum poll (id in poll_id or id). Optional: poll_id, id."
      -  }
      -]New value: +[
      +  {
      +    "const": "forum_list",
      +    "description": "Lists forums, or the forums under id (or forum_id). Optional: id, forum_id, offset."
      +  },
      +  {
      +    "const": "forum_get",
      +    "description": "Returns one forum (id in forum_id or id). Optional: forum_id, id."
      +  },
      +  {
      +    "const": "section_list",
      +    "description": "Lists forum sections, or returns one (id in section_id or id). Optional: section_id, id, offset."
      +  },
      +  {
      +    "const": "topic_list",
      +    "description": "Lists the topics of a forum a page at a time. Brief topics by default; detail=full gives complete topics. The reply has page, per_page, total, has_more, truncated and next. Optional: forum_id, topic_id, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "topic_get",
      +    "description": "Returns one topic (id in topic_id or id). Optional: topic_id, id, forum_id."
      +  },
      +  {
      +    "const": "post_list",
      +    "description": "Lists the posts of a topic a page at a time. Brief posts by default, without full texts; detail=full gives complete posts, post_get one complete post. The reply has page, per_page, total, has_more, truncated and next. Optional: topic_id, post_id, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "post_get",
      +    "description": "Returns one post (id in post_id or id). Optional: post_id, id, topic_id."
      +  },
      +  {
      +    "const": "poll_list",
      +    "description": "Lists forum polls a page at a time. Brief polls by default; detail=full gives complete polls. The reply has page, per_page, total, has_more, truncated and next. Optional: forum_id, poll_id, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "poll_get",
      +    "description": "Returns one forum poll (id in poll_id or id). Optional: poll_id, id, forum_id."
      +  },
      +  {
      +    "const": "poll_results",
      +    "description": "Returns the results of a forum poll (id in poll_id or id). Optional: poll_id, id."
      +  }
      +]
    • 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."
  3. 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=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds only that reads are scoped to the active site, which is genuinely useful context, but says nothing about pagination caps, brief-vs-full defaults or error behavior.

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 no filler, and the scope ('active site') is placed at the end where it reads naturally. It is arguably too thin for a ten-action tool, but there is no wasted text to trim.

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 ten-action tool with eleven parameters and no output schema, one sentence leaves the dispatcher model, paging behavior and site-scoping mechanics entirely to the schema. The schema is rich enough to carry most of that load, but the description does not prepare an agent for the action-per-call pattern.

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%: every action variant and every parameter (id, page, per_page, offset, detail, and each entity id) is documented in the oneOf entries and property descriptions. The description contributes nothing 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.

Purpose4/5

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

The verb 'Reads' plus the enumerated resources (forums, sections, topics, posts, polls) states exactly what data the tool surfaces and implicitly separates it from forum_write and forum_delete. The one gap is that it never mentions the action-dispatcher design, so the multi-operation nature only becomes visible in the schema.

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?

There is no statement of when to choose this over forum_write/forum_delete, no mention that a site must first be selected via select_site, and no guidance on choosing among the ten actions. Only the phrase 'active site' hints at a prerequisite, and it is left unexplained.

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.