Skip to main content
Glama

Comparable Map

comparable_map
Read-only

What is one thing I hold comparable to at a school I am considering? One learning unit of any kind - a course at the school it was taken at, an exam at a score, a learning unit by id, or a certification - compared with any target school: the combined check. Two equal sources, four steps run side by side: (1) comparability direct from CourseShelf - the receiver's own published mappings; (2) known equivalencies direct from CourseAtlas, live - what institutions report, CollegeBoard's among them as CourseAtlas carries them; (3) inferred comparability from CourseShelf's comparability anchors (hop 1: an exam at a shared score, a state course, a mapping, crossing kinds); (4) inferred equivalency from CourseAtlas's equivalency anchors (hop 2, its own chain). kind narrows them: known runs 1 and 2, inferred runs 3 and 4, both runs all four. The inferred comparability walks the published links of every kind (a published rule one way; an exam, through its learning unit, at a shared score, a common course number, or an agreement's or state's course both ways), crossing kinds, up to depth links. Each step says found, none, not held, error, timeout or skipped, with its time in ms. The known mappings (steps 1 and 2) decide the state - covered, missing or unknown - and the same mapping in both sources is corroboration, both rows shown; an exam lays out every score tier the target holds with the held score placed and the highest tier met marked. The inferred landings sit beside it, each with its path of published links and the rows it rests on, never counted, and not listed again on a course a known mapping reaches. Every row says its kind: comparable, known equivalent, inferred comparable, inferred equivalent. An exam is read by its learning unit under its board. Recognition is the target school's act. Each row names its current FORM's wording source: source_url, capture_file, catalog_year and source_catalog_name are that one source's, never the record's whole span. A row whose record holds more than one form or more than one source also carries version_count, source_count, first_edition_seen and last_edition_seen, and one sentence saying so in words; a record with one form and one source carries none of them and reads exactly as it always has. The forms themselves, each with its own content and its own sources, come from the one-record get, never from a list. A record last seen in an older edition says so, because the Union keeps a record no current catalog prints.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "target_unitid": "<target_unitid>",
      "item": "<item>"
    },
    "name": "comparable_map"
  }
}

Input Schema

NameRequiredDescriptionDefault
itemYesOne learning unit: a course { unitid, code as printed (e.g. BIOL 100) }, an exam { program (e.g. AP), exam (its code or title), score }, { learning_unit_id }, or { certification_ctid }
kindNoOptional: known (steps 1-2), inferred (steps 3-4) or both (default)
depthNoOptional: the most published links an inferred path may take, 1 to 3 (default 2)
sourcesNoOptional information-source selection: all (default), or a nonempty array of distinct numbers: 1 gathered published CourseShelf comparables, 2 school-published CourseAtlas equivalencies, 3 inferred CourseShelf comparability through anchors, 4 inferred CourseAtlas equivalency through anchors. Any combination is allowed. An explicit kind intersects this selection; an empty intersection is invalid. Unselected engines report not_requested. Required identity/reference reads may still be needed. Send continuation arguments unchanged.
audienceNoOptional: who the answer is for. student (the default): a course at the target school itself is met from the student's own transcript, or as entered, unless its grade is failing (F, U, NC) or withdrawn (W). institution: the target's own course counts only with explicit earned-credit or completion evidence. Carried in continue.arguments; send it back unchanged.
target_unitidYesThe school to compare with, any school, by IPEDS UNITID, e.g. 240727
courseatlas_depthNoOptional: CourseAtlas's chain depth, 1 to 3 (default 2, the transfer map's own)

Output Schema

