Documents and reports
tuqui_artifactThe workspace Library: everything you do with an artifact, in one place. action='list' browses (metadata only, enough for discovery); 'get' reads one — pass show:true when the person asked to SEE it and the document opens beside the conversation; 'save' creates a new one, or changes the one you name with artifact_id — use edits for a local change and content only when the page is genuinely being rewritten, and pass archived:true to take it out of the way (archived:false puts it back); every save goes live, so 'publish' only points the share link back at an older VERSION — what readers see, not who may see it; 'share' is the one about access (to and level, level='none' to take it away, or target='workspace' to move the reach); 'delete' destroys it and asks first. FIRST, if you are writing or replacing a page (a save with content): load the design contract with tuqui_skill(action='get', name='artifact-design') if available — the container lays paper, brand fonts and colour tokens; you design the page. edits, a data-only update and every read need none of this. Inside the Tuqui chat what you create, change or show already renders as a clickable card next to your reply: do NOT repeat the url as a markdown link in your prose. Only when called from an external agent via MCP (no card UI) present the returned url as a markdown link.
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": {
"action": "<action>"
},
"name": "tuqui_artifact"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | share, target='user': who to give it to — their EMAIL or name (a user id also works). They must already be a member of this workspace: sharing does not invite. target='group': the group's name. A list, so handing the same level to a team is one call. | |
| data | No | A JSON data snapshot, validated against the artifact's data_schema. On update it only reaches the screen if the template reads `#tuqui-data`. | |
| kind | No | save, new: what the artifact is — 'page' (default), 'report', 'presentation', 'app' (interactive tool), or 'doc' (markdown instead of a self-contained HTML page). list: only this kind. | |
| lang | No | save: content language code (e.g. 'es', 'en'). | |
| mine | No | list: only artifacts created by the caller. | |
| show | No | get: True when the PERSON asked to see or open this artifact — it opens beside the conversation. Leave it out when you are reading the page for yourself, to edit it or to quote a figure: a read is not a reason to take over their screen. | |
| edits | No | save, existing: partial edits applied to the CURRENT content, in order — the rest of the page is kept byte for byte. Read it with action='get' first and copy each fragment exactly, whitespace included. Each `find` must match EXACTLY ONE place: zero matches or several are rejected and no version is created, so extend `find` with surrounding text until it is unique. Cannot be combined with a full rewrite of the page. | |
| level | No | share: 'usar' or 'editar' — the two levels of the picker, Spanish because the spec fixes them as the domain vocabulary of the model (compartir-unificado §10). 'none' takes the access away: it revokes the person's share, or closes the object back to the people invited. 'link' is a reach only the Library offers (anyone in the workspace with the URL). | |
| limit | No | list: page size. | |
| title | No | save: the document's title. | |
| action | Yes | REQUIRED. What to do with the Library. | |
| offset | No | list: skip this many; use the next_offset of a previous call. | |
| search | No | list: case-insensitive match on title/description. | |
| target | No | share: who gets it. 'user' (default) gives it to people; 'group' to whoever is in a group; 'workspace' moves the reach, handing the level to every member at once. | |
| content | No | save: the page (self-contained HTML, or markdown for kind='doc'). On an existing one it is a FULL replacement — for a local change prefer `edits`, because everything you do not retype here is lost. | |
| version | No | get: version to read (omit for the latest). publish: version to serve. | |
| archived | No | save: True takes the artifact out of the way — it leaves the default listing and its internal share link stops resolving, but nothing is deleted. False puts it back. Prefer this over delete when in doubt. | |
| visibility | No | save, new: who reaches it inside the workspace. | private |
| artifact_id | No | UUID. Required for get, publish, share and delete; on save it means UPDATE this one instead of creating a new artifact. | |
| data_schema | No | save, new: JSON Schema the artifact's `data` must satisfy from then on. | |
| description | No | save: one line about it. | |
| consent_token | No | The approval a person gave for THIS call in Tuqui. Bound to these arguments and valid once. | |
| change_summary | No | save: optional, one line about this version (shown in the version history). | |
| content_sha256 | No | save: `sha256sum` of a file on your disk, used as `content` instead of retyping it. The first call saves nothing and returns a curl command: run it, then repeat the call. | |
| conversation_id | No | list: only artifacts created from this conversation (UUID). | |
| include_archived | No | list: include the ones taken out of the way. |