Skip to main content
Glama

Server Details

Open your team's project from the AI you use: read and write its brief, documents, tasks and notes.

Ownership verified
Status
Healthy
Uptime
53.0% over 21 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.4/5.0

Scored across 40 tools

Disambiguation4/5

Most tools target distinct resources or actions, and the verbose descriptions make boundaries clear in many cases. However, the paired initiate/confirm tools such as set_access/apply_access, send_change/confirm_send, hand_out/confirm_hand_out, and add_skill/apply_edits create some ambiguity about which call to use in a given state.

Naming Consistency3/5

All names use snake_case, but the set mixes verb_noun tools (add_document, close_note), bare nouns or verbs (list, read, task, part), and question-like names (who_sees, what_changed, why). It remains readable, but there is no predictable naming pattern across the 40 tools.

Tool Count2/5

The server covers a broad workspace domain, but 40 tools is well beyond a well-scoped surface and exceeds the 25+ threshold where the count itself becomes a usability burden. Several operations could likely be consolidated, especially the many propose/confirm pairs.

Completeness4/5

Coverage is broad: documents, notes, tasks, access, agents, widgets, schedules, skills, and GitHub changes are all represented with create/read/update or propose/confirm flows where relevant. Minor lifecycle gaps remain, such as no obvious delete/archive/rename/move operation for documents and limited direct editing of task metadata after creation.

Available Tools

40 tools
add_documentAdd a documentAInspect

Writes or saves a new document on the project (notes from a meeting, a plan, a report, a brief), or a new text file, under this person's name. A document is Markdown or plain text, at a name ending in .md, .markdown, .txt or .text; other text (data/prices.csv, config/site.yaml, src/app.ts) is kept as a file, up to 1 MB. A document takes a summary of one or two sentences for the project's overview and search: Alcoven keeps the summary given and writes none itself.

NameRequiredDescriptionDefault
didNoWhat the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: "Chose the three-step plan; fixed the March totals; rewrote the opening". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.
forNoWho this is for. "team" when any of it is for the team only: pay, rates or costs, a line the client should not read, personal data. Alcoven then keeps it from people who see only some folders until the person answers in Alcoven. "everyone" when all of it is fine for everyone who sees the folder.
whyNo
bodyYesThe document in Markdown, or the file's text.
pathYesWhere it goes, folders allowed: research/pricing-interviews.md for a document, data/prices.csv for a text file.
readNoThe § addresses you read for this work, kept with asked. Alcoven adds what it saw you read on this project since you last wrote on it, going back two hours at most.
askedNoWhat the person asked for, in their own words, as they said it: their request only, never the rest of the conversation, and left out when they do not want it shared. It goes on the project with the change, so everyone who sees the change, and their AIs, see why it was made.
titleYesA document's title. A file is known by its name.
for_whyNoWith "team": a few words saying what in it is for the team, like "our day rate for the bank". The person and the project's managers read them.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
summaryNoFor a document: one or two sentences on what it holds, for the project's overview and search.
asked_fromNoWhere the request came from, when the person says so, in a few words: "Tuesday's call with the bank", "Ines's email".

Output Schema

NameRequiredDescription
draftNo
copiedNo
addressYes
checkedNo
part_offerNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world. The description adds genuinely new behavioral facts: a 1 MB cap on non-document text files, the privacy consequence of for="team" (hidden from partial-folder viewers until the person answers), and that the summary is stored verbatim with none generated by Alcoven.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and the document-vs-file rule before the summary detail. The closing sentence mildly duplicates the schema's summary description, but the 'writes none itself' clause keeps it earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter creation tool with an output schema, the description covers classification, size limits, and privacy routing, which is solid. It leaves a notable gap: idempotentHint=false is never explained — an agent cannot tell whether writing to an existing path errors, overwrites, or versions — and the relationship to edit_document remains unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 92%, so the schema already documents nearly every parameter, including path examples, the for enum, and summary length. The description's mentions of path extensions and the summary sentence count largely restate the schema; it adds only the note that no summary is auto-written, which is slight added value over a high-coverage schema (baseline 3).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: writes/saves a new document or text file on the project under this person's name. It also defines what counts as a document (.md/.markdown/.txt/.text) versus a kept file, which sharpens the concept. It stops short of naming the obvious siblings (edit_document, add_note), so an agent must still infer the create-vs-modify boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Writes or saves a NEW document' implies creation and implicitly excludes editing, but there is no explicit instruction such as 'to change an existing document use edit_document' or 'for a short note use add_note'. Usage is inferable from the verb and the file-type paragraph, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_noteAdd a noteAInspect

Leaves a comment or a question on a document, a section or a task, as a note under this person's name. On a document or a section, a note can quote the passage it is about (passage), ask one person (to), and come from the person's part (part: it then asks whoever handed it out). A note that asks someone is on their home and stays open until someone closes it with what came of it. The answer lists what on record shares the note's words.

NameRequiredDescriptionDefault
onYesWhat the note is about.
toNoThe person the note asks: their member id (m-xxxxxx) or name. Only on a document or a section.
dayNoOn a widget (a .widget.md), the day of its numbers the note is about, like 2026-10-15: it shows in the margin at that day, with the reason the number moved.
partNoThe person's part the note comes from: its id from open_project or my_parts, or its document's § address.
textYes
passageNoWords of that section or document the note is about, copied word for word.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
asksNo
addressYes
relatedYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-destructive write with no idempotency and no open-world effects. The description adds genuine behavioral context beyond that: the note appears under the author's name, a directed note sits on the recipient's home and remains open until someone closes it, and the response surfaces records sharing the note's words.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence, but the remainder is dense and awkwardly phrased (e.g. 'come from the person's part (part: it then asks whoever handed it out)'), making it harder to parse than necessary. Every sentence carries information, but the packaging could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description covers targets, quoting, directed notes, and part provenance. The 'day' and 'project' parameters are left to the schema, but overall the definition is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 86%, so a baseline of 3 applies, but the description adds real meaning: it explains that 'passage' quotes text, that 'to' asks exactly one person, and that 'part' causes the note to ask whoever handed the part out. This clarifies the interaction between parameters beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb and resource: 'Leaves a comment or a question on a document, a section or a task, as a note under this person's name.' An agent immediately knows this creates a note attached to a target. It does not explicitly distinguish itself from siblings like ask_for or close_note, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through conditional behavior: a note that asks someone lands on their home and stays open until closed, and passages/parts apply only to documents and sections. However, there is no explicit guidance on when to choose add_note over ask_for, or when not to use it, leaving the agent to infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_rowsAdd rows to a tableAInspect

Logs something that happened in a table the team keeps, like a reply or a call in an outreach log, or a row in a CSV. Adds rows at the end of a table the team keeps, without asking the person to confirm: a CSV or TSV file on the project, as one new version under this person's name, or a sheet in Google Sheets the project may add rows to, named by its .source.md, where Google's version history shows the project's Alcoven address and Alcoven's Changes show this person. For tables the team keeps as things happen: a message sent, a reply in, a post up, a week's numbers. Each row is an object keyed by the table's column names, in any letter case; a column left out stays empty, and a Days column left out gets today's date where the person is. Nothing already in the table changes. Takes 1 to 100 rows a call. Returns the new rows' numbers and what the widgets that read the table say now.

NameRequiredDescriptionDefault
didNoWhat the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: "Chose the three-step plan; fixed the March totals; rewrote the opening". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.
readNoThe § addresses you read for this work, kept with asked. Alcoven adds what it saw you read on this project since you last wrote on it, going back two hours at most.
rowsYesThe rows, 100 at most, each an object keyed by the table's column names, like {"date": "2026-10-20", "what": "reply"}.
againNoTrue when the same thing happened again: rows identical to ones this person added to the table in the last 10 minutes are then added too.
askedNoWhat the person asked for, in their own words, as they said it: their request only, never the rest of the conversation, and left out when they do not want it shared. It goes on the project with the change, so everyone who sees the change, and their AIs, see why it was made.
tableYesThe table: a CSV or TSV file's path or § address, like acme/gtm/outreach.csv, or the .source.md of a sheet in Google Sheets, like acme/gtm/outreach.source.md.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
asked_fromNoWhere the request came from, when the person says so, in a few words: "Tuesday's call with the bank", "Ines's email".

Output Schema

NameRequiredDescription
addedYes
sheetNo
addressYes
last_rowYes
readingsYes
warningsYes
first_rowYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavior: rows are appended at the end, no confirmation is requested, existing table contents are not changed, new versions are attributed to the person, and the call returns the new row numbers plus widget state. It also states a row-count limit, though that limit is inconsistent with the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and repetitive, repeating the phrase 'a table the team keeps' and packing several ideas into run-on sentences. The important append-only and row-limit details are buried rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with rich schema descriptions, annotations, and an output schema, the description covers the main purpose, usage context, side effects, row semantics, and return behavior. Its main flaw is the conflicting row-count limit, which could mislead an agent about a key constraint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries parameter meaning. The description adds useful semantics for rows, such as case-insensitive column keys, omitted columns staying empty, and a default Days value, but it also says '1 to 100 rows a call' while the schema allows up to 1000 items.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it adds rows to a table, with concrete examples such as CSV/TSV files and Google Sheets. It is clearly separable from adjacent tools like add_note or add_document by its table-row focus, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context: for tables the team keeps as things happen, such as messages sent, replies received, or weekly numbers. It does not state when not to use it or explicitly name alternative tools, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_skillAdd or update a skillA
Destructive
Inspect

Installs or updates a skill on the project. Adds a skill from Alcoven's public directory to the project, as skills//SKILL.md with the documents in its folder, or updates one added from the directory to its newest version. skill takes the name of one of Alcoven's own (like ux-designer), @handle/name for one a person published, its alcoven.co/skills address, or words to find one; with words it returns the best matches, most used first, and adds nothing. Returns a preview of the whole skill, who published it and what every AI on the project will be given; nothing is written until the person confirms. This tool adds skills only from the directory; publishing happens in Alcoven, on People and agents. For people who write to the project.

NameRequiredDescriptionDefault
didNoWhat the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: "Chose the three-step plan; fixed the March totals; rewrote the opening". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.
readNoThe § addresses you read for this work, kept with asked. Alcoven adds what it saw you read on this project since you last wrote on it, going back two hours at most.
askedNoWhat the person asked for, in their own words, as they said it: their request only, never the rest of the conversation, and left out when they do not want it shared. It goes on the project with the change, so everyone who sees the change, and their AIs, see why it was made.
skillYesA skill's name, like ux-designer; @handle/name for one a person published, like @omar-k/ux-review; its alcoven.co/skills address; or words to find one, like "release notes".
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
replaceNoTrue when the person wants this skill in place of the project's own skill of that name, or the newest version in place of the project's changed copy.
asked_fromNoWhere the request came from, when the person says so, in a few words: "Tuesday's call with the bank", "Ines's email".

Output Schema

NameRequiredDescription
skillNo
addressNo
appliedYes
matchesNo
previewNo
versionNo
proposalNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond the annotations: the two-phase flow (returns a preview of the whole skill, publisher, and what every AI on the project will be given; 'nothing is written until the person confirms') and the on-disk target path. This meaningfully softens the picture given by destructiveHint=true. The one gap is that the confirming step is never named, so the agent doesn't know which tool completes the write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and tightly packed with useful detail; every clause carries information. The sentences are long and run together (write path, search behavior, preview flow, exclusions in one block), and the trailing 'For people who write to the project' is slightly loose, costing some readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations carry the safety profile, so the description's burden is modest and it meets it: it covers what is created, what is replaced, the preview return, and the search fallback. It stops short of naming the confirmation mechanism that gates the actual write, which is the one thing an agent still needs to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely new semantics for `skill`: the accepted forms and the fact that word-based input triggers a ranked, most-used-first search that writes nothing. The `replace` intent is also hinted at ('updates one added from the directory to its newest version'). The remaining params (did, read, asked, asked_from, project) are already richly documented in the schema and get no added treatment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Installs or updates a skill on the project') and immediately scopes it: it adds from the public directory, writes skills/<name>/SKILL.md, or updates an existing directory-sourced skill. It also explicitly excludes publishing ('publishing happens in Alcoven, on People and agents'), so an agent can separate it from sibling write tools like add_document or add_note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use routing for the `skill` argument: an exact name, @handle/name, an alcoven.co/skills address, or search words — and states that with words it only returns matches 'and adds nothing'. It also states the when-not: this tool does not publish skills. That is explicit conditional guidance an agent can act on without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

agent_toolsFind an outside agent's toolsA
Read-only
Inspect

What an outside agent on the project can do: lists the tools of an outside agent (an agent that runs at its own service, such as an ads tool), finds them by words, or gives one tool in full: what it does in the service's own words, what it takes, whether it runs at once, asks the person first, or is off, and any values the project adds to a call to that service. Returns at most 20 tools at a time.