NameRequiredDescriptionDefault
itemNoThe learning unit as read
knownNoEach known row (comparable, known equivalent) with its band and corroboration
stateNocovered | missing | unknown, from the known steps alone (reason says why; candidates when the exam or school fits several)
stepsNoEach read as it ran, in order: { step, source, asked, outcome, count, ms, records, detail } - request, item, courseatlas_identity, courseshelf_published, courseatlas_direct, courseshelf_inferred, courseatlas_inferred, target_course_join
tiersNoFor an exam: every score tier the target holds - minimum, scores, the courses it earns, met, highest_met
targetNoThe target, with its CourseAtlas identity and the time that read took
contractYes
inferredNoEach inferred landing (inferred comparable, inferred equivalent): its path (inferred_through) and the published rows it rests on (inferred_from_ids); never counted
lands_asNoKnown receiving landings and distinct receiver-owned coursework, with actual identity, full rule/source/target/connective evidence, and applicability_support {established,missing_inputs}. A known comparison is evidence; conditional policy, additional-source packages or unresolved OR awards are not established completion or additive credits.
exam_unitNoFor an exam, its learning unit under its board, which it was read by
statementYes
understoodNo
next_actionsNo
held_at_receiverNoWhen actual course identity is owned by the receiver: origin, learning_unit_id, retained transcript evidence, earned_status and missing_evidence. Identity establishes applicability; only explicit earned/completed evidence establishes earned completion. No transfer rule is manufactured
source_reads_completeNoWhether selected source evidence completed, distinct from held-item pagination. A response-window limit, failed read or retained incomplete page prevents a complete-source claim; checklist_map includes prior-learning evidence in this scope.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / audience
      Added value: +{
      +  "description": "Optional: who the answer is for. student (the default): a course at the target school itself is met from the student's own transcript, or as entered, unless its grade is failing (F, U, NC) or withdrawn (W). institution: the target's own course counts only with explicit earned-credit or completion evidence. Carried in continue.arguments; send it back unchanged.",
      +  "enum": [
      +    "student",
      +    "institution"
      +  ],
      +  "type": "string"
      +}
  2. Changed12 schema fields changed
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "Optional: known (steps 1-2), inferred (steps 3-4) or both (default)",
      +  "enum": [
      +    "known",
      +    "inferred",
      +    "both"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sources
      Added value: +{
      +  "description": "Optional information-source selection: all (default), or a nonempty array of distinct numbers: 1 gathered published CourseShelf comparables, 2 school-published CourseAtlas equivalencies, 3 inferred CourseShelf comparability through anchors, 4 inferred CourseAtlas equivalency through anchors. Any combination is allowed. An explicit kind intersects this selection; an empty intersection is invalid. Unselected engines report not_requested. Required identity/reference reads may still be needed. Send continuation arguments unchanged.",
      +  "oneOf": [
      +    {
      +      "enum": [
      +        "all"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "enum": [
      +          1,
      +          2,
      +          3,
      +          4
      +        ],
      +        "type": "integer"
      +      },
      +      "maxItems": 4,
      +      "minItems": 1,
      +      "type": "array",
      +      "uniqueItems": true
      +    }
      +  ]
      +}
    • removedOutput schema / properties / exam_node
      Removed value: -{
      -  "description": "For an exam, the exam node it was read by",
      -  "type": "object"
      -}
    • addedOutput schema / properties / exam_unit
      Added value: +{
      +  "description": "For an exam, its learning unit under its board, which it was read by",
      +  "type": "object"
      +}
    • addedOutput schema / properties / held_at_receiver
      Added value: +{
      +  "description": "When actual course identity is owned by the receiver: origin, learning_unit_id, retained transcript evidence, earned_status and missing_evidence. Identity establishes applicability; only explicit earned/completed evidence establishes earned completion. No transfer rule is manufactured",
      +  "type": "object"
      +}
    • addedOutput schema / properties / inferred
      Added value: +{
      +  "description": "Each inferred landing (inferred comparable, inferred equivalent): its path (inferred_through) and the published rows it rests on (inferred_from_ids); never counted",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / known
      Added value: +{
      +  "description": "Each known row (comparable, known equivalent) with its band and corroboration",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / lands_as / description
      Previous value: -"Each published rule, else each inferred landing, with its band; an inferred landing names its path (inferred_through) and the published rows it rests on (inferred_from_ids)"New value: +"Known receiving landings and distinct receiver-owned coursework, with actual identity, full rule/source/target/connective evidence, and applicability_support {established,missing_inputs}. A known comparison is evidence; conditional policy, additional-source packages or unresolved OR awards are not established completion or additive credits."
    • addedOutput schema / properties / source_reads_complete
      Added value: +{
      +  "description": "Whether selected source evidence completed, distinct from held-item pagination. A response-window limit, failed read or retained incomplete page prevents a complete-source claim; checklist_map includes prior-learning evidence in this scope.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / state / description
      Previous value: -"published | published_below_score | inferred | published_below_score_inferred | none | unresolved"New value: +"covered | missing | unknown, from the known steps alone (reason says why; candidates when the exam or school fits several)"
    • changedOutput schema / properties / steps / description
      Previous value: -"Each source as it ran: { step, source, outcome, count, ms, detail }"New value: +"Each read as it ran, in order: { step, source, asked, outcome, count, ms, records, detail } - request, item, courseatlas_identity, courseshelf_published, courseatlas_direct, courseshelf_inferred, courseatlas_inferred, target_course_join"
    • addedOutput schema / properties / tiers
      Added value: +{
      +  "description": "For an exam: every score tier the target holds - minimum, scores, the courses it earns, met, highest_met",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Added

TDQS

B3/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint=true, the description adds substantial behavioral context: per-step statuses (found, none, not held, error, timeout, skipped), timing in ms, corroboration behavior, form/source metadata rules, and how unselected engines report not_requested. It is consistent with the read-only annotation and discloses result-shape details beyond structured fields, though the prose is difficult to parse.

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

Conciseness2/5

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

The description is extremely long, dense, and built from semicolon-chained clauses rather than front-loaded essentials. The opening rhetorical question delays the operational meaning, and much jargon ('CourseShelf's comparability anchors,' 'the Union') forces re-reading. It is over-specified and poorly structured for an LLM caller.

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

Completeness4/5

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

For a complex seven-parameter tool with nested objects and an output schema, the description covers a great deal: source selection, audience behavior, continuation arguments, inferred-path depth, form/source metadata, and status reporting. It is functionally complete, though the organization makes it harder to use than necessary.

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 schema already documents `item`, `kind`, `depth`, `sources`, `audience`, `target_unitid`, and `courseatlas_depth`. The description repeats the kind-to-step mapping and audience semantics rather than adding new syntax or format meaning, so baseline 3 is appropriate.

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

Purpose3/5

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

The description frames the tool as a combined comparability check across four sources and distinguishes known vs inferred steps, which is more than a restatement of the title. However, the opening rhetorical question and dense domain jargon make the core verb+resource hard to extract, and it never names the obvious siblings (comparability_for_learning_unit, find_comparability, get_comparability) to clarify when this combined map is preferred.

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 explains how `kind` and `sources` narrow the internal steps, but that is parameter mechanics rather than guidance about when to select this tool over alternatives. No exclusions, prerequisites, or sibling comparisons are given, so an agent must infer usage from the name and the phrase 'the combined check.'

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.