Skip to main content

User Prompt

“Compare the latest arch set with the previous revision and show me what changed.”

Tool Call Sequence

1

Find the architectural drawings

Call: Query
{
  "entity": "sheet",
  "project_id": "proj_oak",
  "discipline": "A",
  "search": "arch"
}
Response:
{
  "count": 12,
  "items": [
    {
      "id": "sh_a101_b",
      "sheet_number": "A-101",
      "title": "FIRST FLOOR PLAN",
      "discipline": "A",
      "drawing": { "id": "dr_arch_b", "name": "Arch Set Rev B" },
      "uri": "storage://sheets/sh_a101_b/image.png",
      "blocks": [
        { "id": "blk_a101_plan_b", "type": "Plan", "identifier": "1", "name": "FIRST FLOOR PLAN", "description": "...", "uri": "...", "relations": [
          { "relation_type": "similar_to", "target": { "entity_type": "block", "id": "blk_a101_plan_a", "type": "Plan", "sheet_number": "A-101", "drawing_name": "Arch Set Rev A" } }
        ]}
      ]
    },
    {
      "id": "sh_a101_a",
      "sheet_number": "A-101",
      "title": "FIRST FLOOR PLAN",
      "discipline": "A",
      "drawing": { "id": "dr_arch_a", "name": "Arch Set Rev A" },
      "uri": "storage://sheets/sh_a101_a/image.png",
      "blocks": [ "..." ]
    }
  ]
}
What the agent learns: There are two architectural drawings — “Arch Set Rev A” (dr_arch_a) and “Arch Set Rev B” (dr_arch_b). The agent identifies these as the two revisions to compare.
2

Trigger the comparison

Call: Compare
{
  "project_id": "proj_oak",
  "drawing_a_id": "dr_arch_a",
  "drawing_b_id": "dr_arch_b"
}
Response:
{
  "job_id": "job_cmp_01",
  "status": "queued"
}
What the agent learns: The comparison job is queued. The agent needs to poll for completion.
3

Poll for completion

Call: PollJob
{
  "job_id": "job_cmp_01"
}
Response:
{
  "id": "job_cmp_01",
  "status": "completed",
  "progress": { "completed": 8, "total": 8 },
  "result": {
    "overlays": [
      {
        "id": "ov_01",
        "block_a": { "type": "Plan", "sheet_number": "A-101", "drawing_name": "Arch Set Rev A" },
        "block_b": { "type": "Plan", "sheet_number": "A-101", "drawing_name": "Arch Set Rev B" },
        "score": 0.82,
        "uri": "storage://overlays/ov_01/composite.png"
      },
      {
        "id": "ov_02",
        "block_a": { "type": "Plan", "sheet_number": "A-102", "drawing_name": "Arch Set Rev A" },
        "block_b": { "type": "Plan", "sheet_number": "A-102", "drawing_name": "Arch Set Rev B" },
        "score": 0.97,
        "uri": "storage://overlays/ov_02/composite.png"
      }
    ]
  }
}
What the agent learns: 8 sheet pairs were compared. A-101 has a score of 0.82 (significant changes), while A-102 has 0.97 (minimal changes). The agent focuses on A-101 first.
4

Get detailed changes for the most-changed sheet

Call: Query
{
  "entity": "block",
  "project_id": "proj_oak",
  "id": "blk_a101_plan_b",
  "include": ["overlays", "changes"]
}
Response:
{
  "count": 1,
  "items": [
    {
      "id": "blk_a101_plan_b",
      "type": "Plan",
      "identifier": "1",
      "name": "FIRST FLOOR PLAN",
      "uri": "storage://blocks/blk_a101_plan_b/image.png",
      "confidence": 0.96,
      "sheet": { "id": "sh_a101_b", "sheet_number": "A-101", "discipline": "A" },
      "drawing": { "id": "dr_arch_b", "name": "Arch Set Rev B" },
      "relations": [],
      "overlays": [
        {
          "id": "ov_01",
          "score": 0.82,
          "uri": "storage://overlays/ov_01/composite.png",
          "addition_uri": "storage://overlays/ov_01/additions.png",
          "deletion_uri": "storage://overlays/ov_01/deletions.png",
          "paired_block": {
            "id": "blk_a101_plan_a",
            "type": "Plan",
            "sheet_number": "A-101",
            "drawing_name": "Arch Set Rev A"
          },
          "changes": [
            { "description": "New wall added between Room 102 and 103 at grid B-3", "bounds": { "xmin": 380, "ymin": 500, "xmax": 420, "ymax": 650 } },
            { "description": "Door 104 relocated from south wall to east wall of Room 102", "bounds": { "xmin": 300, "ymin": 540, "xmax": 350, "ymax": 590 } },
            { "description": "Room 103 label changed from STORAGE to IT CLOSET", "bounds": { "xmin": 400, "ymin": 550, "xmax": 450, "ymax": 580 } }
          ]
        }
      ]
    }
  ]
}
What the agent learns: Three specific changes on A-101: a new wall, a relocated door, and a renamed room. Each has a bounding box for spatial context.
5

Get the overlay image

Call: ViewImage
{
  "uri": "storage://overlays/ov_01/composite.png"
}
Response:
{
  "url": "https://cdn.bedrock.cv/signed/ov_01.png?token=...",
  "expires_in": 900
}
What the agent learns: The overlay image is ready to display to the user.

Agent Response

I compared Arch Set Rev A with Arch Set Rev B across 8 sheet pairs. Here are the results: A-101 (First Floor Plan) had the most changes (score: 0.82):
  1. New wall added between Room 102 and 103 at grid B-3
  2. Door 104 relocated from south wall to east wall of Room 102
  3. Room 103 renamed from STORAGE to IT CLOSET
A-102 (Second Floor Plan) had minimal changes (score: 0.97). Would you like me to drill into any specific change or check the other sheets?

Summary

MetricValue
Tool calls5
Tools usedQuery (sheet) > Compare > PollJob > Query (block) > ViewImage
Key techniqueThe agent sorts overlays by score to prioritize sheets with the most changes. The async Compare > PollJob pattern lets the agent report progress while processing runs.