NameRequiredDescriptionDefault
findNoWords to find tools by, like "budget keywords".
toolNoA tool's exact name, to get it in full: its words, what it takes, and how it runs.
agentYesThe outside agent: its name or its member id, as open_project lists it.
offsetNoWhere to start in the list, for the next 20.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
toolNo
agentYes
toolsYes
totalYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, destructiveHint:false and openWorldHint:false, so the description adds several genuinely useful details: the page cap ("at most 20 tools at a time"), and the contents of the single-tool view, including whether that tool "runs at once, asks the person first, or is off" and "any values the project adds to a call." Those approval and injection semantics go beyond what the annotations and the schema convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is stated up front, but the core is a single 60-plus-word run-on sentence that repeats "outside agent" three times and nests three modes in one clause. It is parseable but not efficient; the detail-view contents could be a separate, shorter sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition has an output schema, so return shapes need no prose, and annotations already cover the safety profile. What is left, namely the three access modes, the 20-item pagination limit and the detail-view contents, is covered; the only gap is brief guidance on when to choose this over the related sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Because schema description coverage is 100%, it is reasonable to treat the schema as the baseline (3), and the description still adds something on top of it: the $find and $tool parameters are framed as alternate modes ("finds them by words" vs "gives one tool in full"), and the 20-item page cap clarifies how $offset behaves. The remaining parameters (agent, project) are explained only by the schema, not by the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb with a resource ("lists the tools of an outside agent"), and it explains what "outside agent" means with a concrete example ("an agent that runs at its own service, such as an ads tool"). It covers three modes (list, search, fetch one tool in full), but the opening phrasing — "What an outside agent on the project can do: lists the tools..." — names no sibling such as use_agent or confirm_agent_call, so the tool's boundaries remain unclear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The three modes are merely implied by the parameter names ($find, $tool) and folding both searching vs. fetching-one into a single sentence, and the description never says when to prefer this tool over its related siblings (use_agent, confirm_agent_call, open_project). It is enough to call the tool, but it leaves the agent to infer which mode it should use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

agreedWhat's agreedA
Read-only
Inspect

Whether something was decided, or what people agree on in this project: the documents everyone was asked to agree to, with the version, who agreed and when. With about, it also finds the agreed lines on one subject. It holds only what people agreed to in Alcoven; what was settled elsewhere may be written only in the documents. For checking a planned change against what people agreed.

NameRequiredDescriptionDefault
aboutNoA subject, in a few words, like "AI chat in help".
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
noteNo
linesNo
agreedYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read (readOnlyHint true, destructiveHint false, openWorldHint false), and the description adds meaningful context beyond them: the result contents (version, who agreed, when) and a real coverage limitation ('holds only what people agreed to in Alcoven; what was settled elsewhere may be written only in the documents'). That limitation is exactly the kind of caveat annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core payload and ending with a usage cue; little waste. The opening clause is slightly convoluted and the final sentence is a fragment, but both carry information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering return shape and full annotation coverage of the safety profile, the description need only add scope and intent — which it does, including the Alcoven-only data boundary and the planned-change review scenario. Only the sibling-routing gap keeps it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 'project' and 'about' are already documented, but the description still adds semantics for 'about' — it narrows the search to agreed lines on one subject rather than whole documents, which is not evident from the schema's example-only text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the resource concretely: agreement documents with their version, who agreed and when, plus line-level agreement lookup when 'about' is supplied. It is clear what you get back, but the opening 'Whether something was decided, or what people agree on' is indirect and never names a distinguishing sibling like history or what_changed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

One concrete use case is given — 'For checking a planned change against what people agreed' — and the conditional behavior of 'about' is spelled out. There is no guidance on when to prefer this over history, what_changed, read, or search, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_accessMake the change the person said yes toB
Destructive
Inspect

Makes an access change (who sees what) the person saw and said yes to, under this person's name, by the proposal id that came with the line saying what it opens or closes, and to whom. It goes once, within 24 hours, and only while that line still holds. For a change the person has seen and said yes to in this conversation.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
proposalYesThe proposal id set_access returned.

Output Schema

NameRequiredDescription
changeNo
appliedYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructive, non-idempotent, not read-only), the description adds real behavioral facts: single-use ("goes once"), a 24-hour validity window, a precondition that the proposal must still hold, and that it is applied under the person's name. What is missing is what exactly gets revoked, and what happens when the proposal is stale or expired.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, but the final sentence largely repeats the first ("the person saw and said yes to" vs "the person has seen and said yes to in this conversation"), and indirect terms like "that line" cost the agent decoding effort without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an irreversible mutation the description covers expiry, single-use, and authority, and an output schema exists so return values need not be explained. Still missing are permission requirements, failure behavior for expired/stale proposals, and any statement of what the change actually alters (who loses access).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema (including the project fallback rule). The description only restates that the change is keyed by the proposal id; it adds no format, constraint, or error-handling semantics beyond structured data. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb+resource are present ("Makes an access change (who sees what)"), and it is scoped to a previously agreed proposal. But the phrasing is circumlocutory — "the line saying what it opens or closes" is never defined — so an agent must decode rather than read what it does, and no sibling (set_access, send_change, agreed) is named in the description body.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"For a change the person has seen and said yes to in this conversation" gives a positive usage condition. However there is no explicit when-not, no routing to set_access for creating a proposal, and no guidance for the common failure cases (proposal expired, person changed their mind, no proposal exists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_editsPut confirmed edits on the projectA
Destructive
Inspect

Applies edits, or a skill, the person saw in a preview and said yes to: puts them on the project, under this person's name, by the proposal id that came with the preview. A proposal holds for 24 hours, goes on once, and is refused when a document changed since. For edits and skills the person has seen and said yes to.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
proposalYesThe proposal id edit_document or add_skill returned.
leave_out_askNoTrue when the person wants what they asked left out of the project.
leave_out_didNoTrue when the person wants what they did left out of the project.

Output Schema

NameRequiredDescription
writesNo
appliedYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and idempotentHint=false, and the description adds important behavior beyond them: the proposal is valid for 24 hours, applies only once, is refused when a document has changed since preview, and is attributed under the person's name. These are material operational details an agent needs before invoking a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and then adds key constraints such as expiry and single-use behavior. The final sentence repeats the confirmation condition already stated at the start, so it is slightly redundant, but overall it remains compact and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with an output schema and annotation coverage, the description supplies the crucial behavioral context: confirmation prerequisite, proposal lifetime, single application, conflict refusal, and attribution. An agent has enough information to know whether and how to call it without needing return-value details in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter, including the optional project slug, required proposal uuid, and leave_out flags. The description reinforces that the proposal id comes from the preview, but it does not add meaning for the leave_out parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: applying confirmed edits or a skill from a preview to a project by proposal id. It distinguishes this operation from previewing or creating edits by tying it to a person's explicit confirmation and an existing proposal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly says when to use it: for edits and skills the person has seen in a preview and said yes to. It also notes that proposals expire after 24 hours and are refused if a document changed, giving useful preconditions, though it does not explicitly name sibling alternatives such as edit_document or add_skill.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ask_forAsk for something closed to the personAInspect

Requests access to something the person cannot open (a link or an address someone gave them): the people who can open it to them see the request and answer it, and the person hears back in Alcoven. It reads the same whether or not anything is at the address; for an address already open to them, nothing is sent.

NameRequiredDescriptionDefault
whyNoThe person's reason, in one line, in their own words.
addressYesThe § address or path the person was given, like acme/finance/q4-budget.md.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
askedYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the mutation/no-destructive profile; the description adds real substance — who sees the request, that the person is answered back in Alcoven, that the read is identical whether or not something exists at the address, and that an already-accessible address results in no send. It stops short of saying whether the response reports delivery or how repeated asks behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action, with the no-op edge case last where it belongs. The second sentence is slightly convoluted ('reads the same whether or not anything is at the address') but still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with an output schema, the description covers trigger, audience, follow-up, and the no-op case. It leaves out what the response tells the caller and any confirmation/permission prerequisites, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents address, why, and project including formats and limits. The description adds only a gloss on what 'address' means ('a link or an address someone gave them'), which is a small increment over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — requesting access to something the person cannot open — and scopes it to links/addresses someone gave them. This is clearly distinguishable from access-granting siblings like apply_access and set_access, which open things rather than request them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear trigger condition (something the person cannot open) and an inverse case (an address already open to them sends nothing). It doesn't name the sibling to use instead when the caller actually wants to grant access, so routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_widgetCheck a widget, view or schedule before writing itA
Read-only
Inspect

