Skip to main content
Glama

resolve_tag

Resolves a single room tag to its plan tag, room-finish schedule row, and finish-code definitions, with evidence pointers; returns unresolved or ambiguous instead of guessing.

Instructions

Resolve ONE room tag across the set (#87): the plan tag → its room-finish schedule row → each finish code's definition in the finish/material schedule, EVERY edge carrying an evidence pointer (sheet + literal text + bbox — pass a bbox to view_sheet to look at the source). Rows carried by a continuation sheet ("… SCHEDULE — CONT'D") resolve exactly like base-sheet rows, citing the sheet the ink is on. The doctrine is refusal over guessing: a room that appears on the plan with no schedule row returns status "unresolved" with the reason (and still cites the plan tag); reused room numbers return "ambiguous" rather than picking one — on a multi-building set the refusal LISTS the candidate rows per building, and a building-qualified tag ("A-134") picks the building the set names. A delta triangle or REV tag on the answering row (or the plan bubble) rides the result as "revisions": the codes returned are the POST-revision answer, but the ink changed under that delta — view_sheet the marker's bbox and check the addendum before pricing. Coordinates are image px at render scale 2.0: PDF pt × 2, origin top-left, y down (the browser canvas's native space). Sheet payloads carry dims in both px and pt.

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": {
      "tag": "<tag>"
    },
    "name": "resolve_tag"
  }
}

Input Schema

NameRequiredDescriptionDefault
tagYesThe room tag as drawn, e.g. "134" or "139A" — or building-qualified on a multi-building set, e.g. "A-134" (building A, room 134)

Output Schema

