← UnifyCONTENT HISTORY

Update to Unify

Snapshot Sep 30, 2026 · 23:07 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Unify DataTables: page through the rows of result tables produced by Unify agent runs with load_datatable. Use when a run's final answer references a DataTable or table ID and you need the actual rows, columns, or metadata.",
  "included_files": [],
  "name": "data-tables",
  "skill_md_contents": "---\nname: data-tables\ndescription: \"Unify DataTables: page through the rows of result tables produced by Unify agent runs with load_datatable. Use when a run's final answer references a DataTable or table ID and you need the actual rows, columns, or metadata.\"\n---\n\n# Unify DataTables\n\nDataTables are the durable artifact of list-building and enrichment runs. When\n`read_agent_results` references a table, fetch it directly; don't start another\nrun just to see rows you already have.\n\n> **Not the same as Bulk API results.** A DataTable is an **agent run** artifact,\n> paged here with `load_datatable` (cursor-based, pinned to a `versionId`). The\n> public **Bulk API** returns query-job results paged by `get_<resource>_query_job_results`\n> (`page` / `page_size`). If you have a `job_id` rather than a `tableId` +\n> `versionId`, use the public Bulk API tools, not this skill.\n\n## `load_datatable({ tableId, versionId, limit?, cursor? })`\n\n- `tableId` + `versionId`: **both required**; take them from the DataTable\n  reference in the run result's structured content. Loads pin an exact table\n  version, so pages are consistent even if the table keeps changing.\n- `limit`: rows per page, default 100.\n- `cursor`: pass the previous page's `nextCursor` to continue; it is bound to\n  the same table and version.\n\nReturns `{ tableId, versionId, metadata, columns, rows, nextCursor }`. Each row\nis a map of column key → JSON value. `nextCursor: null` means you have the last\npage. `metadata.currentWorkingVersionId` tells you whether a newer working\nversion exists than the one you loaded.\n\n## Paging pattern\n\n1. First call with `tableId` + `versionId` (and a smaller `limit` if you only need a sample).\n2. Loop while `nextCursor` is non-null, passing it as `cursor`.\n3. For large tables, ask your user before pulling everything; summarize from the\n   first page plus `metadata` row counts when that answers the question.\n\n## Notes\n\n- Tables are visible only to the user who owns them in the workspace; \"DataTable\n  not found\" usually means a table from another user or session, not a bug.\n  \"DataTable version not found\" means a stale `versionId`; re-read the run\n  result (or ask the agent for the current version).\n- \"Invalid DataTable cursor\" → restart paging from the first page.\n- To add data to an existing table (more columns, more rows), start a new\n  `run_agent` brief that names the table ID and describes the addition.\n"
}

SHA-256 of public snapshot: 8932098371b335c3e1314133cdba1d65969ed447443af156145c4a06bf2aa8ad