save_profile
Update the signed-in reader's profile. Only the keys you pass change; pass null to clear one. Save what the reader TOLD you, never what you inferred from one article — a profile that drifts on every reading is worse than no profile, because they stop being able to predict what it will do.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "save_profile"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Reader's preferred UI theme. The Workspace saves this itself when its toggle is clicked — you would not normally set this from a chat turn. | |
| domains | No | Areas of interest the apply lens transfers into, e.g. ["a2ui","generative ui"]. | |
| concerns | No | Standing things they always want pushed on, in their own words. | |
| default_lens | No | Opening posture when the reader does not name one: explain | apply | challenge | situate. | |
| display_name | No | What to call them in a rendered surface. Set this so a UI never has to show their email — the address is an identifier, not a greeting, and a shared screen should not leak it. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Guidance for the caller. | |
| saved | No | True when the profile changed. | |
| reason | No | Why nothing was saved or the store is unavailable. | |
| profile | No | The profile after the update. | |
| available | Yes | False when there is no signed-in reader or the store failed. |