For keeping a number as a widget on the project's home, making a dashboard or a page of numbers (a view), setting something on a timetable, like sending a view every Monday (a schedule), or setting the week's focus and the project's phases (the focus file): checks the file before it is written. Reads a draft widget, view or schedule file the way Alcoven will, and writes nothing: each line it can't read, with the line's number and what is allowed, or, when every line reads, what it would show now (a widget or view) or when it runs next and what it does (a schedule). Given only a path ending .view.md or .schedule.md, it returns that file's format and the guide's address. Given a path ending .focus.md with no text, it gives a focus file's format and the guide's address; with the text, each line Alcoven can't read, or the plan read back (the current phase and how many of its objectives are met, the week's number with its pace, and how many of its things are tasks). With no text, it returns the widget file's format.

NameRequiredDescriptionDefault
pathNoWhere the file goes, like reports/client.view.md or ops/monday.schedule.md. A path ending .view.md or .schedule.md reads the text as one; with no text, the answer is its format. A path ending .focus.md reads the text as the project's focus file; with no text, the answer is its format.
textNoThe whole file: a widget, a view or a schedule (with its path).
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
okYes
textYes
guideNo
notesNo
problemsYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, destructiveHint=false and closed-world scope, and the description reinforces them: 'writes nothing' and 'checks ... before it is written'. It adds genuine behavioral context — per-line errors with line numbers, and a preview of what a widget/view would show or when a schedule next runs. The return-value detail is partially redundant with the output schema, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is a sprawling run-on that front-loads product jargon ('a page of numbers (a view)') rather than the tool's action, and the trailing sentences re-explain the same .view.md/.schedule.md/.focus.md branching three times, largely duplicating the path schema. The reader must work to extract the one core instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full annotations and 100% parameter coverage, the description covers all four input modes and what each returns, which is enough for correct invocation. The only gap is that the draft-file contents domain (what a valid widget/view line looks like) is left entirely to the external guide it points at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the suffix-based mode switching in the path parameter, so the schema already carries the semantics. The description restates the extension behavior without adding format rules, and never mentions the 'project' parameter at all. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

After a long preamble about widgets, views, schedules and the focus file, the description lands on a specific verb and resource: 'checks the file before it is written. Reads a draft widget, view or schedule file the way Alcoven will, and writes nothing.' An agent can tell this is a validation/dry-run tool, distinct from the write-oriented siblings like add_document or edit_document. It does not name a sibling explicitly, so it falls short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trigger 'checks the file before it is written' implies pre-write validation, and the per-suffix rules (.view.md, .schedule.md, .focus.md, default widget) tell the agent which mode it will get. But there is no explicit when-not guidance and no named alternative (e.g. use read or part when you want the stored file rather than a draft), so usage is implied rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_noteClose a noteAInspect

Closes a note or a question once it is resolved, with what came of it: changed (the document was changed for it) or kept (the text stays as it is, with one line why in because). Whoever the note asks, its author or anyone who writes on the project may close it.

NameRequiredDescriptionDefault
noteYesThe note's § address, as open_project gives it, like acme/n-4f2k9a. A bare n-4f2k9a is this project's.
becauseNoOne line on why: needed with kept (why the text stays); with changed, saved when given.
outcomeYes
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
noteYes
outcomeYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description adds genuinely new context: the note is state-changed, not deleted, the 'kept' path requires a reason in 'because', and the permission model for who may close. It does not say what happens if the note is already closed (relevant since idempotentHint=false), which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose in the first clause, then outcome semantics, then permissions — no wasted sentences. The single long sentence is somewhat run-on, with the 'changed'/'kept' definitions nested mid-sentence, but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with an output schema, the description covers the action, the meaning of the required enum, the conditional 'because' requirement, and authorization. Return values are handled by the output schema, so nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, and the description adds real meaning beyond it by explaining the enum values: 'changed (the document was changed for it) or kept (the text stays as it is, with one line why in because).' This clarifies the consequence of each outcome and the conditional requirement on 'because'; the 'note' and 'project' parameters are left to the schema, which documents them well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Closes a note or a question') plus the state transition ('once it is resolved') and the two possible outcomes. Among siblings such as add_note and keep_my_part, no other tool performs this close/resolve action, so the agent can select it unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition ('once it is resolved') and an explicit authorization rule: 'its author or anyone who writes on the project may close it.' It stops short of naming alternatives (e.g., leaving a note open or editing the document instead), so it is clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_agent_callRun an outside agent's tool the person said yes toA
Destructive
Inspect

Runs an outside agent's tool that the person saw in a preview and said yes to, by the proposal id that came with the preview, and records what it sent and the answer on the project. It runs once, within ten minutes of the preview. For what the person has seen and said yes to.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
proposalYesThe proposal id that came with the preview.
leave_out_askNoTrue when the person wants what they asked left out of the project.
leave_out_didNoTrue when the person wants what they did left out of the project.

Output Schema

NameRequiredDescription
atNo
cutNo
ranYes
toolNo
agentNo
answerNo
recordNo
statusNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this destructive, open-world and non-idempotent, so the bar is lower. The description still adds real context: it executes exactly once, only within ten minutes of the preview, and records both the payload sent and the response on the project — behavior an agent could not infer from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its precondition, then the time limit, then the recording side effect — good ordering. The closing sentence duplicates the opening and earns little, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. The description covers the important operational traits (single execution, ten-minute window, recording on the project) and the schema covers all four parameters. Only the missing sibling routing keeps it from complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains project, proposal, leave_out_ask and leave_out_did. The description only reinforces the provenance of the proposal id ('that came with the preview') and says nothing about the leave_out flags or the project-vs-address fallback. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: runs an outside agent's tool that a person approved in a preview, keyed by proposal id. That is distinguishable from siblings like use_agent or agent_tools (which likely surface tools rather than execute an approved proposal). The trailing sentence 'For what the person has seen and said yes to' restates rather than sharpens, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the precondition (the person saw the preview and said yes) and the hard constraint (runs once, within ten minutes of the preview). However, no sibling is named as an alternative — nothing tells the agent to call confirm_hand_out/confirm_send or use_agent instead in a different situation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_hand_outHand out parts the person said yes toA
Destructive
Inspect

Hands out the parts the person saw in a preview, under their name, with the line on top they saw, by the proposal id that came with the preview. It goes out once, within 24 hours, and only while the document is at the version they saw. For parts the person has seen and said yes to.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
proposalYesThe proposal id hand_out returned.

Output Schema

NameRequiredDescription
toNo
askNo
sentYes
emailedNo
handoutNo
versionNo
documentNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark this as a destructive, non-idempotent write, and the description adds important behavior beyond that: it goes out once, expires after 24 hours, and is version-guarded to the document state the person saw. It does not describe failure behavior when those constraints are not met, but the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and remains compact across three sentences. The final sentence reinforces the key confirmation condition, though it slightly repeats the title and opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, annotations, and fully described parameters, the description covers the important invocation context: preview linkage, consent condition, one-time behavior, 24-hour window, and version matching. It does not explain error behavior if the window or version check fails, but otherwise it is complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains both parameters. The description reinforces that the proposal id comes from the preview, but it does not discuss the optional project parameter beyond what the schema provides, making this adequate but not additive enough to exceed baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (hands out parts) and ties it to a prior preview and proposal id, so the confirming nature of the tool is clear. It does not explicitly name sibling tools such as hand_out or confirm_send, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage condition: only for parts the person has seen and said yes to, using the proposal id from the preview. It also states the operational limits (once, within 24 hours, only at the seen version), which implicitly exclude stale or already-completed cases, though it does not name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_sendSend a change the person said yes toA
Destructive
Inspect

Sends to GitHub, as a commit or a pull request, a change the person saw in a preview, on their behalf, by the proposal id that came with the preview. It sends once, within 24 hours, and only while the change is as they saw it. For a change the person has seen and said yes to.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
proposalYesThe proposal id send_change returned.

Output Schema

NameRequiredDescription
urlNo
modeNo
noteNo
sentYes
pullRequestNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructive/non-idempotent/openWorld annotations, it discloses that the write goes to GitHub as a commit or PR, is made 'on their behalf', is single-shot 'within 24 hours', and is refused once the change diverges from the preview. The expiry window and staleness guard are exactly the behavioral context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and constraints are front-loaded in the first sentence, and the timing and staleness rules follow immediately. The closing sentence 'For a change the person has seen and said yes to' largely repeats the title and the first sentence's 'the person saw in a preview', so it is slight padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description covers destination, consent requirement, expiry, and staleness. It stops short of describing what an agent should do when the 24-hour window has lapsed or the preview is stale (error surface), which matters for a destructive, non-idempotent call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are already documented, including that 'proposal' is the id send_change returned. The description only restates that provenance ('the proposal id that came with the preview') and says nothing about 'project' scope beyond the schema's own note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('sends to GitHub, as a commit or a pull request'), the object acted on ('a change the person saw in a preview'), and the keying parameter ('the proposal id that came with the preview'). This clearly separates it from send_change, which produces the proposal, while confirm_send consumes it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The precondition is explicit and repeated: only 'a change the person has seen and said yes to' that is still 'as they saw it'. It does not explicitly name send_change as the alternative to use when no preview/consent exists, so the when-not side is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_documentChange documentsA
Destructive
Inspect

Changes, fixes or rewrites passages in documents and text files (a typo, a sentence, a paragraph, a figure), up to eight edits at once: each edit names a passage copied exactly (without line numbers), found there exactly once, what it becomes, and one line on why. The person sees every edit and confirms it in this AI tool before anything changes. Clients that cannot show that confirmation get a preview and a proposal id instead, and nothing changes until the proposal is confirmed. Files that are not text are not changed here: they get a new version by upload in Alcoven.

NameRequiredDescriptionDefault
didNoWhat the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: "Chose the three-step plan; fixed the March totals; rewrote the opening". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.
readNoThe § addresses you read for this work, kept with asked. Alcoven adds what it saw you read on this project since you last wrote on it, going back two hours at most.
askedNoWhat the person asked for, in their own words, as they said it: their request only, never the rest of the conversation, and left out when they do not want it shared. It goes on the project with the change, so everyone who sees the change, and their AIs, see why it was made.
editsYes
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
summariesNoFor a document whose meaning changed: its new summary in one or two sentences.
asked_fromNoWhere the request came from, when the person says so, in a few words: "Tuesday's call with the bank", "Ines's email".

Output Schema

NameRequiredDescription
writesNo
appliedYes
previewNo
proposalNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, so the agent already knows this mutates data; the description adds the crucial qualifier that the mutation is human-gated — 'The person sees every edit and confirms it in this AI tool before anything changes.' It also discloses the degraded path (preview plus proposal id, nothing changes until confirmed) and the exact-match-once constraint on find. That is behavior an agent cannot infer from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the operation and scale ('up to eight edits at once') and closes with the non-text exclusion, so the important routing information sits at both ends. The middle sentences are dense and slightly run-on, and the restatement of the edits sub-fields duplicates schema content that could have been cut.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is rich, so the description needn't explain return values — and it doesn't. It correctly covers the mutation-confirmation model and the text-only scope, which are the two things an agent could get wrong. The attribution parameters (did, asked, asked_from, read) carry elaborate schema prose but get no framing in the description at all.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86%, so the schema already documents all seven parameters thoroughly, including the did/read/asked attribution fields. The description paraphrases the edits object's four sub-fields (find copied exactly without line numbers, appearing once, the replacement, a one-line why) but adds no guidance for the other parameters. Baseline 3 applies when structured fields do the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Changes, fixes or rewrites passages in documents and text files') and enumerates the granularity (typo, sentence, paragraph, figure). The final sentence carves out a distinct resource boundary — non-text files are not changed here. What it doesn't do is differentiate from the sibling apply_edits, which reads like the same operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating conditions: up to eight edits at once, and a clear exclusion for non-text files, which are routed elsewhere ('they get a new version by upload in Alcoven'). The confirmation path is spelled out for both capable and incapable clients. It stops short of naming apply_edits or explaining when an agent should prefer that sibling over this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

grepFind lines in the project's filesA
Read-only
Inspect

Finds every line that holds an exact string or matches a pattern, across the project's documents, text files and code: exact text by default, or an extended regular expression with regex. Each line comes with its § address, ending #L and the line number. At most 200 lines; folder keeps it to one folder. For finding where something is named or used.

NameRequiredDescriptionDefault
regexNoRead the pattern as an extended regular expression.
folderNoA folder of the project, like src or research.
patternYesThe text to find, on one line, at most 200 characters.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
ignore_caseNoMatch letters in either case.

Output Schema

NameRequiredDescription
hitsYes
filesYes
cappedYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond that: each result line includes a § address ending in #L plus line number, results are capped at 200 lines, and folder scoping limits the search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with no wasted words, front-loading the core action and following with defaults, result format, cap, and usage context. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with full schema descriptions and an output schema, the description supplies purpose, matching modes, output address format, result cap, and folder scoping. It could more explicitly route the agent versus the sibling 'search' tool, but otherwise an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, setting the baseline at 3, but the description adds useful semantic clarifications: pattern is exact text by default, regex switches to extended regular expressions, and folder confines results to one folder. It does not explain project or ignore_case, but those are already covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Finds') and resource ('lines') across documents, text files and code, and distinguishes exact-string mode from regex mode. It is clear, but it does not explicitly contrast itself with the sibling 'search' tool, so it is not fully sibling-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case: 'For finding where something is named or used,' and explains exact matching by default versus regex. It does not state when not to use it or name alternatives such as 'search', so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

guideAlcoven's guidanceA
Read-only
Inspect

Alcoven's reference for one topic, the rules and steps for working in a project: starting, writing and changing documents, confirmations, parts and hand-outs, who sees what, widgets and numbers with the widget file's format, views and schedules, the focus file, tasks and expectations, reminders, outside agents, linked repositories, skills, and helping the person. Returns the full guidance for the topic, or for all of them. For a step that needs more than the server's instructions say, or for an app that cut them short.

NameRequiredDescriptionDefault
topicYesThe topic, or all.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, non-open-world, so safety is covered. The description adds that the call returns the *full* guidance (implying large output) and that 'all' is an option, but says nothing about whether guidance is static, versioned, or cached, and nothing about output shape beyond 'full guidance'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening claim and closing usage condition are well placed, but the middle is a sprawling comma-spliced list of fifteen topics that reads as filler since the enum already lists them. Trimming it to a few representative examples would improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A simple read-only lookup with full schema coverage and no output schema; the description need not explain return values. It covers when to call and what it returns, which is enough for correct invocation, with only minor ambiguity about topic naming left over.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters and enumerates the topics. The description's prose topic list roughly mirrors the enum but is worded differently ('parts and hand-outs', 'widgets and numbers with the widget file's format'), adding no mapping help, and it never mentions the 'project' parameter. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States it is a reference that returns the rules and steps for a named topic and that it returns the full guidance for that topic or all of them, so the verb+resource is clear. It is distinguishable from siblings (no other sibling returns guidance text), though the long run-on enumeration of topics muddies rather than sharpens the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence gives an explicit trigger: use it for a step needing more than the server's instructions say, or when an app truncated them. No competing alternative is named, but none clearly exists among the siblings, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hand_outHand a document outA
Destructive
Inspect

Shares a long document with the people on the project who need it, under this person's name: sends each person their part to read, or asks them to agree to a version; each part is on their home and in their own AI. A part is at most three passages, each copied word for word from one section of the document (at least four words, two sentences at most), with one sentence on why it matters to that person. line is the person's own line on top, saying what they need from these people; nothing goes out without it. ask: read (each person reads their part) or agree (each is asked to agree to this version). Parts go to people on the project, readers included; only people who write on the project hand out. The person confirms in this AI tool before anything goes out; clients that cannot show that confirmation get a preview and a proposal id instead.

NameRequiredDescriptionDefault
askNoread (the default): each person reads their part. agree: each person is asked to agree to this version.
nowNotrue when the person wants an answer now (on a call, before it ends): each person who takes part emails is emailed at once, where Alcoven has this turned on.
lineNoWhat the person needs from these people: one line in their own words, exactly as they wrote it.
partsYes
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
documentYesThe document to hand out.

Output Schema

NameRequiredDescription
toNo
askNo
sentYes
appliedNo
emailedNo
handoutNo
previewNo
versionNo
documentNo
proposalNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, non-idempotent), the description discloses the real side effects: content lands on each recipient's home and in their own AI, emails fire immediately when now=true, and nothing is sent without the 'line' and a confirmation step. It stops short of saying what destruction means here (e.g. irreversible notification to many people at once).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the prose is a single dense run-on with unusual phrasing ('each part is on their home and in their own AI', '§ address') that costs parsing effort. Constraints appear mid-paragraph rather than in a scannable structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, permission-gated, non-idempotent broadcast tool, the description covers who may call it, who receives, the confirmation gate, and the fallback preview path; an output schema exists so return values needn't be explained. Missing only explicit linkage to confirm_hand_out and a clear statement of irreversibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the baseline is 3; the description still adds value by stressing that 'line' is mandatory ('nothing goes out without it'), restating the read/agree semantics of 'ask', and giving the passage constraints (max three per person, word-for-word, four-word minimum, two-sentence maximum). The 'section' and 'now' parameters are essentially left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a concrete verb and resource ('Shares a long document with the people on the project who need it') and the rest clarifies the per-person part model. It hints at the confirmation sibling ('The person confirms in this AI tool before anything goes out') but never names confirm_hand_out, so routing between the two is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage conditions are unusually explicit for a domain tool: only writers on the project may hand out, readers may receive, and unconfirmed/clients-without-confirmation get a preview plus proposal id instead of a send. No sibling is named directly, so an agent must map the confirmation flow to confirm_hand_out itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

