Record what you did
record_actionRecord finished work; it changes nothing in your human's systems and starts no scan. Choose signal_id, request_id for your own allowed request, or work for work with no signal/request. With work: pass kind, map objects with non-personal references, the system you did it in and optional at, plus summary and outcome done or skipped; never message text or personal values. It is news in agent activity, not a signal. With a signal: pass its signal_version and episode; done/skipped needs resolution fixed, not_an_issue or wont_fix (the latter two wait for a person under an approval key, unless it is a delegate). needs_human hands the signal to a person; task says exactly what they do next. A person's hold is settled by that person or an admin's delegate key (not customer reports, security, secrets, legal). Use update_finding_status to change a finding's status instead. Summary is at most 500 characters; Maplith tries to mask it, best effort. State value only in your human's or their systems' own numbers, never estimate it. Details: maplith://docs/mcp. Needs: a key that may act with approval or autonomously.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | With needs_human: what the person does next, whole — the exact change (where, from what to what, why, how to check) or the reply to send. A task, not an approval. Max 2,600 characters, no secrets. Recorded again on a signal waiting on your task, it updates that task. | |
| work | No | Work with no signal/request; object names exactly as the map shows. References name things (edition, page, order), never people. Repeats can become a draft for an admin at the next scan. No task, resolution, episode or signal_version. | |
| links | No | Where the work landed, if anywhere a person can open. | |
| value | No | What this action was worth, in your human's own numbers, when they or their systems state it — the ad spend stopped on a sold-out product, the refund avoided. Only a stated figure: never estimate one. Leave it out when nothing states it; an action without a value stays unstated and is counted as such in get_value_summary. | |
| episode | No | The episode you worked on, as list_signals or get_task_context returned it. If the signal has since closed and come back as a new episode, nothing is recorded and you are told so. | |
| outcome | Yes | With work: done or skipped, without a resolution. On a signal, done: settled (with a resolution). needs_human: you got as far as you could; a person decides, and task says what they do next. skipped: it turned out not to matter (with a resolution). | |
| summary | Yes | One or two sentences on what you did. Max 500 characters. | |
| signal_id | No | The signal from list_signals or get_task_context. Leave it out when you pass request_id. | |
| task_type | No | 'reply' for a drafted reply; default 'change'. | |
| request_id | No | The request_id request_action returned, when this is the outcome of a request you were allowed (or approved) to carry out. Only your own key's requests. If the signal the request named is gone or no longer readable by your key, the outcome is recorded against the request alone and no signal is closed; if that signal still waits for work, it is handed to a person, so no other agent repeats it. | |
| resolution | No | What came of it — required with outcome 'done' or 'skipped' on a signal that is not settled yet. If you cannot say, record outcome 'needs_human' instead, so a person decides. | |
| signal_version | No | The signal's created_at exactly as list_signals or get_task_context returned it, so Maplith knows which version of the signal your summary is about. When recording a signal, a key limited to part of the map must send signal_version: if you leave it out, or a scan re-stamped the signal after you read it, nothing is recorded and you are told to read the signal again. When you pass a request_id whose request named no signal there is no version to name: pass an empty string. Omit signal_version with work. Every scan that emits a signal again moves its version, whether or not anything about the signal changed, so read it again and look before you record. For a key that sees the whole map the record is still kept in those cases, but is hidden from keys limited to part of the map, and those keys keep seeing the signal as not acted: list_signals with unacted: true hands it to them until someone records against its current created_at. |