Skip to main content

talonic_read_decision_package

Read the run's frozen input package, one page at a time. The package was assembled and enriched when the run started and is served exactly as persisted; nothing is added at read time, so every claimant of the same task sees the same bytes. Only the client holding the live claim may read it (anyone else gets HTTP 409), and each page read journals a package_read event onto the run.

Each record in data[] is { binding, index, record } — the input binding alias, the record's position within it, and the record with its cells and their provenance locators. The first page (no cursor) additionally carries documents, the source documents behind the package's cells, so a surface can offer the originals without walking every page.

ParameterTypeDescription
task_id *UUIDClaimed task ID.
cursorstringOpaque package cursor: `package.first_cursor` from the claim, then `pagination.next_cursor`. Omit for the first page.
limitintegerRecords per page, 1 to 2,000. Defaults to the platform page size reported as `package.page_size` on the claim (500 unless the deployment configures otherwise).
First page
// talonic_read_decision_package({ "task_id": "11111111-1111-4111-8111-111111111111", "limit": 2 })
{
  "task_id": "11111111-1111-4111-8111-111111111111",
  "run_id": "22222222-2222-4222-8222-222222222222",
  "record_count": 3,
  "page_size": 2,
  "documents": [
    {
      "document_id": "dddddddd-dddd-4ddd-8ddd-dddddddddddd",
      "filename": "invoice-4711.pdf",
      "mime_type": "application/pdf",
      "file_url": "/v1/documents/dddddddd-dddd-4ddd-8ddd-dddddddddddd/file"
    }
  ],
  "data": [
    {
      "binding": "invoice",
      "index": 0,
      "record": {
        "invoice_total": {
          "value": 1250.0,
          "locator": "dp:pppppppp-pppp-4ppp-8ppp-pppppppppppp:rrrrrrrr-rrrr-4rrr-8rrr-rrrrrrrrrrrr:invoice_total",
          "confidence": 0.97,
          "document_id": "dddddddd-dddd-4ddd-8ddd-dddddddddddd"
        },
        "supplier_name": {
          "value": "Acme GmbH",
          "locator": "dp:pppppppp-pppp-4ppp-8ppp-pppppppppppp:rrrrrrrr-rrrr-4rrr-8rrr-rrrrrrrrrrrr:supplier_name",
          "confidence": 0.99,
          "document_id": "dddddddd-dddd-4ddd-8ddd-dddddddddddd"
        }
      }
    }
  ],
  "pagination": { "has_more": true, "next_cursor": "eyJvZmZzZXQiOjJ9" }
}

Keep the locators. The submit's evidence block must cite the package references the decision relied on, and the platform checks each one against this package — copy them verbatim rather than reconstructing them. Walk pages while pagination.has_more is true; the cursor is an offset into the frozen record order, so a walk is stable even across a release and reclaim.

For a rule-mining round driven from outside (package_kind: mining_round), the package is a single record { system_prompt, first_turn, tools } — what the hosted model would have seen. The round's tools are called over the platform's REST routes; this MCP surface does not wrap them yet.

Frequently asked questions

Why does reading the package return HTTP 409?+
The package is readable by the current claimant only. Either the task was never claimed by this credential, or the lease lapsed and another agent reclaimed it. Claim (or reclaim) the task first, then read.
Is reading the package a side effect?+
It changes nothing in the task or run, but each page read is journaled as package_read with the offset and count, so the run's ledger shows what the deciding agent actually looked at.