historyA document's versionsA
Read-only
Inspect

Earlier or previous versions of a document or a file, and what it looked like last week or before a change: every version, who wrote it, when, and from where; a file's with its type and size. With a version number, it also returns that version's text (a text file's first 400 lines).

NameRequiredDescriptionDefault
addressYesThe document or file.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
versionNo

Output Schema

NameRequiredDescription
textNo
addressYes
versionsYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description still adds real context: it states that every version is returned with author/time/origin, and that supplying a version number additionally yields that version's text, truncated to the first 400 lines for text files — useful disclosure not present in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is front-loaded, but it is delivered as one run-on sentence with a grammatical break ('a file's with its type and size') that forces re-reading. Tightening into two or three clean sentences would improve it without losing anything.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be described, and annotations cover the read-only profile. The description adequately covers metadata, version selection and truncation; only minor gaps remain, such as whether access to version history requires specific permissions or whether the full history is always paginated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the 'version' parameter has no schema description at all; the description compensates by explaining exactly what happens when a version number is supplied (returns that version's text, first 400 lines). 'address' is echoed as 'the document or a file', adding little, but the version behavior is a genuine semantic gain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear that 'history' returns a document's or file's earlier versions with author, timestamp and origin, plus file type/size. That is a specific resource with concrete contents, well beyond the bare name 'history'. It never distinguishes itself from siblings such as what_changed or read, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the phrase 'what it looked like last week or before a change', which suggests looking back before an edit, but there is no explicit when-to-use, when-not, or named alternative. An agent must infer that what_changed or read are the other options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

keep_my_partKeep a part drafted for the personAInspect

Keeps passages of a document nobody handed this person as their own part: at most three, each copied word for word from one section, with one sentence on why it matters to them. A later change to one of those passages brings the part back to them, as it does a part handed to them.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
documentYesThe document.
passagesYesAt most three.

Output Schema

NameRequiredDescription
partYes
versionYes
documentYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-destructive write operation. The description adds meaningful behavior beyond that: it limits passages to at most three, requires verbatim copying, and explains that later changes bring the part back to the person.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the core action and constraints. It is dense but mostly earns its length, with only minor awkwardness in phrasing such as 'as it does a part handed to them.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given full schema coverage, annotations, and an output schema, the description supplies the essential missing behavioral context about future change notifications. It does not cover every edge case, but it is complete enough for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains project, document, passages, says, passage, and section. The description mainly repeats those constraints and adds little parameter-specific meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: keeping document passages as someone's own part. It also distinguishes the scope from parts that were handed to the person, though it does not explicitly name a sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'nobody handed this person' implies the tool is for self-selected passages rather than assigned ones, giving implied usage guidance. However, it does not explicitly state when to use this versus alternatives such as hand_out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listList documentsA
Read-only
Inspect

Lists what is in a folder or in the whole project, newest change first, with who changed each and whether it changed since this person last opened it; files with their type and size. With a document's address, it lists the document's sections; with a file's, it says what the file is.

NameRequiredDescriptionDefault
detailNoshort, the default: one line for each item (its § address, title, who changed it and when, whether it changed since the person looked, and its first line), the newest 50 changes first, then how many more. full: each item with its first line on a line of its own, up to 200.
folderNoA folder path like research or src/components, or a document's § address for its sections. Empty: everything.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
moreNo
itemsYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe read-only operation. The description adds useful behavior beyond that: newest-change-first ordering, who changed items, whether they changed since last viewed, and file type/size, but it does not mention limits or auth/rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded around listing folder/project contents and uses only two sentences with no filler. The second sentence is dense and slightly run-on, but every clause carries functional meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations, a complete input schema, and an output schema, the description covers the main modes and return-relevant behavior adequately. It does not need to explain return formatting, but it also omits detail-mode limits and alternative-tool routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents folder, project, and detail modes thoroughly. The description adds one nuance not in the schema: a file address makes it identify what the file is, but most parameter meaning is already supplied by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it lists folder/project contents, document sections, or file identity. It does not explicitly differentiate itself from siblings such as search, grep, read, or what_changed, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the listing modes but gives no explicit when-to-use guidance or alternatives. An agent is not told when to choose this over search, grep, read, or what_changed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_partsThis person's partsC
Read-only
Inspect

What was handed to the person to read, and what they are asked to agree to: the parts of documents handed to them, each passage word for word with its § address. Then what changed in a passage since they got it, and in a document since they agreed to it; every open note asking them, word for word with its § address; and what they handed out, with each person's answer.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
notesYes
partsYes
handed_outYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds useful content-level context (that passages are returned word for word with § addresses and that changes-since-receipt are included), but says nothing about ordering, volume, or scope of the aggregate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sprawling run-on sentence chained with semicolons and commas, with no front-loaded statement of what the tool is. The four concerns are buried rather than structured, forcing the agent to parse rather than scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is not required, and the description does cover the conceptual contents. But for a multi-part aggregation tool with no required params, the description leaves unclear how the parts relate, their ordering, and how this call differs from the several sibling reads that surface the same objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional 'project' parameter is fully documented in the schema, including its slug source and the §-address/one-project exceptions. The description contributes nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates specific content (verbatim passages with § addresses, changes since receipt/agreement, open notes, handouts with answers), so an agent can infer this is a personal dossier/aggregate read. However, there is no clean verb+resource statement, and the four bundled concerns overlap heavily with siblings like part, what_changed, agreed, and hand_out, so the boundary is blurry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or named alternatives appear anywhere. The agent must guess whether to call my_parts versus what_changed or agreed for the same information, which is exactly what usage guidance should resolve.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_tasksThis person's tasksA
Read-only
Inspect

What the person needs to do today or next: their next step with its reason, then their tasks waiting on them (someone proposed a change they have not answered), theirs now, and quiet ones nobody touched for ten days.

NameRequiredDescriptionDefault
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
nowYes
nextNo
quietYes
expectsNo
waitingYes
everyoneOpenYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a safe, non-destructive, non-open-world read, so the description only needs to add context. It does: the result is prioritized, and the 'quiet' bucket has a concrete 10-day staleness threshold, plus a definition of what 'waiting on them' means. It omits scope/authorization (whose tasks are returned) and any size or pagination notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the lead clause states the point immediately. It is slightly run-on, packing four buckets plus a parenthetical definition into one line, which costs a little readability but not waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be explained, yet much of the description is spent describing result contents and ordering. What is left thin is the selection-side information: when this beats the sibling task or task_context, and whose tasks are returned when project is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – the single optional `project` parameter is documented in full, including its slug format and the default behavior when omitted. The description adds nothing about the parameter, which is acceptable at full coverage but earns only the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a clear scope: the tasks a person must do today or next, broken into named buckets (next step with reason, waiting-on-you, yours now, untouched for ten days). That is specific enough to distinguish it in spirit from single-task siblings. It never names or contrasts a sibling (task, task_context, list), and the 'person' is never defined, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the word 'today' – an agent can infer 'call this to see what needs attention now.' There is no explicit when-to-use statement, no exclusion conditions, and no pointer to the alternatives (task, task_context, list, my_parts) that an agent would otherwise have to disambiguate by trial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

numbersAsk a source for numbersB
Read-only
Inspect

How a number is doing (sign-ups, visits, sales, a funnel, open tasks) over some days, weeks or months, as a reading and a chart: numbers from one of the project's sources, as Alcoven shows them to this person: a measure over some days, split by day, week, month or a field, with where the numbers come from and when they were fetched or counted; for a table or numbers a product sends, the day of the newest row or the time of the newest number, how often new ones should come, who keeps it and whether it has gone quiet. source: "this project" (counted now from what this person can open: its own open tasks, tasks added, done and past due, open and closed notes, what waits for agreement, agreements and changes, split by person or folder; and expectations, how the Expect lines whose date fell in the window came out, split only by mine for this person's own), a .source.md path, or a GitHub folder linked to the project (like app/), which offers releases, merged pull requests and commits. The answer ends with the same question written as a widget file. Takes a widget's path or § address and answers with that widget's own settings (shape, steps, days, comparison). The answer carries a chart view for apps that show interactive views, and the same numbers as text and data for every app.

NameRequiredDescriptionDefault
byNoday, week, month, or a field the source names.
sinceNoA date (2026-10-01), "28 days", "this month" or "this year". Default: the widget's own Since line when there is one, else 28 days.
sourceNoThe source: this project, a .source.md path, or a linked folder like app/. Not needed when widget is given.
widgetNoA widget's path, ending .widget.md, or its § address. The answer uses that widget's own lines, so source and measure are not needed.
compareNo"the period before", "last year" or "target 500".
measureNoA measure the source names, like sign-ups. Not needed when widget is given.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
byYes
okYes
urlNo
textYes
viewNo
as_ofNo
shapeNo
sinceYes
titleNo
untilYes
whereYes
funnelNo
widgetYes
addressNo
readingYes
measuresYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds substantive behavioral context: permission-limited source data ('what this person can open'), freshness/fetch details, widget-derived settings, and chart plus text/data output formats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very long and run-on, packing source types, widget behavior, and output formats into a dense paragraph. The content is relevant, but it is not front-loaded or easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations present, the description still supplies enough context about supported sources and answer shape for correct invocation. It is less complete on routing versus sibling tools, but adequate overall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters are documented in the schema. The description adds examples for source and widget and notes that widget supplies source/measure, but does not add much syntax beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (numbers from project sources) and operation (read/report a measure over time, with chart and text/data output), and enumerates source types. It does not contrast with siblings such as list, search, or why, but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use/when-not guidance and no mention of alternative tools. It describes widget and source modes, but leaves the agent to infer that this is for metrics/charts rather than, e.g., list or search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_projectOpen the projectA
Read-only
Inspect

Opens a project at the start of a conversation, or on a switch to another one: its brief and folders, its current phase and its objectives, this person's next step with its reason, this week's focus and what's missing, what is waiting for this person (parts handed to them, asks to agree, notes asking them, their tasks), who looks after what, the skills its members put there for every AI working on it, what changed since they last looked, with changes in what they look after first, and the project's own instructions. When the person is on several projects and none is named, it lists them, to choose which one to work in.

NameRequiredDescriptionDefault
detailNoshort, the default: what waits on the person, the project's own instructions, who looks after what and the skills, whole; then the rest within 12,000 characters, where what does not fit is given as a § address with one line or counted in the answer's last line. full: all of it, with no budget.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
nowNo
youYes
nextNo
focusNo
notesNo
partsNo
phaseNo
spineYes
tasksYes
todayYes
viewsNo
peopleNo
skillsNo
tablesNo
changesYes
funnelsNo
missingNo
projectYes
widgetsNo
left_outNo
projectsNo
schedulesNo
shortenedNo
came_askedNo
last_monthNo
for_your_aiNo
more_skillsNo
instructionsNo
more_changesNo
left_out_lineNo
outside_agentsNo
expectations_weekNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare a safe read operation. The description adds substantial behavior beyond that: what context is returned, that it lists projects when several exist and none is named, and how the schema-level detail budget affects output. It explains the branching behavior an agent needs to anticipate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is a long run-on list of every possible returned item, which is hard to parse and largely redundant with the output schema. The purpose is front-loaded, but the structure and verbosity work against quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and annotations, the description is nearly complete: it covers when to call, what context is returned, and multi-project fallback behavior. It does not address error cases or what happens if a named project cannot be opened, but those are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds only a small implicit note that 'project' is not needed when the person is on one project, and otherwise defers to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Opens a project') and enumerates the context it loads, so an agent knows what the tool does. It does not explicitly distinguish itself from siblings like 'list' or 'guide', leaving sibling differentiation implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states when to use it: 'at the start of a conversation, or on a switch to another one.' It also explains the multi-project ambiguity case. It does not name when not to use it or alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

partAnswer a partAInspect

Records the person's answer to a part handed to them: got_it (read) for a part to read; agree, or not_yet with why (their one line on what is off), for a part asking them to agree to a version. version is the version of the document they read; agree needs the current one. A Not yet becomes a note asking whoever handed it out. For when the person answers a part in this conversation ('got it', 'agreed', 'not yet, because...').

NameRequiredDescriptionDefault
whyNoFor not_yet: what is off, in one line, in the person's words.
partYesThe part: its id from open_project or my_parts, or its document's § address.
actionYes
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
versionYesThe version of the document the person read.

Output Schema

