save_reading
Record a stamped surface in the reader's history so it can be compared and reopened later. Call it AFTER emit_runbook_surface, and PASS ITS payload — that stores the reading itself rather than a link to it. Silently no-ops when nobody is signed in.
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": {
"runbook": "<runbook>"
},
"name": "save_reading"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The stamped surface url returned by emit_runbook_surface. | |
| lens | No | The lens the reading was made through (e.g. "explain"), so history can show it. | |
| title | No | The ANALYSIS title (yours), not the source headline. | |
| payload | No | The compiled surface emit_runbook_surface returned (its `payload`). PASS IT. Without it the row is a link only, and a link depends on a renderer staying reachable — with it the reading is stored portably and can be re-rendered or exported long after any URL stops working. | |
| runbook | Yes | e.g. "article_playbook" | |
| source_url | No | The original article, so history stays attributable. | |
| source_title | No | The original article's headline, kept beside source_url. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Id of the stored reading. | |
| note | No | Guidance for the caller. | |
| saved | No | True when the row was stored. | |
| reason | No | Why nothing was saved. | |
| warning | No | Why the payload was not stored. | |
| portable | No | True when the payload was stored with it. | |
| available | Yes | False when there is no signed-in reader or the store failed. |