Skip to main content
Glama

grouping_citations

Group citation references into connected components, treating high-degree nodes as anchors and honoring distinct_from declarations to correct grouping without dropping cited facts.

Instructions

Connected components of the hand-written CB-id reference graph.

READ-ONLY, and an ANNOTATION of what people already wrote — no link here is inferred. Every edge carries the field it came from and the quoted context of its first mention. A node whose degree exceeds hub_degree is a landmark many work units point AT, not a member of one: it does not transmit connectivity and is reported as an ANCHOR with its citers, so the components either side of it stay separate. References to ids outside the population are COUNTED as dangling, never dropped.

A pair you have declared DIFFERENT — relations_relate(a, "distinct_from", b) — stops being joined BY THAT REFERENCE, in either order; retracting the declaration brings the grouping back. The citation itself still appears, with its quoted context, in suppressed_edges: your declaration corrects the conclusion this tool draws from the reference, not the fact that somebody wrote it. Read still_grouped on each entry before trusting the separation — dropping one reference does not cut a graph, so if a third card cites both they are in one component regardless, and that flag (counted by still_grouped_total) is how the report tells you your declaration lost rather than leaving you to notice. This is the ONLY place distinct_from suppresses: grouping_filing's declared lineage (split_from / split_children) is untouched, because overriding one declaration with another is a different question from overriding a guess.

Args:

  • status: Narrow/widen the population (default: live statuses; "all")

  • category: Restrict to one category

  • hub_degree: Degree above which a node becomes an anchor (default 3, chosen on the outcome — see DEFAULT_HUB_DEGREE); None disables hub splitting and returns the raw components

  • component_limit: Max components returned (totals stay visible)

  • member_limit: Max members per component (edges follow the page)

  • anchor_limit: Max anchors returned (default 25)

  • orphan_limit: Max orphan ids returned (default 50)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusNo
categoryNo
hub_degreeNo
anchor_limitNo
member_limitNo
orphan_limitNo
component_limitNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.2.2

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations present, the description carries the full disclosure burden and exceeds it: READ-ONLY guarantee, non-inference of links, edge payloads (source field + quoted first-mention context), hub-to-anchor transformation with loss of connectivity transmission, dangling references counted rather than dropped, and the precise semantics of suppressed_edges and still_grouped. These are substantive behaviors no structured field could convey.

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?

The description is long, but the tool's semantics are genuinely complex (graph components, anchors, dangling refs, cross-tool declaration interaction) and every paragraph adds necessary information rather than padding. Core purpose and read-only status are front-loaded, followed by edge cases, the sibling boundary, and a cleanly ordered parameter list; it sits at the justified upper bound of length.

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

Completeness5/5

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

For a 7-parameter, zero-annotation tool with subtle graph behavior, the description covers the algorithm, hub/anchor handling, dangling references, the distinct_from interaction, the still_grouped caveat, and the grouping_filing boundary. An output schema exists to document the return structure, while the description already names the key output concepts (components, anchors, suppressed_edges, still_grouped_total) so the agent can interpret results correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate, and its Args section does: all 7 parameters receive meaning beyond bare types (e.g., hub_degree: 'None disables hub splitting and returns the raw components'; component_limit: 'totals stay visible'; member_limit: 'edges follow the page'). The parameter documentation adds genuine operational value at the exact point where the schema is silent.

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

Purpose5/5

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

The opening line, 'Connected components of the hand-written CB-id reference graph,' names a precise resource and operation, and immediately adds the READ-ONLY qualifier that it is an annotation of what people wrote, not inferred links. It explicitly carves out sibling grouping_filing ('declared lineage ... is untouched'), so an agent can tell them apart.

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

Usage Guidelines5/5

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

States the exact scope boundary: 'This is the ONLY place distinct_from suppresses,' and distinguishes from grouping_filing's split_from/split_children lineage, which is deliberately not affected. It also gives a concrete directive — 'Read still_grouped on each entry before trusting the separation' — and explains the failure mode where a third citation keeps two nodes joined despite a distinct_from declaration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/faxik/codebugs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server