NameRequiredDescription
noteNo
partYes
answerYes
versionYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes meaningfully beyond the annotations by disclosing a real side effect: a `not_yet` becomes a note asking whoever handed the part out. It also states that `agree` requires the current version, which is a correctness constraint the annotations do not express. Nothing here contradicts readOnlyHint=false / idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action semantics are front-loaded and every sentence carries real information — no filler. The semicolon-chained sentences are dense and slightly awkward to parse ('their one line on what is off'), but the economy is justified for a five-parameter mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers the action model, the version-currency rule, and the note side effect. It is not quite complete: the optional `project` parameter and how it interacts with § addresses is left entirely to the schema, and the downstream consequence of an `agree` is not stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 80% the baseline is 3, and the description earns above that by explaining the conditional relationship between parameters: `why` is only for not_yet, `version` is what the person actually read, and `agree` needs the current one. The one gap is `project`, which is left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: records a person's answer to a part handed to them, then enumerates the three answer shapes (got_it, agree, not_yet). That is clearly distinguishable from generic note/skill tools, but it never contrasts itself with the sibling tool `agreed`, which an agent could easily confuse with the `agree` action here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives a usable trigger — when the person answers a part in this conversation, quoting the likely utterances ('got it', 'agreed', 'not yet, because...'). It stops short of saying when not to use it or naming an alternative, and the near-namesake sibling `agreed` goes unaddressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

readRead from the projectA
Read-only
Inspect

Opens, shows or reads what a document, a section, a task, a note or a file says, word for word, with who wrote it and when; a text file or code by its lines. A document of several sections is read one section at a time: its own address answers with its title and its sections, each with its § address. A text file comes with its line numbers (12| ...), at most 400 lines at a time; offset goes on from a line, and an address ending #L10-24 gives those lines. The numbers are not part of the text. A Word file, a spreadsheet or slides come as the text of their preview. Any other file comes as what it is and a link to open it in Alcoven: its bytes are not read. For a .view.md, the view as this person sees it: each block's reading with its § address, a rows block's first five rows, and what each form adds a row to. For a .focus.md, the project's plan as this person sees it: its phases with how each stands and the current one's objectives, this week's number and things with their tasks, and the gaps set aside, then the file. A Google Sheets source whose rows are shown answers with its rows from the last fetch, 100 at a time, newest last; offset is then the sheet row to start at.

NameRequiredDescriptionDefault
limitNoLines to return. Default 300.
offsetNoLine to start at, from a previous read.
addressYesA § address from Alcoven, like acme/research/pricing.md, acme/research/pricing.md#findings or acme/src/app.ts#L10-24. The leading § is optional.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
atYes
toYes
viaYes
fileNo
fromYes
kindYes
textYes
viewNo
focusNo
totalYes
agreedNo
authorYes
sourceNo
widgetNo
addressYes
widgetsNo
scheduleNo
sectionsNo
nextOffsetYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real behavior: line numbers are not part of the text, binary/Office files return a preview or a link rather than bytes, capped at 400 lines or 100 rows. It stops short of stating failure modes, but the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the whole definition is one enormous semicolon-chained sentence mixing purpose, per-format behavior and pagination, which makes it hard to scan. Every clause carries information, yet the formatting works against the reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters and a full output schema, the description goes well beyond the required minimum by covering each address type (.md sections, plain text, Office previews, .view.md, .focus.md, Google Sheets rows). Only error/empty-address behavior and the relationship to grep/search are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely extends the parameters: it explains that 'offset goes on from a line', that '#L10-24 gives those lines', and that offset means a sheet row when reading a Google Sheets source. That resolves the ambiguity the schema alone leaves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb list and resource list ('Opens, shows or reads what a document, a section, a task, a note or a file says, word for word'), so an agent knows this is the content-retrieval tool. It does not explicitly contrast itself with siblings like grep or search, which read text too, so the boundary is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage rules are implied rather than stated: 'A document of several sections is read one section at a time' and the different pagination semantics per file type tell the agent how to sequence calls. There is no explicit when-to-use/when-not or named alternative (grep, search, part), which is the main gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remindRemind someoneAInspect

Reminds or nudges someone on the project, or the person themselves, about a task, an open question, a note or anything else on a day they choose: sets a reminder email, or lists the reminders this person set that are still to go. A reminder is one email, once, on the morning of the day given in the receiver's time zone. It is about a task, a note that asks them, or their part of a document handed out to them (it is not sent if that is done, answered or closed by then), or about nothing on record, with a line in the person's words. With days_before_due on a task that has a due day, it goes that many days before the due day and follows the due day if it moves. Setting it again for the same thing and person moves the one still to go; with cancel, it is taken back. Anyone on the project who can open the thing may set one, for anyone on it who can open it too; agents get no email. With no about, who or line, it lists the reminders still to go.

NameRequiredDescriptionDefault
onNoThe day it goes: YYYY-MM-DD, or "tomorrow", in the receiver's time zone; tomorrow up to 90 days ahead.
whoNoWhom it goes to: a name or member id on the project, or "me". Default: the person the task is for, or whom the note asks.
lineNoOne line in the person's words, at the top of the email. Needed when it is about nothing on record.
aboutNoWhat it is about: a task's or a note's § address, like acme/t-4f2k or acme/n-4f2k9a, or a document's address for the part of it handed out to who. Without it, the reminder is about nothing on record and needs line.
cancelNoTrue takes back the reminder still to go with this about and who.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
days_before_dueNoFor a task with a due day, in place of on: this many days before it is due.

Output Schema

NameRequiredDescription
setNo
movedNo
alreadyNo
cancelledNo
remindersYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: exactly one email, sent once, on the morning of the chosen day in the receiver's time zone; suppressed if the underlying item is done/answered/closed by then; rescheduling replaces the pending reminder rather than duplicating; permissions are anyone-who-can-open-it; agents receive no email. One nuance worth noting is the tension between idempotentHint=false and the create-or-move semantics described, but the description discloses the actual replacement behavior explicitly, so an agent is not misled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, but it is a single sprawling paragraph that packs listing mode, permissions, rescheduling, cancel, and due-date follow behavior into undifferentiated prose. Nothing is wasted, yet the lack of structure makes the agent work to parse it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema available and full annotation coverage, the description covers capability, permissions, suppression rules, rescheduling, cancellation, and the list mode. It is complete enough to call correctly, though the list-mode behavior is buried at the end rather than surfaced early.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the description still adds meaning: days_before_due is described as following a moving due date, about accepts document addresses for handed-out parts, and defaults for who and project are explained. Some params (on, line, cancel) are only restated at the level the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Reminds or nudges someone ... sets a reminder email, or lists the reminders") and scopes it to project members, so the two modes are distinguishable. It is distinguishable from siblings like add_note or ask_for, though it never names them explicitly, and the dense run-on prose makes the core purpose slower to extract than it should be.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete mode-switching rules: "With no about, who or line, it lists the reminders still to go," "with cancel, it is taken back," and the reschedule behavior when setting the same about/who again. It also states who may set reminders for whom and that agents get no email. It stops short of naming an alternative sibling tool to use instead for any case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_scheduleRun a schedule nowA
Destructive
Inspect

Runs a schedule or cron job on the project now, to try a script or see its result: runs a schedule's script (its Run line: a node, python or bash script of the project, on Alcoven's servers), then its Do lines if the script exits with 0, as the schedule's owner, whatever its timetable. It asks the person to confirm in this AI tool, or answers with a preview and a proposal id, which this tool takes to run it once the person says yes. Returns the run's result, how long it took and the end of the script's log once it finishes, or that it is still going. For people who write in the schedule's folder.

NameRequiredDescriptionDefault
pathYesThe schedule's path, like instagram/post.schedule.md, or its § address.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
proposalNoThe proposal id that came with the preview, once the person said yes to it.

Output Schema

NameRequiredDescription
logNo
ranYes
runNo
saidNo
stateNo
commitNo
previewNo
proposalNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructive/openWorld annotations: it discloses execution as the schedule's owner, the exit-code-0 gating of Do lines, the two-phase preview/proposal-id confirmation flow, and what the response contains (result, duration, log tail, or still-running). This is exactly the extra context the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, but the core content is crammed into one long run-on sentence with nested parentheticals ('its Run line: a node, python or bash script of the project, on Alcoven's servers'), which costs readability. The trailing 'For people who write in the schedule's folder' adds little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description covers the essential gaps: execution scope, permission model (acts as owner), the confirmation protocol, and the success/failure branching. Minor omissions like side-effect scope of Do lines or failure behavior are tolerable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning about the 'proposal' parameter by explaining the confirm-then-rerun loop that makes a path-only call return a preview instead of a run. The path/project semantics are left entirely to the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Runs a schedule or cron job on the project now') and immediately scopes it to execution of the schedule's script, not editing it. No sibling tool overlaps with this action, and the description makes the trigger semantics ('whatever its timetable') unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases ('to try a script or see its result') and describes the human-in-the-loop path for when confirmation is required. It stops short of naming when NOT to use it or pointing at any alternative tool, but the intent is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_changeSend a change to a linked repositoryA
Destructive
Inspect

Sends (pushes) the person's change to code or a site on GitHub, from a folder linked to its repository: as one commit with a sentence of why, straight to the branch when the link lets this person commit and GitHub lets them push there, unless pull_request is true; otherwise as a pull request. Edits and new files in a linked folder, made over MCP or in Alcoven, wait in that change until it is sent. The person confirms in this AI tool before anything is sent; clients that cannot show that confirmation get a preview and a proposal id instead.

NameRequiredDescriptionDefault
whyYesOne sentence of what it changes and why, for the people who read it on GitHub. It becomes the commit's message, and the pull request's title when it opens one.
folderNoThe linked folder, like apps/site. Needed only when the person has changes waiting for more than one repository.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
pull_requestNotrue when the person wants a pull request for this change although the link lets them commit straight to the branch. Leave it out otherwise.

Output Schema

NameRequiredDescription
urlNo
modeNo
noteNo
sentYes
previewNo
proposalNo
pullRequestNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and openWorldHint=true, yet the description adds material context: pending edits accumulate in the change until sent, the person must confirm inside the AI tool before anything is pushed, and clients unable to show that confirmation receive a preview plus a proposal id. That disclosure of the confirmation gate and fallback path is exactly what an agent needs before invoking a destructive, non-idempotent external write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, then the branching logic, then the confirmation behavior. The clause 'straight to the branch when the link lets this person commit and GitHub lets them push there' is dense and slightly wordy, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world push tool with a full output schema and complete parameter documentation, the description covers the operation, the branch-vs-PR decision, prerequisite conditions, pending-change semantics, and the confirmation/preview fallback. An agent has everything needed to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics: `why` becomes the commit message and PR title, `folder` is only required with pending changes across multiple repositories, and `pull_request` exists specifically to force a PR despite branch-commit permissions. That clarifies parameter interplay rather than restating field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Sends (pushes) the person's change to code or a site on GitHub') and immediately ties it to the linked-folder mechanism, so the agent knows exactly what operation is performed and where. The two delivery modes (commit vs pull request) are named, distinguishing it from sibling tools like confirm_send or apply_edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditions: default is a direct commit when the link permits and GitHub allows the push, otherwise a pull request; pull_request=true is the explicit override. It also says when `folder` is needed (multiple repos with pending changes). It does not name alternate sibling tools such as confirm_send for the confirmation-preview case, leaving that routing implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_accessChange who sees whatA
Destructive
Inspect

Changes who can see a top folder of the project, like finance/, to hide it from some people or the client, or make it visible to everyone (path, with sees: everyone on the project, or only these people, each reading or writing), or which top folders one person or agent sees (person, with folders), as this person, in their rights: managers change anything; the people a closed folder names who write change its people; anyone who writes may close a new, empty top folder, naming themselves. Managers always see everything. Everything inside a top folder follows it, so a deeper folder or a file is refused, with how to move it into a top folder instead. The answer first says what the change opens or closes, and to whom; the person confirms it in this AI tool before anything changes, and clients that cannot show that confirmation get that line and a proposal id instead. For when the person asks to change who sees what.

NameRequiredDescriptionDefault
pathNoA top folder, like finance/: whose setting to change.
seesNoWith path: "everyone" on the project, or only these people besides the managers, each writing unless reads is true.
personNoOr: the person or agent whose own top folders to set, by member id or name.
foldersNoWith person: "everything" open to them, or only these top folders.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
changeNo
appliedYes
previewNo
proposalNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: the person must confirm in the AI tool before anything changes, clients without confirmation get a proposal id, deeper folders/files are refused with guidance, and managers always see everything. It also explains the rights model for who may change which settings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the description is a long, run-on paragraph with dense comma-spliced rules that are hard to parse. Most information is relevant, but the structure could be much clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive access-control tool with an output schema and rich annotations, the description covers the important behavioral pieces: permissions, confirmation, proposal ids, refusal for non-top folders, and manager visibility. Nothing essential for correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents path, sees, person, folders, and project in detail. The description adds modest mode-level clarification but largely repeats what the schema already provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: changing visibility of a top folder or setting which top folders a person/agent sees. The two modes (path/sees vs person/folders) are clear, but it does not explicitly distinguish itself from siblings such as apply_access, who_sees, or set_role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger: 'For when the person asks to change who sees what,' with concrete conditions for folder-level vs person-level changes. It does not name alternatives or state when another sibling tool should be used instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_roleSet someone's roleA
Destructive
Inspect

