Change a setting
set_settingChange one workspace setting when asked. Reversible updates apply at once; irreversible changes need explicit approval first.
Instructions
Change one setting of this workspace when the person asks for it, and say so. Most are reversible and happen at once; the few that send the conversation or a secret somewhere else, let a program run, or open the workspace to others cannot be taken back, so calling this puts the question to the person for you and nothing changes until they say yes. The settings: name: what the workspace is called, on every page; server.addr: the address to serve on, from the next start; llm.provider: the kind of model: anthropic, openai-compatible, ollama, claude-code or command; llm.model: the model's name; llm.base_url: where an openai-compatible model answers; llm.max_tokens: the longest reply the model may give; llm.api_key_env: the NAME of the environment variable that holds the model's key; mcp.token_env: the NAME of the environment variable that holds the bearer token for /mcp; ui.controls: auto fades per-item controls until hovered; visible keeps them on screen (auto, visible); ui.pace: how changes arrive: calm, quick or still (calm, quick, still); ui.text: how large the words are: normal, large or larger (normal, large, larger); ui.spacing: room between lines, words and paragraphs: normal, or wide for people who read more easily with more room (normal, wide); ui.needs: what the person has said they need, in their words (I use a screen reader; keep things simple; I am colour blind): you follow it in every reply and every page you make. Set it the moment they tell you, and add to it, keeping what was there; ui.clock: how a time of day is said: 12 (2pm, 5:30pm) or 24 (14:00); empty follows the language, 12 for English (12, 24); ui.language: the workspace's language as a code (en, de, es, fr): the pages say it so screen readers use the right voice, and you reply in it; ui.lists: which lists the sidebar shows: filled (something in them, or made by the person) or all (filled, all); ui.developer: the design system and the guide for agents: hidden from the sidebar or shown (hidden, shown); ui.show: the parts of a page that are on every time. All of them are off by default, and a page shows no trace of an off one, so this is how something earns a permanent place: fields (a record's whole field list, including the ones its heading and chips already say), remind (the field for setting a reminder about a record, on its page), ask (the way to the assistant with the record in the box), day (the way to the record's day on the calendar), writing-help (the kinds of help with a piece of writing: spelling, tightening, feedback on structure), contents, place, outline and material (for longer writing), recording and write-up (for a meeting), or a connection key from get_record's related, such as points-here:task.project. +key adds one, -key takes it back, a list replaces them all, empty is none. Each is also one address away without this (?show=), so turn one on only when you have a reason the person wants it every time, and say the reason; chat.history_limit: how many past messages go to the model each turn; chat.system_prompt: words put before the built-in instructions to the model; update.mode: how a new version of sameway arrives: auto installs a release on its own and says so in the activity log, manual only says one is there and waits to be asked (either way it runs from the next start) (auto, manual); notify.desktop: a notification on this machine when a reminder rings, whether or not a page is open (on, off); notify.command: a command run when a reminder rings, with {title}, {text} and {url} in its arguments: a push service such as ntfy, an email, a text; actions.allow: the programs a command action may run, by name, comma separated (curl, python); empty means command actions run nothing; mqtt.broker: the MQTT broker for devices, such as tcp://192.168.1.10:1883; empty means none (takes effect at the next start); mqtt.client_id: how this workspace names itself to the broker; mqtt.username_env: the NAME of the environment variable that holds the broker username; mqtt.password_env: the NAME of the environment variable that holds the broker password; meetings.teams_client_id: the application (client) id of the person's own app in Microsoft Entra, for bringing Teams transcripts once a meeting is over; they then connect on the help page; meetings.teams_tenant: their Microsoft tenant id or domain; empty is any work or school account; meetings.zoom_account_id: the account id of the person's Zoom Server-to-Server OAuth app, for bringing Zoom transcripts; meetings.zoom_client_id: that Zoom app's client id; meetings.zoom_secret_env: the NAME of the environment variable that holds that Zoom app's client secret; publish.tabs: tabs anyone on the internet may read, people and AI services alike, with no login, by name, comma separated; empty is none. ONLY when the person explicitly asks to publish or make something public, never on your own; the person is asked before anything is published; publish.types: content types whose every record anyone on the internet may read, people and AI services alike, with no login, by name, comma separated; empty is none. ONLY when the person explicitly asks to publish; the person is asked first; tailnet.peers: the other computers hosting this same workspace, by their machine name on the tailnet, comma separated (bob-home, my-laptop): this copy keeps in step with each, both ways. Each has to host a copy of this workspace and have this computer's owner or a host let in. Empty is none; tailnet.name: the name of this computer on the person's Tailscale network, so their phone and other devices signed in to Tailscale as them open the workspace from anywhere at https://..ts.net; empty is off. It takes effect at once, and the steps to finish (signing in, turning on HTTPS) come back from this call and appear in the chat. Offer it when the person wants the workspace on their phone or away from this computer. A setting that holds a key or a token takes the NAME of the environment variable that holds it, never the key.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes |