Skip to main content
Glama

Find secondary conditions

find_secondary_conditions
Read-onlyIdempotent

Use this when a veteran names a service-connected condition and asks what other conditions can follow from it. Returns the records whose own primary condition is the one searched for, each with the strength of the supporting evidence, the medical rationale, key studies, filing notes, the diagnostic codes involved, and the primary condition the record itself names, so a row can be read against the query it answers. Other primary conditions that the search terms reached are summarised separately under relatedPrimaries, with the term that matched and a count, rather than being returned among the rows. Each row carries its provenance: the paragraph of 38 CFR 3.310 the link rests on, the rating schedule section and diagnostic code its evaluation comes from, the eCFR URLs for those sections, and the date the codes and percentages were checked against the rating schedule. That check establishes that a code exists in the schedule and that an evaluation is one the schedule offers for it, which is a question of validity rather than of whether a code fits a particular veteran. The key studies were drafted from published research and have not been verified citation by citation, which every row states in its provenance note. The limit parameter sets how many records one response carries, default 5 and maximum 15, and offset is how many records of the same result are skipped before the first one returned, default 0 and maximum 100000. Records are ordered by strength of evidence and then by their primary and secondary condition names, so the order is the same on every call. A response is also held to a size budget of about 12 KB: when the records within the limit would exceed it, the last of them are left out whole rather than shortened, a response with any record to serve carries at least one, and responseTrimmedForSize is true. totalExactCount is every record on file for the search, count and exactCount are the records in the response, hasMore says whether any records follow them, and nextOffset is the offset that returns the next records and is null when none follow. relatedPrimaries is returned whole on every response. A totalExactCount of 0 means nothing is on file for that search term, not that no link exists. An offset past the last record returns no records, while totalExactCount still counts the records on file. It does not diagnose, it does not establish that a particular veteran's condition is secondary, and it does not supply the medical nexus opinion a secondary claim needs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoHow many secondary-condition records one response carries, 1 to 15, default 5. A response is also held to a size budget of about 12 KB, so it can carry fewer records than the limit, whole ones only; responseTrimmedForSize is then true and nextOffset gives the offset of the first record it left out.
offsetNoHow many records of the same result to skip before the first one returned, 0 to 100000, default 0. Records keep the same order on every call, so the nextOffset one response reports returns the records that follow it.
primaryConditionYesPrimary service-connected condition to search against (e.g., "PTSD", "Lumbar strain"). Partial matches supported.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "How many secondary-condition records one response carries, 1 to 15, default 5. A response is also held to a size budget of about 12 KB, so it can carry fewer records than the limit, whole ones only; responseTrimmedForSize is then true and nextOffset gives the offset of the first record it left out.",
      +  "maximum": 15,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "How many records of the same result to skip before the first one returned, 0 to 100000, default 0. Records keep the same order on every call, so the nextOffset one response reports returns the records that follow it.",
      +  "maximum": 100000,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, but the description adds real behavioral context beyond them: the ~12 KB per-response size budget that trims whole records and sets responseTrimmedForSize, deterministic ordering by evidence strength then names, offset-past-end behavior, and the caveat that key-study citations are unverified. This is exactly the extra context the annotations cannot express.

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

Conciseness3/5

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

It is front-loaded correctly, opening with the usage condition, but the single dense paragraph repeats limit/offset defaults and maximums verbatim from the schema and packs many clauses into one block. Given no output schema, much of the length is justified, but the parameter reiteration is not.

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?

With no output schema, the description carries the full burden of explaining return values and does so thoroughly: row contents, provenance fields, relatedPrimaries summarization, totalExactCount/count/exactCount/hasMore/nextOffset semantics, and the 0-result meaning. An agent has everything needed to interpret and paginate the response.

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%, so the baseline is 3. The description restates limit (default 5, max 15) and offset (default 0, max 100000) and describes their interaction with the size budget, but that same explanation is already present in the schema's own parameter descriptions, so it adds little beyond the structured fields.

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 description states a precise action and resource: it returns secondary-condition records whose own primary condition matches the query, and it names the distinct handling of relatedPrimaries. An agent can tell this apart from siblings like analyze_rating_gap or search_legal_authority 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.

Usage Guidelines5/5

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

It opens with an explicit trigger ('Use this when a veteran names a service-connected condition and asks what other conditions can follow from it') and closes with explicit non-uses (does not diagnose, does not establish a veteran's condition is secondary, does not supply a nexus opinion). Both the when and the when-not are spelled out.

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.

Resources