NameRequiredDescriptionDefault
tagYes
roomYesThe plan tag, when the room appears on a plan sheet — cited even when resolution fails. null on a multi-building ambiguity: citing one building's tag would be quietly wrong
reasonNounresolved only — WHY (no schedule row / ambiguous / no schedule found). A room that appears on the plan with no row comes back here, never as a silent omission
statusYes
sourcesNoThe chain: plan tag → schedule row (the row cites the sheet that CARRIES it — under a continuation that is the CONT'D sheet)
buildingNoresolved only — the building whose schedule row answered, when the set names buildings
finishesNo
revisionsNoresolved only — delta/REV markers on the answering schedule row or the plan bubble. The finishes above are the POST-revision answer, but the ink changed: check the marker (view_sheet its bbox) and the addendum before pricing
candidatesNounresolved only — every schedule row that COULD have answered (an ambiguous multi-building tag lists one per building; qualify the tag, e.g. "A-134", to pick)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed27 schema fields changedv0.1.31
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / finishes / items / properties / definition / properties / cells / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / finishes / items / properties / definition / properties / source / $ref
      Removed value: -"#/properties/room/anyOf/0/properties/revision/properties/source"
    • addedOutput schema / properties / finishes / items / properties / definition / properties / source / additionalProperties
      Added value: +false
    • addedOutput schema / properties / finishes / items / properties / definition / properties / source / description
      Added value: +"An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source."
    • addedOutput schema / properties / finishes / items / properties / definition / properties / source / properties
      Added value: +{
      +  "bbox": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "x0": {
      +        "type": "number"
      +      },
      +      "x1": {
      +        "type": "number"
      +      },
      +      "y0": {
      +        "type": "number"
      +      },
      +      "y1": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "x0",
      +      "y0",
      +      "x1",
      +      "y1"
      +    ],
      +    "type": "object"
      +  },
      +  "sheet": {
      +    "type": "string"
      +  },
      +  "text": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / finishes / items / properties / definition / properties / source / required
      Added value: +[
      +  "sheet",
      +  "text",
      +  "bbox"
      +]
    • addedOutput schema / properties / finishes / items / properties / definition / properties / source / type
      Added value: +"object"
    • removedOutput schema / properties / finishes / items / properties / source / $ref
      Removed value: -"#/properties/room/anyOf/0/properties/revision/properties/source"
    • addedOutput schema / properties / finishes / items / properties / source / additionalProperties
      Added value: +false
    • addedOutput schema / properties / finishes / items / properties / source / description
      Added value: +"An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source."
    • addedOutput schema / properties / finishes / items / properties / source / properties
      Added value: +{
      +  "bbox": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "x0": {
      +        "type": "number"
      +      },
      +      "x1": {
      +        "type": "number"
      +      },
      +      "y0": {
      +        "type": "number"
      +      },
      +      "y1": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "x0",
      +      "y0",
      +      "x1",
      +      "y1"
      +    ],
      +    "type": "object"
      +  },
      +  "sheet": {
      +    "type": "string"
      +  },
      +  "text": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / finishes / items / properties / source / required
      Added value: +[
      +  "sheet",
      +  "text",
      +  "bbox"
      +]
    • addedOutput schema / properties / finishes / items / properties / source / type
      Added value: +"object"
    • removedOutput schema / properties / revisions / items / $ref
      Removed value: -"#/properties/room/anyOf/0/properties/revision"
    • addedOutput schema / properties / revisions / items / additionalProperties
      Added value: +false
    • addedOutput schema / properties / revisions / items / description
      Added value: +"A revision marker (delta triangle / 'REV 2' tag) attached to this item: the ink CHANGED under that revision. The value read is the post-revision answer — view_sheet the marker's bbox and check the addendum before pricing"
    • addedOutput schema / properties / revisions / items / properties
      Added value: +{
      +  "drawn": {
      +    "description": "true = a DRAWN delta: a bare digit inside a triangle of linework (the common CAD convention — the text layer carries only the digit; the geometry proved the triangle). The evidence bbox spans digit and triangle",
      +    "type": "boolean"
      +  },
      +  "rev": {
      +    "type": "string"
      +  },
      +  "source": {
      +    "additionalProperties": false,
      +    "description": "An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source.",
      +    "properties": {
      +      "bbox": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "x0": {
      +            "type": "number"
      +          },
      +          "x1": {
      +            "type": "number"
      +          },
      +          "y0": {
      +            "type": "number"
      +          },
      +          "y1": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "x0",
      +          "y0",
      +          "x1",
      +          "y1"
      +        ],
      +        "type": "object"
      +      },
      +      "sheet": {
      +        "type": "string"
      +      },
      +      "text": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "sheet",
      +      "text",
      +      "bbox"
      +    ],
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / revisions / items / required
      Added value: +[
      +  "rev",
      +  "source"
      +]
    • addedOutput schema / properties / revisions / items / type
      Added value: +"object"
    • changedOutput schema / properties / room / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bbox": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "x0": {
      -            "type": "number"
      -          },
      -          "x1": {
      -            "type": "number"
      -          },
      -          "y0": {
      -            "type": "number"
      -          },
      -          "y1": {
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "x0",
      -          "y0",
      -          "x1",
      -          "y1"
      -        ],
      -        "type": "object"
      -      },
      -      "building": {
      -        "description": "The building the room belongs to, when the set names one — its plan sheet's BUILDING/BLDG context, or the tag's own qualifier ('A-134')",
      -        "type": "string"
      -      },
      -      "corroboration": {
      -        "description": "Why this number is believed to be a room: \"schedule\" (a room-finish row answers for it), \"name\" (a name is drawn with it and the set has no room-finish schedule), or \"name+schedule\"",
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "The name span stacked over the tag ('' when none)",
      -        "type": "string"
      -      },
      -      "revision": {
      -        "additionalProperties": false,
      -        "description": "A revision marker (delta triangle / 'REV 2' tag) attached to this item: the ink CHANGED under that revision. The value read is the post-revision answer — view_sheet the marker's bbox and check the addendum before pricing",
      -        "properties": {
      -          "drawn": {
      -            "description": "true = a DRAWN delta: a bare digit inside a triangle of linework (the common CAD convention — the text layer carries only the digit; the geometry proved the triangle). The evidence bbox spans digit and triangle",
      -            "type": "boolean"
      -          },
      -          "rev": {
      -            "type": "string"
      -          },
      -          "source": {
      -            "additionalProperties": false,
      -            "description": "An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source.",
      -            "properties": {
      -              "bbox": {
      -                "$ref": "#/properties/room/anyOf/0/properties/bbox"
      -              },
      -              "sheet": {
      -                "type": "string"
      -              },
      -              "text": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "sheet",
      -              "text",
      -              "bbox"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "rev",
      -          "source"
      -        ],
      -        "type": "object"
      -      },
      -      "sheet": {
      -        "type": "string"
      -      },
      -      "tag": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tag",
      -      "name",
      -      "sheet",
      -      "bbox"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bbox": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "x0": {
      +            "type": "number"
      +          },
      +          "x1": {
      +            "type": "number"
      +          },
      +          "y0": {
      +            "type": "number"
      +          },
      +          "y1": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "x0",
      +          "y0",
      +          "x1",
      +          "y1"
      +        ],
      +        "type": "object"
      +      },
      +      "building": {
      +        "description": "The building the room belongs to, when the set names one — its plan sheet's BUILDING/BLDG context, or the tag's own qualifier ('A-134')",
      +        "type": "string"
      +      },
      +      "corroboration": {
      +        "description": "Why this number is believed to be a room: \"schedule\" (a room-finish row answers for it), \"name\" (a name is drawn with it and the set has no room-finish schedule), or \"name+schedule\"",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "The name span stacked over the tag ('' when none)",
      +        "type": "string"
      +      },
      +      "revision": {
      +        "additionalProperties": false,
      +        "description": "A revision marker (delta triangle / 'REV 2' tag) attached to this item: the ink CHANGED under that revision. The value read is the post-revision answer — view_sheet the marker's bbox and check the addendum before pricing",
      +        "properties": {
      +          "drawn": {
      +            "description": "true = a DRAWN delta: a bare digit inside a triangle of linework (the common CAD convention — the text layer carries only the digit; the geometry proved the triangle). The evidence bbox spans digit and triangle",
      +            "type": "boolean"
      +          },
      +          "rev": {
      +            "type": "string"
      +          },
      +          "source": {
      +            "additionalProperties": false,
      +            "description": "An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source.",
      +            "properties": {
      +              "bbox": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "x0": {
      +                    "type": "number"
      +                  },
      +                  "x1": {
      +                    "type": "number"
      +                  },
      +                  "y0": {
      +                    "type": "number"
      +                  },
      +                  "y1": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "x0",
      +                  "y0",
      +                  "x1",
      +                  "y1"
      +                ],
      +                "type": "object"
      +              },
      +              "sheet": {
      +                "type": "string"
      +              },
      +              "text": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "sheet",
      +              "text",
      +              "bbox"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "rev",
      +          "source"
      +        ],
      +        "type": "object"
      +      },
      +      "sheet": {
      +        "type": "string"
      +      },
      +      "tag": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tag",
      +      "name",
      +      "sheet",
      +      "bbox"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / sources / items / $ref
      Removed value: -"#/properties/room/anyOf/0/properties/revision/properties/source"
    • addedOutput schema / properties / sources / items / additionalProperties
      Added value: +false
    • addedOutput schema / properties / sources / items / description
      Added value: +"An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source."
    • addedOutput schema / properties / sources / items / properties
      Added value: +{
      +  "bbox": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "x0": {
      +        "type": "number"
      +      },
      +      "x1": {
      +        "type": "number"
      +      },
      +      "y0": {
      +        "type": "number"
      +      },
      +      "y1": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "x0",
      +      "y0",
      +      "x1",
      +      "y1"
      +    ],
      +    "type": "object"
      +  },
      +  "sheet": {
      +    "type": "string"
      +  },
      +  "text": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / sources / items / required
      Added value: +[
      +  "sheet",
      +  "text",
      +  "bbox"
      +]
    • addedOutput schema / properties / sources / items / type
      Added value: +"object"
  2. Changed10 schema fields changedv0.1.18
    • changedOutput schema / properties / finishes / items / properties / definition / properties / source / $ref
      Previous value: -"#/properties/finishes/items/properties/source"New value: +"#/properties/room/anyOf/0/properties/revision/properties/source"
    • addedOutput schema / properties / finishes / items / properties / source / $ref
      Added value: +"#/properties/room/anyOf/0/properties/revision/properties/source"
    • removedOutput schema / properties / finishes / items / properties / source / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / finishes / items / properties / source / description
      Removed value: -"An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source."
    • removedOutput schema / properties / finishes / items / properties / source / properties
      Removed value: -{
      -  "bbox": {
      -    "$ref": "#/properties/room/anyOf/0/properties/bbox"
      -  },
      -  "sheet": {
      -    "type": "string"
      -  },
      -  "text": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / finishes / items / properties / source / required
      Removed value: -[
      -  "sheet",
      -  "text",
      -  "bbox"
      -]
    • removedOutput schema / properties / finishes / items / properties / source / type
      Removed value: -"object"
    • addedOutput schema / properties / revisions
      Added value: +{
      +  "description": "resolved only — delta/REV markers on the answering schedule row or the plan bubble. The finishes above are the POST-revision answer, but the ink changed: check the marker (view_sheet its bbox) and the addendum before pricing",
      +  "items": {
      +    "$ref": "#/properties/room/anyOf/0/properties/revision"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / room / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bbox": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "x0": {
      -            "type": "number"
      -          },
      -          "x1": {
      -            "type": "number"
      -          },
      -          "y0": {
      -            "type": "number"
      -          },
      -          "y1": {
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "x0",
      -          "y0",
      -          "x1",
      -          "y1"
      -        ],
      -        "type": "object"
      -      },
      -      "building": {
      -        "description": "The building the room belongs to, when the set names one — its plan sheet's BUILDING/BLDG context, or the tag's own qualifier ('A-134')",
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "The name span stacked over the tag ('' when none)",
      -        "type": "string"
      -      },
      -      "sheet": {
      -        "type": "string"
      -      },
      -      "tag": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tag",
      -      "name",
      -      "sheet",
      -      "bbox"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bbox": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "x0": {
      +            "type": "number"
      +          },
      +          "x1": {
      +            "type": "number"
      +          },
      +          "y0": {
      +            "type": "number"
      +          },
      +          "y1": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "x0",
      +          "y0",
      +          "x1",
      +          "y1"
      +        ],
      +        "type": "object"
      +      },
      +      "building": {
      +        "description": "The building the room belongs to, when the set names one — its plan sheet's BUILDING/BLDG context, or the tag's own qualifier ('A-134')",
      +        "type": "string"
      +      },
      +      "corroboration": {
      +        "description": "Why this number is believed to be a room: \"schedule\" (a room-finish row answers for it), \"name\" (a name is drawn with it and the set has no room-finish schedule), or \"name+schedule\"",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "The name span stacked over the tag ('' when none)",
      +        "type": "string"
      +      },
      +      "revision": {
      +        "additionalProperties": false,
      +        "description": "A revision marker (delta triangle / 'REV 2' tag) attached to this item: the ink CHANGED under that revision. The value read is the post-revision answer — view_sheet the marker's bbox and check the addendum before pricing",
      +        "properties": {
      +          "drawn": {
      +            "description": "true = a DRAWN delta: a bare digit inside a triangle of linework (the common CAD convention — the text layer carries only the digit; the geometry proved the triangle). The evidence bbox spans digit and triangle",
      +            "type": "boolean"
      +          },
      +          "rev": {
      +            "type": "string"
      +          },
      +          "source": {
      +            "additionalProperties": false,
      +            "description": "An evidence pointer — the sheet, the literal text, and where it sits (image px). Every edge in the graph carries one; pass the bbox to view_sheet to LOOK at the source.",
      +            "properties": {
      +              "bbox": {
      +                "$ref": "#/properties/room/anyOf/0/properties/bbox"
      +              },
      +              "sheet": {
      +                "type": "string"
      +              },
      +              "text": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "sheet",
      +              "text",
      +              "bbox"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "rev",
      +          "source"
      +        ],
      +        "type": "object"
      +      },
      +      "sheet": {
      +        "type": "string"
      +      },
      +      "tag": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tag",
      +      "name",
      +      "sheet",
      +      "bbox"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / sources / items / $ref
      Previous value: -"#/properties/finishes/items/properties/source"New value: +"#/properties/room/anyOf/0/properties/revision/properties/source"
  3. Changed6 schema fields changedv0.1.12
    • changedInput schema / properties / tag / description
      Previous value: -"The room tag as drawn, e.g. \"134\" or \"139A\""New value: +"The room tag as drawn, e.g. \"134\" or \"139A\" — or building-qualified on a multi-building set, e.g. \"A-134\" (building A, room 134)"
    • addedOutput schema / properties / building
      Added value: +{
      +  "description": "resolved only — the building whose schedule row answered, when the set names buildings",
      +  "type": "string"
      +}
    • addedOutput schema / properties / candidates
      Added value: +{
      +  "description": "unresolved only — every schedule row that COULD have answered (an ambiguous multi-building tag lists one per building; qualify the tag, e.g. \"A-134\", to pick)",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "building": {
      +        "type": "string"
      +      },
      +      "key": {
      +        "type": "string"
      +      },
      +      "sheet": {
      +        "type": "string"
      +      },
      +      "table": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "key",
      +      "sheet",
      +      "table"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / room / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bbox": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "x0": {
      -            "type": "number"
      -          },
      -          "x1": {
      -            "type": "number"
      -          },
      -          "y0": {
      -            "type": "number"
      -          },
      -          "y1": {
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "x0",
      -          "y0",
      -          "x1",
      -          "y1"
      -        ],
      -        "type": "object"
      -      },
      -      "name": {
      -        "description": "The name span stacked over the tag ('' when none)",
      -        "type": "string"
      -      },
      -      "sheet": {
      -        "type": "string"
      -      },
      -      "tag": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tag",
      -      "name",
      -      "sheet",
      -      "bbox"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bbox": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "x0": {
      +            "type": "number"
      +          },
      +          "x1": {
      +            "type": "number"
      +          },
      +          "y0": {
      +            "type": "number"
      +          },
      +          "y1": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "x0",
      +          "y0",
      +          "x1",
      +          "y1"
      +        ],
      +        "type": "object"
      +      },
      +      "building": {
      +        "description": "The building the room belongs to, when the set names one — its plan sheet's BUILDING/BLDG context, or the tag's own qualifier ('A-134')",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "The name span stacked over the tag ('' when none)",
      +        "type": "string"
      +      },
      +      "sheet": {
      +        "type": "string"
      +      },
      +      "tag": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tag",
      +      "name",
      +      "sheet",
      +      "bbox"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / room / description
      Previous value: -"The plan tag, when the room appears on a plan sheet — cited even when resolution fails"New value: +"The plan tag, when the room appears on a plan sheet — cited even when resolution fails. null on a multi-building ambiguity: citing one building's tag would be quietly wrong"
    • changedOutput schema / properties / sources / description
      Previous value: -"The chain: plan tag → schedule row"New value: +"The chain: plan tag → schedule row (the row cites the sheet that CARRIES it — under a continuation that is the CONT'D sheet)"
  4. Addedv0.1.9

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so thoroughly: it declares the refusal-over-guessing doctrine, the 'unresolved' and 'ambiguous' outcomes with their payload contents, how multi-building candidates are listed, how continuation-sheet rows resolve, and how revision deltas surface. It even specifies the coordinate system (px at render scale 2.0, PDF pt × 2, top-left origin, y down), which is exactly the kind of context annotations would otherwise provide.

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 core chain is front-loaded in the first sentence and every paragraph carries real information for a tool with no annotations. Still, it is a single dense block with nested parentheticals and no visual separation between resolution semantics, refusal behavior, and coordinate conventions, which makes it harder to scan than it needs to be.

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?

An output schema exists, so return values need not be explained, and the description fills the remaining gaps: resolution chain, evidence pointers, failure statuses, revision handling, and coordinate space. Nothing an agent needs to invoke or interpret this tool correctly appears to be missing.

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?

The single tag parameter already has 100% schema description coverage, including the building-qualified 'A-134' form, so the description largely repeats documented semantics. It adds a little by implying one tag per call and by tying reused room numbers to an 'ambiguous' result, but that is behavioral detail rather than new parameter meaning.

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?

States a specific verb and resource plus the full resolution chain: plan tag → room-finish schedule row → finish code definitions in the finish/material schedule. The 'ONE room tag' scoping distinguishes it from bulk siblings like sweep_schedule_row, and the evidence-pointer framing makes the output distinctive.

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?

Gives concrete usage context: pass a bbox to view_sheet to inspect source ink, and view_sheet the delta marker before pricing. It also explains the building-qualified tag case. However, it never explicitly routes the agent away from this tool toward siblings such as sweep_schedule_row or find_schedule, so there are no stated exclusions or named alternatives.

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