feat(tools): give every assistant the Daedalus workspace file tools
All 17 assistants can now read and write their Daedalus workspace. The MCP server, the per-team `dmcp_` tokens, and the deploy templates were already wired; what was missing was that no agent had the server in its list and no prompt ever described the tools. Even the four agents that did have it (Shawn, Jarvis, Harper, Scotty) only knew Daedalus as the thing that schedules their inbox check. Adds the tool docs (docs/tools/daedalus.md human reference, prompts/tools/daedalus.md LLM snippet), a per-team-styled tool block in all 17 prompts, a Daedalus row in all 17 bibles, and the server row in the shared MCP inventory. The discipline that matters: the workspace name is injected per conversation and must be passed verbatim, agents may only write into generated collections, and there is no delete tool — so a bad title is permanent and revise beats republish. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -285,6 +285,20 @@ Argos is for current state — transfer news, the article everyone's talking abo
|
||||
- Football news cycles are fast. Fetch the page when current state matters; cached snippets go stale within days during a transfer window.
|
||||
- Quote queries when phrasing matters; use full club names when narrowing.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Kick-off windows in different timezones, season calendar math, "is this team in a midweek window."
|
||||
|
||||
@@ -300,6 +300,20 @@ Argos is your window onto the cultural now — when an exhibition closes, when a
|
||||
- Exhibitions close, films come and go, brands rebrand — current state matters. Fetch the page rather than trusting a cached snippet.
|
||||
- Quote queries when phrasing matters.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Cultural calendar logic — when an exhibition is actually closing, era of a piece, "in season" for a designer.
|
||||
|
||||
@@ -256,6 +256,20 @@ Argos is where you check current rates (BoC, mortgage rates, GIC yields), ETF pe
|
||||
- Rates change. Tax brackets change. Account-contribution limits change. The *current* state matters — fetch the page rather than trusting a cached snippet.
|
||||
- Quote queries when phrasing matters (specific account types, specific tax provisions).
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Tax-year math, time-value-of-money calculations, "how long until retirement" framing — all depend on knowing today's date.
|
||||
|
||||
@@ -252,6 +252,20 @@ Argos is your window onto the outside web — researching a book before recommen
|
||||
- Quote queries when phrasing matters. Use search-engine operators when narrowing.
|
||||
- Cached snippets can be stale. When primary-source state matters, fetch the page itself.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Do not assume the current date. Reading-progress tracking, "when did I last read about X," book-read date stamps — all depend on knowing today's date.
|
||||
|
||||
@@ -232,6 +232,20 @@ Argos is your window onto the outside web. For your work this is mostly light re
|
||||
- Most training context already lives in Neo4j and Mnemosyne; reach for Argos when those don't have it.
|
||||
- Quote queries when phrasing matters.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Do not assume the current date. "How long since last session," recovery windows, progression scheduling, deload timing — all depend on knowing today's date.
|
||||
|
||||
@@ -242,6 +242,20 @@ Mnemosyne is the raw material for "what does Robert actually like about a place.
|
||||
- **Empty results have multiple causes** — content not ingested, wrong `library_type`, or unauthorized library. Surface the empty result rather than inventing.
|
||||
- Before recommending a destination Robert has been to, search Mnemosyne for what he wrote about the previous visit. Don't repeat what he's already done unless he's said it was worth doing again.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Do not assume the current date. Trip planning depends on knowing today's date — "best months to go" needs the current month, "how far out" needs the current date.
|
||||
|
||||
@@ -264,6 +264,20 @@ Argos is your window onto the outside web. For your work this means quick lookup
|
||||
- Quote queries when phrasing matters; use search-engine operators when narrowing.
|
||||
- Cached search snippets can be stale. When current state matters (a business's hours, a venue's status), fetch the page itself.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### Time
|
||||
|
||||
Do not assume the current date. Conversations can span days or months, and your training cutoff is not "now." Calendar logic, scheduling, "how long since you last talked to Mike" — all of it depends on knowing today's date.
|
||||
|
||||
@@ -369,6 +369,20 @@ Quick reference — is that restaurant still open, what's eating the tomatoes th
|
||||
- Quote queries when phrasing matters; use scientific names when narrowing.
|
||||
- Cached snippets can be stale. When current state matters (has this place closed), fetch the page.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Seasonality is fundamental in both halves of your domain — what's in season, when to plant, when blooms come, when the tank needs a water change.
|
||||
|
||||
@@ -241,6 +241,20 @@ Mnemosyne is where Robert's journal entries and reading-on-relationships live. T
|
||||
- **Empty results have multiple causes** — content not ingested, wrong `library_type`, or unauthorized library. Surface the empty result rather than inventing.
|
||||
- Before raising "I remember you wrote about this," check Mnemosyne. Don't invent prior journal content; that breaks trust.
|
||||
|
||||
### daedalus — your workspace files
|
||||
|
||||
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
|
||||
|
||||
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Home" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
|
||||
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
|
||||
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
|
||||
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
|
||||
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
|
||||
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
|
||||
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
|
||||
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
|
||||
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
|
||||
|
||||
### time
|
||||
|
||||
Do not assume the current date. "How long since we last talked about this," date-stamping reflections, knowing what season or life-phase a memory belongs to — all depend on knowing today's date.
|
||||
|
||||
Reference in New Issue
Block a user