Who does what on the project: sets a person's role (a few words, like account lead or designer) and what they look after: topics, then the project's folders or files that hold that work (folders end with /). Folders and files the project does not have are left out and named in the answer. The person may set their own, or anyone's when they manage the project. looks_after replaces the whole list. Also for someone just invited.

NameRequiredDescriptionDefault
roleNoA few words, like Founder or Account lead. Leave it out to keep the role as it is.
memberYesThe person: their member id (m-xxxxxx) or their name.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
looks_afterNoTopics, then folders or files: the whole list. Leave it out to keep the list as it is.

Output Schema

NameRequiredDescription
nameYes
roleYes
memberYes
left_outYes
looks_afterYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark this as destructive and non-idempotent, and the description adds meaningful behavioral detail: looks_after replaces the entire list, nonexistent folders/files are omitted and named in the answer, and permissions limit whose role can be changed. This is strong context beyond the safety hints, though it does not discuss confirmation or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and every sentence carries operational meaning, but it is quite dense with colons and fragments. It avoids filler, though the run-on phrasing around topics, folders, and files slightly reduces readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and annotations cover the destructive profile, the description provides enough context to call the tool correctly: required member identification, permission scope, replacement behavior, and handling of unknown folders/files. The only minor gap is that it does not explicitly state role omission preserves the current role, which the schema covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema by specifying that folders end with '/', that looks_after is the full replacement list, and that invalid folders/files are silently excluded and reported. These are useful parameter-format and behavior details not fully captured in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it sets a person's role and what they look after, including topics, folders, and files. It implicitly distinguishes this from access-management siblings like set_access and who_sees by framing it as 'who does what' rather than permissions. However, it never explicitly names or contrasts those sibling tools, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful situational guidance: someone may set their own role, or anyone's when they manage the project, and it applies to someone just invited. It does not mention alternatives such as set_access or apply_access, nor does it state when not to use this tool. Usage context is present but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

taskAdd or close a taskBInspect

Adds a task to do, marks one done, or opens it again, as this person. A new task can be for this person or someone else on the project (by name), due on a day, in a folder, and stand on § addresses. A new task can also say what it is expected to bring and by when, up to three lines, each with a number of the project in brackets when one measures it; Alcoven measures that number when the day ends. came_of_it records what came of an expectation in the person's words. The answer reads each expectation back.

NameRequiredDescriptionDefault
dueNoFor add: YYYY-MM-DD.
forNoFor add: who it is for, by name. Default: this person.
taskNoFor done and reopen: the task's § address.
titleNoFor add.
whichNoFor came_of_it: which of the task's expectations, 1 to 3. Default: the first one still waiting for its words.
wordsNoFor came_of_it: what came of it, in the person's words.
actionYes
expectNoFor add: what the task is expected to bring and by when, one line each, like "1 call by 2026-10-30 (numbers/conversations.widget.md)"; the path in brackets names the number that measures it, a widget or a source and its measure.
folderNoFor add: the folder it belongs to.
detailsNoFor add: more about the task.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
stands_onNoFor add: § addresses it builds on.

Output Schema

NameRequiredDescription
nextNo
addressYes
expectsNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the key safety profile: not read-only, not idempotent, not destructive, closed-world. The description adds useful domain behavior, especially that Alcoven measures expectation numbers when the day ends and that the answer reads expectations back. It still does not clarify mutation side effects, duplicate handling, or what happens to existing task data on done/reopen.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the three main actions and stays reasonably short. However, the wording is dense and occasionally opaque, with undefined terms such as § and Alcoven and a run-on explanation of expectations that could be clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values. Given 12 parameters and four actions, it covers the unusual expect and came_of_it behavior but leaves gaps around action-specific routing and when to prefer this tool over related task tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 92%, so the schema already carries most parameter meaning. The description adds some domain context around expect and came_of_it, but mostly repeats what the schema says for fields like expect, title, folder, and stands_on, and does not explain the action enum values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specific verbs and resources: it adds a task, marks one done, or reopens it, acting as this person. It also distinguishes add behavior (for this person or someone else, due, folder, stands-on addresses) from the other actions. It does not explicitly distinguish itself from siblings such as my_tasks or add_note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the action values do but gives no explicit guidance on when to use this tool versus alternatives like my_tasks, task_context, add_note, or remind. There are no exclusions or decision rules for choosing this tool over those siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_contextGather what a task stands onA
Read-only
Inspect

A briefing on one task, or its background before work on it starts: gathers the task itself, what it links to, its notes, who worked on it, the documents most connected to it, and what changed in them since the person last looked.

NameRequiredDescriptionDefault
taskYesThe task's § address.
detailNoshort, the default: the task, what it links to, the agreed documents that bind it and what changed in its folders, whole; then its notes, the most connected documents and who worked on them, the whole answer within 16,000 characters, where what does not fit is given as a § address with one line or counted in the last line. full: all of it, with no budget.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
taskYes
textYes
notesYes
agreedNo
linkedYes
peopleYes
changesYes
expectsNo
relatedYes
left_outNo
shortenedNo
left_out_lineNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint true, openWorldHint false, and destructiveHint false, so the safety profile is covered. The description adds meaningful behavioral context by saying it gathers six related data classes and reports what changed relative to the person's last view; it stops short of permissions, rate limits, or pagination details, which are less critical here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one front-loaded sentence that states the purpose before listing the gathered components. The list is dense but every item is relevant, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, three-parameter read-only tool with full schema descriptions and an output schema, the description explains what is gathered and the temporal angle of the briefing. It lacks explicit sibling routing, but an agent has enough information to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema's detail enum description already explains the short/full budget behavior and the project parameter. The description only says 'one task' and does not add parameter meaning beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it 'gathers' a briefing on one task, including links, notes, people, connected documents, and changes. The composite scope distinguishes it in practice from single-purpose siblings like task, read, or what_changed, though it does not name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'or its background before work on it starts' gives a clear usage context for when to call the tool. It does not name alternatives such as task, read, history, or what_changed, nor does it state exclusions, so it is clear context without routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

use_agentRun an outside agent's toolA
Destructive
Inspect

Runs something at an outside agent's service for the person (a report, a search, a change there): runs one tool of an outside agent on the project, at its own service, on the project's sign-in there, and records what it sent and the answer on the project. A tool the project allows to run at once does so; a tool set to ask first asks the person to confirm in this AI tool, or answers with a preview and a proposal id. Returns the service's answer, marked as its text, and the § address where it is recorded. For people who write to the project.

NameRequiredDescriptionDefault
didNoWhat the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: "Chose the three-step plan; fixed the March totals; rewrote the opening". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.
readNoThe § addresses you read for this work, kept with asked. Alcoven adds what it saw you read on this project since you last wrote on it, going back two hours at most.
toolYesThe tool's exact name.
whatNoOne line in the person's words of what the call does, like "Add the 12 negative keywords to the brand campaign". Needed for a tool that asks first: the person sees it before saying yes, and Changes shows it.
againNoTrue only when the person wants the same call run again after it ran in the last ten minutes.
agentYesThe outside agent: its name or its member id, as open_project lists it.
askedNoWhat the person asked for, in their own words, as they said it: their request only, never the rest of the conversation, and left out when they do not want it shared. It goes on the project with the change, so everyone who sees the change, and their AIs, see why it was made.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.
argumentsNoThe tool's inputs, as its input schema names them.
asked_fromNoWhere the request came from, when the person says so, in a few words: "Tuesday's call with the bank", "Ines's email".

Output Schema

NameRequiredDescription
atNo
cutNo
ranYes
toolNo
agentNo
answerNo
recordNo
statusNo
previewNo
proposalNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint, openWorld and non-idempotency, so the bar is lower; the description still adds real context beyond them. It discloses that the call runs on the outside service under the project's sign-in, that both the request payload and the answer are recorded on the project at a § address, and that ask-first tools may block on human confirmation or return a proposal id. It does not spell out what side effects may occur at the outside service, which is why it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded and clear, but the first clause restates the same idea twice ('Runs something at an outside agent's service for the person ... runs one tool of an outside agent'). The trailing sentence 'For people who write to the project' is vague and does little work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, yet the description does note the answer is returned as the service's text with its § address. Annotations cover the risk profile and the schema covers all parameters, so the description's remaining job is the execution/confirmation model, which it covers. The main gap is the absence of explicit routing to the confirmation sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the meaning of all ten parameters including the nested arguments object. The description adds no parameter-level guidance of its own (no clarification of agent, project, again, or did semantics). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: runs one tool of an outside agent, at its own service, on the project's sign-in. It also distinguishes the tool from the confirmation sibling by describing the ask-first path that yields a preview and proposal id. The parenthetical 'a report, a search, a change there' adds concreteness, though no sibling is named outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the two execution modes (runs at once vs asks first, returning a preview/proposal id), which implies when the flow will divert to a confirmation step. But it never names confirm_agent_call or agent_tools, nor states when to reach for this tool rather than those. Usage is implied rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

what_changedWhat changedA
Read-only
Inspect

What is new or changed on the project and what others did: a catch-up since this person last looked in Alcoven (two weeks at most), or everything since a given day, for a status update or the week in review. By default the changes by others; with who set to "everyone", the person's own changes too, each marked as theirs. What is waiting on them comes first, then the changes in what they look after, then the rest.

NameRequiredDescriptionDefault
whoNoothers (the default): changes by others only. everyone: the person's own changes too.
sinceNoYYYY-MM-DD. Default: since the person last looked, at most two weeks.
detailNoshort, the default: one line for each change (its § address, what changed, who, the day, and what the person asked and did where they said), the first 40 in the answer's order, then how many more. full: up to 150 changes, each with its time and where it was made (in Alcoven, by a push, or from an AI app).
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
moreNo
changesYes
waitingNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, closed-world, so the safety profile is covered. The description still adds real behavior: default scope excludes the person's own changes unless who=everyone, each item is marked as theirs, and results are ordered as waiting-on-them first, then their area, then the rest. It does not mention rate limits or volume caps beyond the detail-mode counts, which are already in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose before defaults and ordering. Dense but every clause carries information; the only friction is unexplained internal jargon like '§ address' and 'what the person asked and did where they said', which assumes prior knowledge of the product.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not describe return values, and it covers scope defaults, the time window, and result ordering — enough to call it correctly. It could still flag what happens when nothing has changed or how the two-week cap interacts with an explicit since date.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already carries its own description, so the burden is on the schema. The description restates the who=everyone default and the two-week since fallback almost verbatim from the schema, adding little beyond it; the 'each marked as theirs' note is the only genuinely new semantic. Baseline 3 is correct here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb-plus-resource: what is new or changed on the project and what others did, plus the catch-up framing and a status-update use case. An agent can tell it is a scoped activity feed rather than a full audit log. It never names a sibling (history, search) explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering contexts: a catch-up since the person last looked (two weeks at most), or a status update / week in review over an arbitrary day. That is clear when-to-use guidance. It stops short of saying when not to use it or pointing at alternatives such as history or search for older or narrower lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

who_seesWho sees a folder or fileA
Read-only
Inspect

Who can see or change a folder or a file of the project, by name, with whether each reads or writes and who manages the project. Who sees what is set on top folders, so for a path inside one the answer also names the top folder it comes from (set_on). It answers only for what this person can open: for anything else the answer is that nothing there is open to them.

NameRequiredDescriptionDefault
pathYesA folder (ending in /) or a file, like finance/ or contracts/sow.md, or its § address.
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
pathYes
peopleYes
set_onNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral context: results include set_on inheritance from top folders and are limited to resources the person can open. It does not discuss permissions required to run the query or performance characteristics, but it substantially describes observable behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and contains useful behavioral detail, but the second sentence is long and somewhat awkwardly structured. It is informative rather than wasteful, though not tightly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return value details need not be repeated, and annotations cover the safety profile. The description completes the picture by explaining inheritance via set_on and the limitation that only accessible items are answered. It is sufficient for an agent to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are fully documented in the schema, including path format and project context. The description adds the concept of project-by-name and set_on output semantics, but does not add parameter syntax beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific query purpose: reporting who can see or change a folder/file, with read/write status and project managers. It names the resource and scope but does not explicitly distinguish the tool from likely siblings such as set_access or apply_access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied as a read-only permission lookup with a limitation: it answers only for what the requesting person can open. However, it does not explicitly say when to use this instead of set_access, apply_access, or other access-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whyWhy this is hereA
Read-only
Inspect

Why something on the project is the way it is, and who put it there: who wrote a passage or a document, with which AI and when, what they asked for, what they say they did themselves, where it came from, and what their AI read for it. Takes a document's § address, and a few words of a passage to answer for that passage; without a quote it gives the change behind each run of lines, in the document's order, the first 20. Documents only, not files.

