Skip to main content
Glama

Get cited bylaw section text

getBylawSection
Read-onlyIdempotent

Return the stored bylaw section text behind a snapshot citation. Pass sectionIds copied from citations.*.knowledgeSectionId on getFeasibilitySnapshot. Or pass geoDivisionId from coverage.geoDivisionId, zoneCode from zone.code, and sectionNumbers such as 3.1 or 3.2. The markdown is the schedule text. A number in the snapshot can still be conditional on frontage, tenure, or adjoining district. Each section returns at most 12,000 characters. A cut section has truncated: true, totalChars and nextOffset: call again with that section id and textOffset: nextOffset for the rest. Ids or section numbers with no active chunk come back in missing.

Input Schema

NameRequiredDescriptionDefault
contextYesExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution."
zoneCodeNozone.code from getFeasibilitySnapshot, for example C-2.
sectionIdsNoCopy citations.*.knowledgeSectionId from getFeasibilitySnapshot. 1 to 4 ids.
textOffsetNoCharacter to start each section at. Default 0. Copy nextOffset from a truncated section to read the rest.
geoDivisionIdNocoverage.geoDivisionId from getFeasibilitySnapshot.
sectionNumbersNoSection numbers to read, for example 3.1 or 3.2. 1 to 4 numbers.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / textOffset
      Added value: +{
      +  "description": "Character to start each section at. Default 0. Copy nextOffset from a truncated section to read the rest.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  2. Changed2 schema fields changed
    • removedInput schema / properties / llm_model
      Removed value: -{
      -  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "context",
      -  "llm_model"
      -]New value: +[
      +  "context"
      +]
  3. Changed1 schema field changed
    • removedInput schema / properties / conversation_id
      Removed value: -{
      -  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
      -  "type": "string"
      -}
  4. Added

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses the 12,000-character per-section cap, the truncation contract (`truncated`, `totalChars`, `nextOffset` plus the resume call with `textOffset`), the `missing` result set for unresolved ids, and the substantive caveat that a cited number may still be conditional on frontage, tenure, or adjoining district. That is exactly the behavior an agent needs before relying on the returned text.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six tight sentences, front-loaded with the purpose and the primary id-based path before the alternate path, pagination, and error case. No filler or restatement of the title.

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?

There is no output schema, so the description must carry return-value semantics — and it does, describing markdown content, the truncation fields, the resume protocol, and the `missing` collection. For a 6-parameter read tool this leaves nothing an agent needs unresolved.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds the mutually exclusive grouping of the two parameter sets ("Or pass..."), which the schema itself never states, plus how `textOffset` is derived from `nextOffset`. It also gives concrete example values for `sectionNumbers` (3.1, 3.2).

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?

"Return the stored bylaw section text behind a snapshot citation" names a specific verb (return), resource (bylaw section text), and scope (behind a snapshot citation). This clearly distinguishes it from the sibling getFeasibilitySnapshot, which produces the citations rather than the text.

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

Usage Guidelines4/5

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

The description gives two concrete invocation paths — copy `sectionIds` from `citations.*.knowledgeSectionId`, or use `geoDivisionId` + `zoneCode` + `sectionNumbers` — and implicitly establishes getFeasibilitySnapshot as the prerequisite. It does not state when this tool is not appropriate (e.g. no snapshot yet, or coverage gaps), but the context is otherwise clear.

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.