NameRequiredDescriptionDefault
quoteNoA few words of the passage, copied from it.
addressYesThe document (a section's address reads its whole document).
projectNoThe project's slug, from open_project, like acme. Not needed when a § address names the project, or when the person is on one project.

Output Schema

NameRequiredDescription
notesYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds genuinely new behavioral facts: the no-quote mode returns changes in document order and truncates at the first 20. It also scopes coverage to documents, not files. It does not say what happens on a quote that matches multiple passages or nothing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scope statement and the quote/no-quote branching are correctly front-loaded, and every clause carries information. The second half is a single very long run-on sentence whose clause list (AI, prompt, what they did themselves, where from, what AI read) is dense and slightly hard to parse in one pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be described, and the description still covers the important call-time facts: document-only scope, the truncation to 20 items, and the mode switch driven by quote. Missing is guidance on ambiguous or zero quote matches, which matters for a lookup tool keyed on free text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a 3 baseline would apply, but the description adds meaning the schema does not: quote scopes the answer to that passage and its absence switches the whole response mode to per-line-run changes. The '§ address' phrasing reinforces the schema's note that a section address reads its whole document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete framing ('Why something on the project is the way it is, and who put it there') and then enumerates the specific facts returned: authorship, which AI, prompts, manual work, provenance, and sources read. That makes the resource and verb recoverable despite the cryptic tool name 'why'. It stops short of distinguishing itself from near siblings such as history, what_changed, or read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context and an explicit exclusion ('Documents only, not files'), and it explains the two modes: quote supplied → answer for that passage; no quote → change behind each run of lines in document order. What it omits is naming the alternatives (history, what_changed) that an agent should choose instead when it wants raw change data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedrun_schedule1 field changed
      • addedOutput schema / properties / commit
        Added value: +{
        +  "type": "string"
        +}
  2. 1 tool update
    • Addedrun_schedule
  3. 14 tool updates
    • Changedadd_document1 field changed
      • addedInput schema / properties / did
        Added value: +{
        +  "description": "What the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: \"Chose the three-step plan; fixed the March totals; rewrote the opening\". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.",
        +  "maxLength": 300,
        +  "type": "string"
        +}
    • Changedadd_rows1 field changed
      • addedInput schema / properties / did
        Added value: +{
        +  "description": "What the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: \"Chose the three-step plan; fixed the March totals; rewrote the opening\". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.",
        +  "maxLength": 300,
        +  "type": "string"
        +}
    • Changedadd_skill1 field changed
      • addedInput schema / properties / did
        Added value: +{
        +  "description": "What the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: \"Chose the three-step plan; fixed the March totals; rewrote the opening\". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.",
        +  "maxLength": 300,
        +  "type": "string"
        +}
    • Changedapply_edits1 field changed
      • addedInput schema / properties / leave_out_did
        Added value: +{
        +  "description": "True when the person wants what they did left out of the project.",
        +  "type": "boolean"
        +}
    • Changedconfirm_agent_call1 field changed
      • addedInput schema / properties / leave_out_did
        Added value: +{
        +  "description": "True when the person wants what they did left out of the project.",
        +  "type": "boolean"
        +}
    • Changededit_document1 field changed
      • addedInput schema / properties / did
        Added value: +{
        +  "description": "What the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: \"Chose the three-step plan; fixed the March totals; rewrote the opening\". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.",
        +  "maxLength": 300,
        +  "type": "string"
        +}
    • Addedguide
    • Changedlist1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "short, the default: one line for each item (its § address, title, who changed it and when, whether it changed since the person looked, and its first line), the newest 50 changes first, then how many more. full: each item with its first line on a line of its own, up to 200.",
        +  "enum": [
        +    "short",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedopen_project4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "short, the default: what waits on the person, the project's own instructions, who looks after what and the skills, whole; then the rest within 12,000 characters, where what does not fit is given as a § address with one line or counted in the answer's last line. full: all of it, with no budget.",
        +  "enum": [
        +    "short",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / left_out
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / left_out_line
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / shortened
        Added value: +{
        +  "type": "number"
        +}
    • Addedremind
    • Changedsearch3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "full, the default: each row with its § address, kind, title, headline, author, date and length in tokens. short: each row with its § address, title, headline, author and date.",
        +  "enum": [
        +    "short",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / queries / description
        Added value: +"One to five phrasings of what is looked for. Each is ranked on its own and the rankings are fused by reciprocal rank, so what several phrasings find comes before what one finds; two to four phrasings in other words (other word forms, synonyms, the other language) find more in a large project than one."
      • addedInput schema / properties / until
        Added value: +{
        +  "description": "Only things changed on or before this day, YYYY-MM-DD.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
    • Changedtask_context5 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "short, the default: the task, what it links to, the agreed documents that bind it and what changed in its folders, whole; then its notes, the most connected documents and who worked on them, the whole answer within 16,000 characters, where what does not fit is given as a § address with one line or counted in the last line. full: all of it, with no budget.",
        +  "enum": [
        +    "short",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / agreed
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / left_out
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / left_out_line
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / shortened
        Added value: +{
        +  "type": "number"
        +}
    • Changeduse_agent1 field changed
      • addedInput schema / properties / did
        Added value: +{
        +  "description": "What the person did themselves in this work, in a few words they agree with: what they chose or decided, what they corrected, rewrote or wrote, what they checked and against what. Start with the verb, in the past tense, in their language: \"Chose the three-step plan; fixed the March totals; rewrote the opening\". Say nothing of what you did, what they did not do, how long it took, or a share of the work. Pass no did when their part was the request and the yes. Everyone who sees the change reads it, people outside the team included. At most 300 characters.",
        +  "maxLength": 300,
        +  "type": "string"
        +}
    • Changedwhat_changed4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "short, the default: one line for each change (its § address, what changed, who, the day, and what the person asked and did where they said), the first 40 in the answer's order, then how many more. full: up to 150 changes, each with its time and where it was made (in Alcoven, by a push, or from an AI app).",
        +  "enum": [
        +    "short",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / changes / items / properties / asked
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / changes / items / properties / did
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / more
        Added value: +{
        +  "type": "number"
        +}
  4. 1 tool update
    • Changedopen_project1 field changed
      • addedOutput schema / properties / expectations_week
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  5. 4 tool updates
    • Changedmy_tasks1 field changed
      • addedOutput schema / properties / expects
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedopen_project1 field changed
      • addedOutput schema / properties / came_asked
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "line": {
        +        "type": "string"
        +      },
        +      "open": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "open",
        +      "line"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedtask5 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "add",
        -  "done",
        -  "reopen"
        -]New value: +[
        +  "add",
        +  "done",
        +  "reopen",
        +  "came_of_it"
        +]
      • addedInput schema / properties / expect
        Added value: +{
        +  "description": "For add: what the task is expected to bring and by when, one line each, like \"1 call by 2026-10-30 (numbers/conversations.widget.md)\"; the path in brackets names the number that measures it, a widget or a source and its measure.",
        +  "items": {
        +    "maxLength": 600,
        +    "minLength": 3,
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / which
        Added value: +{
        +  "description": "For came_of_it: which of the task's expectations, 1 to 3. Default: the first one still waiting for its words.",
        +  "maximum": 3,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / words
        Added value: +{
        +  "description": "For came_of_it: what came of it, in the person's words.",
        +  "maxLength": 500,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / expects
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedtask_context1 field changed
      • addedOutput schema / properties / expects
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  6. 1 tool update
    • Changedopen_project1 field changed
      • addedOutput schema / properties / for_your_ai
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "address": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "pressed_at": {
        +        "type": "string"
        +      },
        +      "prompt": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "prompt",
        +      "address",
        +      "pressed_at"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  7. 2 tool updates
    • Changedset_access6 fields changed
      • removedInput schema / properties / changers
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "const": "everyone",
        -      "type": "string"
        -    },
        -    {
        -      "items": {
        -        "maxLength": 120,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "maxItems": 100,
        -      "type": "array"
        -    }
        -  ],
        -  "description": "With path: \"everyone\" who sees it and writes, or only these people besides the managers. Leave it out to keep who changes it."
        -}
      • changedInput schema / properties / folders / anyOf
        Previous value: -[
        -  {
        -    "const": "everything",
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "properties": {
        -        "path": {
        -          "maxLength": 1100,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "reads": {
        -          "description": "true: they read it and do not write.",
        -          "type": "boolean"
        -        }
        -      },
        -      "required": [
        -        "path"
        -      ],
        -      "type": "object"
        -    },
        -    "maxItems": 100,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "const": "everything",
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "properties": {
        +        "path": {
        +          "description": "A top folder, like design/.",
        +          "maxLength": 1100,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "reads": {
        +          "description": "true: they read it and do not write.",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "path"
        +      ],
        +      "type": "object"
        +    },
        +    "maxItems": 100,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / folders / description
        Previous value: -"With person: \"everything\" open to them, or only these folders and files."New value: +"With person: \"everything\" open to them, or only these top folders."
      • changedInput schema / properties / path / description
        Previous value: -"A folder (ending in /) or a file, like finance/ or contracts/sow.md: whose setting to change."New value: +"A top folder, like finance/: whose setting to change."
      • changedInput schema / properties / person / description
        Previous value: -"Or: the person or agent whose own folders to set, by member id or name."New value: +"Or: the person or agent whose own top folders to set, by member id or name."
      • changedInput schema / properties / sees / description
        Previous value: -"With path: \"everyone\" on the project, or only these people besides the managers. Leave it out to keep who sees it."New value: +"With path: \"everyone\" on the project, or only these people besides the managers, each writing unless reads is true."
    • Changedwho_sees1 field changed
      • addedOutput schema / properties / set_on
        Added value: +{
        +  "type": "string"
        +}
  8. 1 tool update
    • Changedcheck_widget1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"Where the file goes, like reports/client.view.md or ops/monday.schedule.md. A path ending .view.md or .schedule.md reads the text as one; with no text, the answer is its format."New value: +"Where the file goes, like reports/client.view.md or ops/monday.schedule.md. A path ending .view.md or .schedule.md reads the text as one; with no text, the answer is its format. A path ending .focus.md reads the text as the project's focus file; with no text, the answer is its format."
  9. 1 tool update
    • Changedread1 field changed
      • addedOutput schema / properties / view / properties / blocks / items / properties / lines
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  10. 3 tool updates
    • Changedmy_tasks1 field changed
      • addedOutput schema / properties / next
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "acts": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "address": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "empty": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "more": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rung": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "skipped": {
        +      "type": "number"
        +    },
        +    "step": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "then": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "address": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "step": {
        +              "type": "string"
        +            },
        +            "why": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "step",
        +            "why",
        +            "address"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "why": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "step",
        +    "why",
        +    "address",
        +    "acts",
        +    "more",
        +    "rung",
        +    "then",
        +    "empty",
        +    "skipped"
        +  ],
        +  "type": "object"
        +}
    • Changedopen_project5 fields changed
      • addedOutput schema / properties / focus
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "done_this_week": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "items": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "closed": {
        +            "type": "boolean"
        +          },
        +          "done": {
        +            "type": "boolean"
        +          },
        +          "n": {
        +            "type": "number"
        +          },
        +          "task": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": {},
        +                "properties": {
        +                  "address": {
        +                    "type": "string"
        +                  },
        +                  "for": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "state": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "address",
        +                  "state",
        +                  "for"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "when": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "words": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "n",
        +          "words",
        +          "when",
        +          "done",
        +          "closed",
        +          "task"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "line": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "number": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "address": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "closed": {
        +              "type": "boolean"
        +            },
        +            "moves_it": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "reading": {
        +              "type": "string"
        +            },
        +            "title": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "address",
        +            "title",
        +            "reading",
        +            "moves_it",
        +            "closed"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "state": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "week_of": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "address",
        +    "week_of",
        +    "state",
        +    "line",
        +    "number",
        +    "items",
        +    "done_this_week"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / last_month
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "lines": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "month": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "month",
        +    "lines"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / missing
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "counted": {
        +      "type": "number"
        +    },
        +    "in_place": {
        +      "type": "number"
        +    },
        +    "lines": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "addresses": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "fix": {
        +            "type": "string"
        +          },
        +          "text": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "text",
        +          "fix",
        +          "addresses"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "set_aside": {
        +      "type": "number"
        +    },
        +    "set_aside_lines": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "by": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "day": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "gap": {
        +            "type": "string"
        +          },
        +          "reason": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "gap",
        +          "reason",
        +          "by",
        +          "day"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "in_place",
        +    "counted",
        +    "set_aside",
        +    "lines",
        +    "set_aside_lines"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / next
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "acts": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "address": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "empty": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "more": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rung": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "skipped": {
        +      "type": "number"
        +    },
        +    "step": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "then": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "address": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "step": {
        +              "type": "string"
        +            },
        +            "why": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "step",
        +            "why",
        +            "address"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "why": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "step",
        +    "why",
        +    "address",
        +    "acts",
        +    "more",
        +    "rung",
        +    "then",
        +    "empty",
        +    "skipped"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / phase
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "days_left": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "ended": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "met": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "n": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "objectives": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "address": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "closed": {
        +            "type": "boolean"
        +          },
        +          "met": {
        +            "type": "boolean"
        +          },
        +          "no_task": {
        +            "type": "boolean"
        +          },
        +          "words": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "words",
        +          "met",
        +          "address",
        +          "closed",
        +          "no_task"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "of": {
        +      "type": "number"
        +    },
        +    "state": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "until": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "n",
        +    "of",
        +    "title",
        +    "address",
        +    "state",
        +    "until",
        +    "days_left",
        +    "met",
        +    "objectives",
        +    "ended"
        +  ],
        +  "type": "object"
        +}
    • Changedtask1 field changed
      • addedOutput schema / properties / next
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "acts": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "address": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "empty": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "more": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rung": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "skipped": {
        +      "type": "number"
        +    },
        +    "step": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "then": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "address": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "step": {
        +              "type": "string"
        +            },
        +            "why": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "step",
        +            "why",
        +            "address"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "why": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "step",
        +    "why",
        +    "address",
        +    "acts",
        +    "more",
        +    "rung",
        +    "then",
        +    "empty",
        +    "skipped"
        +  ],
        +  "type": "object"
        +}
  11. 1 tool update
    • Changedread1 field changed
      • addedOutput schema / properties / focus
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "built": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "closed": {
        +              "type": "boolean"
        +            },
        +            "kept_by": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "moves_it": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "now": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "pace": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "by": {
        +                      "type": "string"
        +                    },
        +                    "days_left": {
        +                      "type": "number"
        +                    },
        +                    "days_since": {
        +                      "type": "number"
        +                    },
        +                    "early": {
        +                      "type": "boolean"
        +                    },
        +                    "met": {
        +                      "type": "boolean"
        +                    },
        +                    "needed": {
        +                      "type": "number"
        +                    },
        +                    "now": {
        +                      "type": "number"
        +                    },
        +                    "on_pace": {
        +                      "type": "boolean"
        +                    },
        +                    "per": {
        +                      "type": "string"
        +                    },
        +                    "rise": {
        +                      "type": "boolean"
        +                    },
        +                    "sentence": {
        +                      "type": "string"
        +                    },
        +                    "so_far": {
        +                      "type": "number"
        +                    },
        +                    "target": {
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "target",
        +                    "by",
        +                    "now",
        +                    "met",
        +                    "needed",
        +                    "so_far",
        +                    "per",
        +                    "rise",
        +                    "early",
        +                    "days_since",
        +                    "days_left",
        +                    "on_pace",
        +                    "sentence"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "path": {
        +              "type": "string"
        +            },
        +            "reading": {
        +              "type": "string"
        +            },
        +            "title": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "path",
        +            "title",
        +            "closed",
        +            "reading",
        +            "now",
        +            "pace",
        +            "moves_it",
        +            "kept_by"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "kept_by": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "phases": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "date_passed": {
        +            "type": "boolean"
        +          },
        +          "days_left": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "ended": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "from": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "met": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "n": {
        +            "type": "number"
        +          },
        +          "objectives": {
        +            "items": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "closed": {
        +                      "type": "boolean"
        +                    },
        +                    "kind": {
        +                      "const": "number",
        +                      "type": "string"
        +                    },
        +                    "met": {
        +                      "type": [
        +                        "boolean",
        +                        "null"
        +                      ]
        +                    },
        +                    "now": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "pace": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "by": {
        +                              "type": "string"
        +                            },
        +                            "days_left": {
        +                              "type": "number"
        +                            },
        +                            "days_since": {
        +                              "type": "number"
        +                            },
        +                            "early": {
        +                              "type": "boolean"
        +                            },
        +                            "met": {
        +                              "type": "boolean"
        +                            },
        +                            "needed": {
        +                              "type": "number"
        +                            },
        +                            "now": {
        +                              "type": "number"
        +                            },
        +                            "on_pace": {
        +                              "type": "boolean"
        +                            },
        +                            "per": {
        +                              "type": "string"
        +                            },
        +                            "rise": {
        +                              "type": "boolean"
        +                            },
        +                            "sentence": {
        +                              "type": "string"
        +                            },
        +                            "so_far": {
        +                              "type": "number"
        +                            },
        +                            "target": {
        +                              "type": "number"
        +                            }
        +                          },
        +                          "required": [
        +                            "target",
        +                            "by",
        +                            "now",
        +                            "met",
        +                            "needed",
        +                            "so_far",
        +                            "per",
        +                            "rise",
        +                            "early",
        +                            "days_since",
        +                            "days_left",
        +                            "on_pace",
        +                            "sentence"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "path": {
        +                      "type": "string"
        +                    },
        +                    "target": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "by": {
        +                              "type": "string"
        +                            },
        +                            "value": {
        +                              "type": "number"
        +                            }
        +                          },
        +                          "required": [
        +                            "value",
        +                            "by"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "title": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "required": [
        +                    "kind",
        +                    "path",
        +                    "title",
        +                    "closed",
        +                    "target",
        +                    "now",
        +                    "met",
        +                    "pace"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "closed": {
        +                      "type": "boolean"
        +                    },
        +                    "kind": {
        +                      "const": "task",
        +                      "type": "string"
        +                    },
        +                    "met": {
        +                      "type": "boolean"
        +                    },
        +                    "task": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "address": {
        +                              "type": "string"
        +                            },
        +                            "for": {
        +                              "type": [
        +                                "string",
        +                                "null"
        +                              ]
        +                            },
        +                            "state": {
        +                              "type": "string"
        +                            },
        +                            "title": {
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "address",
        +                            "title",
        +                            "state",
        +                            "for"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "words": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "kind",
        +                    "words",
        +                    "closed",
        +                    "met",
        +                    "task"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "of": {
        +            "type": "number"
        +          },
        +          "state": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "until": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "n",
        +          "title",
        +          "from",
        +          "until",
        +          "state",
        +          "date_passed",
        +          "days_left",
        +          "met",
        +          "of",
        +          "ended",
        +          "objectives"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "problems": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "read": {
        +      "type": "boolean"
        +    },
        +    "read_back": {
        +      "type": "string"
        +    },
        +    "reason": {
        +      "type": "string"
        +    },
        +    "set_aside": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "by": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "day": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "gap": {
        +            "type": "string"
        +          },
        +          "reason": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "gap",
        +          "reason",
        +          "by",
        +          "day"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "week": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "done": {
        +              "type": "number"
        +            },
        +            "items": {
        +              "items": {
        +                "additionalProperties": {},
        +                "properties": {
        +                  "closed": {
        +                    "type": "boolean"
        +                  },
        +                  "done": {
        +                    "type": "boolean"
        +                  },
        +                  "due": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "n": {
        +                    "type": "number"
        +                  },
        +                  "task": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "address": {
        +                            "type": "string"
        +                          },
        +                          "for": {
        +                            "type": [
        +                              "string",
        +                              "null"
        +                            ]
        +                          },
        +                          "state": {
        +                            "type": "string"
        +                          },
        +                          "title": {
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "address",
        +                          "title",
        +                          "state",
        +                          "for"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "when": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "words": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "n",
        +                  "words",
        +                  "when",
        +                  "due",
        +                  "closed",
        +                  "done",
        +                  "task"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "line": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "number": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "closed": {
        +                      "type": "boolean"
        +                    },
        +                    "kept_by": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "moves_it": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "now": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "pace": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "by": {
        +                              "type": "string"
        +                            },
        +                            "days_left": {
        +                              "type": "number"
        +                            },
        +                            "days_since": {
        +                              "type": "number"
        +                            },
        +                            "early": {
        +                              "type": "boolean"
        +                            },
        +                            "met": {
        +                              "type": "boolean"
        +                            },
        +                            "needed": {
        +                              "type": "number"
        +                            },
        +                            "now": {
        +                              "type": "number"
        +                            },
        +                            "on_pace": {
        +                              "type": "boolean"
        +                            },
        +                            "per": {
        +                              "type": "string"
        +                            },
        +                            "rise": {
        +                              "type": "boolean"
        +                            },
        +                            "sentence": {
        +                              "type": "string"
        +                            },
        +                            "so_far": {
        +                              "type": "number"
        +                            },
        +                            "target": {
        +                              "type": "number"
        +                            }
        +                          },
        +                          "required": [
        +                            "target",
        +                            "by",
        +                            "now",
        +                            "met",
        +                            "needed",
        +                            "so_far",
        +                            "per",
        +                            "rise",
        +                            "early",
        +                            "days_since",
        +                            "days_left",
        +                            "on_pace",
        +                            "sentence"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "path": {
        +                      "type": "string"
        +                    },
        +                    "reading": {
        +                      "type": "string"
        +                    },
        +                    "title": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "path",
        +                    "title",
        +                    "closed",
        +                    "reading",
        +                    "now",
        +                    "pace",
        +                    "moves_it",
        +                    "kept_by"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "state": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "week_of": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "week_of",
        +            "state",
        +            "number",
        +            "done",
        +            "line",
        +            "items"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "address",
        +    "url",
        +    "reason",
        +    "kept_by",
        +    "read",
        +    "read_back",
        +    "problems",
        +    "notes",
        +    "phases",
        +    "week",
        +    "set_aside",
        +    "built"
        +  ],
        +  "type": "object"
        +}
  12. 1 tool update
    • Changedread1 field changed
      • changedOutput schema / required
        Previous value: -[
        -  "address",
        -  "kind",
        -  "author",
        -  "at",
        -  "via",
        -  "text",
        -  "from",
        -  "to",
        -  "total",
        -  "nextOffset",
        -  "schedule"
        -]New value: +[
        +  "address",
        +  "kind",
        +  "author",
        +  "at",
        +  "via",
        +  "text",
        +  "from",
        +  "to",
        +  "total",
        +  "nextOffset"
        +]
  13. 1 tool update
    • Changedcheck_widget4 fields changed
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Where the file goes, like reports/client.view.md or ops/monday.schedule.md. A path ending .view.md or .schedule.md reads the text as one; with no text, the answer is its format.",
        +  "maxLength": 1024,
        +  "type": "string"
        +}
      • changedInput schema / properties / text / description
        Previous value: -"The whole widget file."New value: +"The whole file: a widget, a view or a schedule (with its path)."
      • removedInput schema / properties / text / minLength
        Removed value: -1
      • removedInput schema / required
        Removed value: -[
        -  "text"
        -]
  14. 2 tool updates
    • Changedopen_project1 field changed
      • addedOutput schema / properties / schedules
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "next": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "path",
        +      "next"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedread5 fields changed
      • addedOutput schema / properties / schedule
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "does": {
        +      "type": "string"
        +    },
        +    "next": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "owner": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "paused": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "problems": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "reason": {
        +      "type": "string"
        +    },
        +    "runs": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "at": {
        +            "type": "string"
        +          },
        +          "said": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "at",
        +          "said"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "when": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "zone": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "address",
        +    "reason",
        +    "when",
        +    "zone",
        +    "next",
        +    "does",
        +    "owner",
        +    "paused",
        +    "runs",
        +    "problems",
        +    "url"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / view / properties / acts
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "address": {
        +        "type": "string"
        +      },
        +      "adds_to": {
        +        "type": "string"
        +      },
        +      "columns": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "kind": {
        +        "type": "string"
        +      },
        +      "table": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "tool": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "kind",
        +      "address",
        +      "adds_to",
        +      "table",
        +      "columns",
        +      "tool"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / view / properties / blocks / items / properties / rows
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "columns": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "count": {
        +      "type": "number"
        +    },
        +    "first": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "cells": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "row": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "row",
        +          "cells"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "count",
        +    "columns",
        +    "first"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / view / properties / filters
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "address",
        -  "kind",
        -  "author",
        -  "at",
        -  "via",
        -  "text",
        -  "from",
        -  "to",
        -  "total",
        -  "nextOffset"
        -]New value: +[
        +  "address",
        +  "kind",
        +  "author",
        +  "at",
        +  "via",
        +  "text",
        +  "from",
        +  "to",
        +  "total",
        +  "nextOffset",
        +  "schedule"
        +]
  15. 37 tool updates
    • First observedadd_document
    • First observedadd_note
    • First observedadd_rows
    • First observedadd_skill
    • First observedagent_tools
    • First observedagreed
    • First observedapply_access
    • First observedapply_edits
    • First observedask_for
    • First observedcheck_widget
    • First observedclose_note
    • First observedconfirm_agent_call
    • First observedconfirm_hand_out
    • First observedconfirm_send
    • First observededit_document
    • First observedgrep
    • First observedhand_out
    • First observedhistory
    • First observedkeep_my_part
    • First observedlist
    • First observedmy_parts
    • First observedmy_tasks
    • First observednumbers
    • First observedopen_project
    • First observedpart
    • First observedread
    • First observedrelated
    • First observedsearch
    • First observedsend_change
    • First observedset_access
    • First observedset_role
    • First observedtask
    • First observedtask_context
    • First observeduse_agent
    • First observedwhat_changed
    • First observedwho_sees
    • First observedwhy

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources