Skip to main content
Glama

Server Details

Read and grow a person's falsifiable, consent-based model of how they work with AI (CMP).

Ownership verified
Status
Healthy
Uptime
67.7% over 62 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
filinils/hunchful-mcp
GitHub Stars
0
Server Listing
Hunchful

TDQS

B3.4/5.0

Scored across 89 tools

Disambiguation2/5

With 89 tools, many purposes overlap: send_message, send_to_conversation, message_group, pro_message, and pling_friend all send messages; context, whats_new, whats_waiting, relay_status, and whoami all provide orientation/status. Detailed descriptions help, but boundaries remain fuzzy around messaging, search/find, and session/event creation.

Naming Consistency4/5

Names are predominantly snake_case and use predictable prefixes (list_, read_, create_, add_, send_, manage_), making them mostly easy to scan. However, verb choices vary and several tools are bare nouns (context, events, fetch, knock, search, whoami), so a strict verb_noun pattern is not maintained.

Tool Count1/5

89 tools is far beyond a well-scoped set and constitutes an extreme mismatch for practical agent use. Even for a broad social platform, this many tools overwhelms selection and suggests feature sprawl.

Completeness4/5

The surface covers a remarkably wide domain—households, groups, messaging, posts, events, quizzes, professional profiles, models—with CRUD-like operations for many resources. Gaps exist (no message deletion, no leave-group/home, no general profile update), but core lifecycle workflows are largely present.

Available Tools

89 tools
add_household_eventHousehold: add a calendar eventAInspect

Put an event in the household calendar ("Dentist Tuesday 15:00", "Grandma visits") — only what the person asked for. Consent: the AI setting for groups — 'draft' puts a one-tap card in their Stream, 'send' adds it now, 'off' refuses; a household with someone under 18 is always a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesYYYY-MM-DD, e.g. 2026-10-07.
timeNoHH:MM in the household's time, e.g. "15:00". Leave out for all day.
titleYesShort, e.g. "Dentist (Alva)".
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
whyNoWhy it's a draft (said to the person).
dateYes
noteYes
timeYes
titleYes
itemIdNoThe Stream card, when it's a draft.
statusYes
eventIdNo
householdYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover safety flags (readOnly=false, idempotent=false, destructive=false); the description adds genuinely new behavior: the three AI consent settings and what each does, plus the hard rule that households with a minor always produce a draft. That is exactly the kind of outcome-level detail an agent cannot infer from 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.

Conciseness4/5

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

Front-loads the action, then the examples, then the consent rule — no filler sentences. The consent clause is dense and slightly packed into one long sentence, which costs a little readability but nothing is wasted.

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 no explanation, and the description covers the non-obvious behavior (consent routing, minor safeguard) that the schema and annotations cannot. What is left implicit is duplicate handling and permission requirements, which a mutation tool would ideally state.

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 date/time/title/household formats are already documented (YYYY-MM-DD, HH:MM, 'Dentist (Alva)', list_households names). The description's examples echo the schema rather than adding new syntax or constraints, so the baseline 3 applies.

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 ('Put an event in the household calendar') and grounds it with two concrete examples, which lets an agent separate it from siblings like create_event, add_hunch, or add_session without opening any schema.

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 usage constraint ('only what the person asked for') and explains the consent gate that decides whether the event is drafted, sent, or refused. It stops short of naming an alternative tool or explicitly contrasting with create_event/read_household_calendar.

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

add_hunchAdd a hunch (owner key)AInspect

Record a NEW hunch the person just confirmed in conversation — a custom axis with their answer, added directly to their model (visible, revisable, removable by them). OWNER-LEVEL trust required: OAuth as the owner, or the editToken. Only record what the person actually said — never invent or infer a hunch they didn't confirm. For situational axes name it 'When '. If they haven't answered yet, use suggest_question instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoYour name, e.g. "claude" — recorded in the revision history.
nameYesShort axis name, e.g. "When plans change suddenly".
poleYesThe pole the person SAID fits them.
poleAYesPole A label.
poleBYesPole B label.
modelIdNo
editTokenNoThe model's edit key, if not connected via OAuth.
confidenceNo0.05–0.97; default 0.7 for a fresh self-stated answer.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes
urlsYes
falsifierNo
patternIdYes
statementNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only supply the safety/idempotency flags; the description adds the load-bearing behaviors: owner-level authorization required, the record is visible/revisable/removable by the person, and the agent must not invent or infer a hunch. The 'NEW' framing also matches idempotentHint=false coherently.

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?

Four tightly packed sentences, front-loaded with the core action and constraints, with the alternative tool named last. No filler or restatement of the title.

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?

An output schema exists, so return values need not be described. Between the description (auth, naming, confirmation rule, alternative) and the schema (8 params, enums, ranges), an agent has everything needed 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 already 88%, so the baseline is 3, but the description adds real semantics beyond it: a naming convention for situational axes ('When <situation>') and a constraint that 'pole' must reflect what the person actually said, not a model inference. The by/editToken/modelId parameters remain schema-documented only.

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 — recording a newly confirmed hunch as a custom axis added to the person's model — and explicitly frames it as NEW versus an unanswered prompt. It is clearly distinguishable from suggest_question and read_model without opening a schema.

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 the selecting condition for both directions: use this when the person has just confirmed an answer, use suggest_question instead if they haven't answered yet. It also states prerequisites (owner-level trust via OAuth or editToken) up front.

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

add_sessionSchedule: suggest a new sessionA
Idempotent
Inspect

Suggest a new session in a group the person leads — a one-off (a match, a show, a förhör/test day: kind other) or a weekly series. ALWAYS a card in their Stream: "Add to the schedule" does it with one tap (then it's in everyone's week). Only when they ask.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesYYYY-MM-DD (the first one, for a series), e.g. 2026-10-09.
kindNotraining (default), match, show or other.
bringNoThings to bring, e.g. ["Penna", "Miniräknare"].
groupNoA group the person leads — its name, e.g. "P13" or "8B" (add the förening's name if several share it, e.g. "Löparklubben P13"), or its groupId from list_personas. May be left out when they lead exactly one.
placeYesWhere, e.g. "Sal 204" or "Limhamns IP, plan 2".
startYesHH:MM, e.g. 18:00.
titleYes≤ 60 characters, e.g. "Förhör kapitel 3" or "Träning".
untilNoA series' last date, YYYY-MM-DD (optional).
repeatNonone (default), weekly or every_other_week.
minutesNoHow long, e.g. 90 (default 90).

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
whyYes
noteYes
groupYes
itemIdYes
statusYes
whenTextYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description usefully adds that nothing is written directly — it always produces a Stream card the user must tap, and that it only fires on request. That mechanism is behavior an agent could not infer from 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?

Three short sentences, front-loaded with the core action and ending with the guardrail. The parentheticals and Swedish terms add local color without bloating it, though "ALWAYS" capped and the mixed-language examples are slightly noisy.

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 10 parameters, full schema coverage, an output schema, and annotations present, the description only needs to establish intent and the suggestion-card behavior, which it does. Series-specific parameters (repeat/until) are left entirely to the schema, which is acceptable given its richness.

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 each parameter is already well documented, setting the baseline at 3. The description adds only marginal value, clarifying that "kind other" maps to a match/show/förhör test day, which is a small semantic gain over the enum.

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 (suggest a new session) and scopes it to groups the person leads, distinguishing one-off events from weekly series. It does not explicitly differentiate itself from the sibling change_session, but the noun/verb pairing is unambiguous on its own.

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?

"Only when they ask" gives a clear triggering condition, and the description conveys the mechanism (a suggestion card the user taps to confirm) rather than a silent write. No explicit when-not or named alternative, so it stops 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_shopping_itemsHousehold: add to the shopping listAInspect

Put things on the household's shopping list — only what the person asked for. Something already on the list isn't added twice; something bought recently comes back. Consent: the person's AI setting for groups — 'draft' puts a one-tap card in their Stream (nothing is added until they tap), 'send' adds now, 'off' refuses; a household with someone under 18 is always a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes1–20 things, one per entry, e.g. ["milk", "eggs", "oat yoghurt"].
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
whyNoWhy it's a draft (said to the person).
noteYes
addedNo
itemsYes
itemIdNoThe Stream card, when it's a draft.
statusYes
alreadyNo
householdYes

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses dedup behavior, that recently-bought items are resurrected, and a full three-mode consent model ('draft'/'send'/'off') plus the under-18 always-draft override. This is exactly the behavioral context the annotations (readOnly=false, destructive=false, idempotent=false) cannot carry. The dedup line has mild tension with idempotentHint=false, but the resurrection semantics make the overall behavior genuinely non-idempotent, so it is not a contradiction.

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 core action and dedup behavior, then the consent model; every sentence carries load. The semicolon-chained consent sentence is dense but each clause is needed given the branching behavior.

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?

An output schema exists, so return values need no explanation, and the description fully covers the non-obvious behaviors (dedup, resurrection, consent gating, minor-safety override). Nothing an agent needs to invoke this correctly is 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 both parameters (items, household) are already fully documented in the schema, including the 1–20 count and the single-household omission rule. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

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 ('Put things') and resource ('the household's shopping list') with a scope qualifier ('only what the person asked for'). An agent can distinguish this from read_shopping_list or check_shopping_items without opening any schema.

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 '— only what the person asked for' clause constrains when to add, and the consent paragraph explains when an add actually takes effect, which is useful. But it never names or routes to alternatives (read_shopping_list, check_shopping_items), so sibling selection is left to inference.

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

answer_follow_requestChannels: answer a follow requestA
DestructiveIdempotent
Inspect

Approve or decline one follow request for the person — ONLY with their own answer for that person, and only with confirm: true (ask first: "Anna asks to follow your channel — approve?"). Consent: their 'friends' policy — 'draft' puts a card in their Stream that opens their requests to answer there, 'send' answers now (an approval tells the requester; a decline is silent), 'off' refuses.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNotrue once the person said yes to exactly this answer.
decisionYes"approve" or "decline".
requestIdYesThe requestId from list_follow_requests, e.g. "aB3dE5fG7hJ9kL1mN3pQ5rS7".

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
noteYes
itemIdYes
statusYes
decisionYes
requestIdYes
requestStatusYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description goes further by disclosing consequences beyond the annotation surface: approvals notify the requester while declines are silent, and answering is gated by the target's consent policy. It stops short of covering auth/scope or rate behavior, but adds real value.

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 is front-loaded in the first clause, and every sentence carries non-redundant information. The heavy parenthetical nesting (em-dash clause plus embedded example quote) makes it denser than ideal, though nothing is filler.

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 described, and the consent/confirm requirements are well covered. For a destructive, consent-gated mutation the description supplies enough context 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 description coverage is 100%, so baseline is 3. The description adds workflow meaning on top of the schema, particularly the confirm:true precondition and the differing effects of 'approve' vs 'decline', which the enum alone does not convey.

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 pair (approve/decline) plus resource (one follow request) and cardinality, so an agent can separate it from list_follow_requests at a glance. The 'Channels:' title prefix also scopes it correctly.

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 explicit constraints ('ONLY with their own answer', 'only with confirm: true'), prescribes the ask-first workflow with a sample prompt, and lays out the 'friends' policy branching (draft/send/off). This is a rare, near-complete when-to-use and how-to-use spec.

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

apply_refinementApply a refinement (owner key)AInspect

Apply a refinement directly as one logged revision (append evidence pointers, nudge confidence). Authorized by OAuth (own model) or an editToken. Prefer propose_refinement unless the owner asked for direct writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
modelIdNo
editTokenNoThe model's edit key, if not connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes
urlsYes
appliedYes
updatedAtYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare this is a non-read, non-idempotent, non-destructive write; the description adds real value beyond them by disclosing the authorization requirement (OAuth or editToken) and the semantics of the write (appends evidence pointers, nudges confidence, one logged revision). It stops short of describing reversibility or rate/limit behavior, keeping it out of the top band.

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?

Two tight sentences, front-loaded with the core action, followed immediately by the routing rule and auth note. No filler or restatement of the title.

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 auth, effect, and the sibling alternative. What remains thin is the per-item payload semantics (why up to 50 items, how evidence maps to a revision), which the description leaves to the schema.

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 only 33%, so the schema does not carry the burden alone. The description explains editToken via the auth sentence and implicitly covers 'direction' through 'nudge confidence', but patternId, source, and observedAt semantics come entirely from the schema, and the description adds no syntax or constraints for them.

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 ('Apply a refinement') plus the concrete effect ('one logged revision ... append evidence pointers, nudge confidence'), so the agent knows exactly what happens. The modifier 'directly' distinguishes it from the propose sibling without needing to open either schema.

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?

Explicitly routes the agent: 'Prefer propose_refinement unless the owner asked for direct writes.' Names the alternative and the condition that selects this tool instead, and adds the auth path (OAuth own model or editToken) needed to actually invoke it.

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

block_personRelay: block someoneA
DestructiveIdempotent
Inspect

Block the other person in a conversation, when the person asks or clearly wants it. Ends the friendship and closes the conversation; the other side is not told. Can't be undone from here: ask the person, then call with confirm: true. (To report danger instead, use flag_conversation — always allowed.)

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNotrue once the person confirmed they want to block. Example: true
conversationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=false, but the description adds substantial context: it ends the friendship, closes the conversation, the other side is not told, cannot be undone from here, and requires confirmation. This is richer than the structured hints.

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 written sentences front-load the action and condition, then side effects, then prerequisite and alternative. No sentence is redundant or meandering.

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 dangerous side effects, irreversibility, notification behavior, confirmation requirement, and alternative tool. The only gap is conversationId discovery/format, which is minor but leaves one parameter underspecified.

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 50%: confirm has a schema description, but conversationId has none. The description reinforces the confirm workflow ('ask the person, then call with confirm: true') and implies conversationId scopes the block, but it does not document conversationId's format, source, or semantics, leaving half the parameters underspecified.

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 (block) and resource (the other person in a conversation), and distinguishes itself from sibling flag_conversation by naming that alternative. The purpose is immediately clear and not tautological.

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?

Explicitly gives when to use it ('when the person asks or clearly wants it') and names the alternative for danger ('use flag_conversation — always allowed'). It also supplies the required confirmation sequence ('ask the person, then call with confirm: true').

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

change_sessionSchedule: suggest a move or cancellationA
Idempotent
Inspect

Suggest moving, cancelling or changing the place of one session of a group the person leads — or putting a cancelled one back on — with the message the group gets (in the person's voice, ≤ 500 characters; it goes into the group chat as theirs). ALWAYS a card in their Stream: the tap makes the change, tells the players, the parents who asked to be told and the carpool — and posts the message, through every check the app has. Pick the session by key (read_schedule) or by sessionDate (+ sessionTitle). Only when they ask.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoThe session's key from read_schedule.
dateNomove: the new date, YYYY-MM-DD (leave out to keep the day).
modeYesmove (a new date and/or time), cancel, place (a new place) or restore (a cancelled one is on again).
groupNoA group the person leads — its name, e.g. "P13" or "8B" (add the förening's name if several share it, e.g. "Löparklubben P13"), or its groupId from list_personas. May be left out when they lead exactly one.
placeNoplace: the new place.
startNomove: the new start, HH:MM, e.g. 18:00 (leave out to keep the time).
messageNoThe message to the group, e.g. "Hej! Träningen på torsdag flyttas till 18:00 — samma plan. /Anna". Leave out to only notify.
sessionDateNoOr the session's current date, YYYY-MM-DD.
sessionTitleNoWith sessionDate, when there are several that day: part of its title.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
whyYes
noteYes
groupYes
changeYes
itemIdYes
statusYes
sessionYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description discloses the actual write mechanism and blast radius: it always produces a card in the person's Stream, the tap is what commits the change, and the notify set includes players, parents who asked to be told, and the carpool, plus the group-chat message. That explains why the operation is non-destructive/idempotent (a cancelled session can be restored) and is genuinely beyond what the structured fields convey.

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, then mechanism, then session-selection, then the usage gate — a sensible order. It is a single dense paragraph with several em-dash asides and the vague phrase 'through every check the app has', so it is readable but not maximally tight.

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 no explanation, and annotations carry the safety profile. The description covers all four modes, target identification, notification side effects and the usage gate, but says nothing about failure/preconditions (what if the person does not lead the group) or how long the Stream card remains actionable.

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 100% schema coverage the baseline is 3, and the description does add real meaning: the message is sent in the person's own voice and appears in the group chat as theirs, and 'Leave out to only notify' clarifies message optionality. However, it states the message is '≤ 500 characters' while the schema allows maxLength 1000, a conflicting limit that could cause an agent to reject valid input.

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+resource immediately: suggest moving/cancelling/changing the place of one session of a group the person leads, or restoring a cancelled one. It is unmistakably distinct from neighbors like add_session (create), message_group (plain messaging) and read_schedule (read), and the title's word 'suggest' is immediately clarified by 'the tap makes the change'.

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 gate ('Only when they ask') and tells the agent how to identify the target session: by `key` from read_schedule, or by `sessionDate` (+ `sessionTitle`). It does not explicitly name the sibling to use instead when the intent is a brand-new session or a pure broadcast, so it stops short of full when/when-not routing.

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

channel_statsChannels: reach in meetupsA
Read-onlyIdempotent
Inspect

How one of the person's channels reaches people — measured in MEETUPS first: how many came to its events in the period (and for the first time), per event and per month, then sign-ups, views, unique people reached, reactions and the trend against the period before. Numbers only, never who. A teen-run or youth channel shows positive totals only. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo"7d" or "28d" (default "28d").
channelNoWhich of the person's channels: its channelId from list_my_channels, its @name or its name, e.g. "Löpsöder" or "@lopsoder". May be left out when they have exactly one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
trendYes
eventsYes
monthsYes
periodYes
windowYes
channelYes
channelIdYes
followersYes
studioUrlYes
measuredInYes
positiveOnlyYes
attendedAllTimeYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely non-obvious behavior: outputs are aggregate numbers only and never identify individuals, and teen-run or youth channels report positive totals only. 'Read only' merely restates the annotation, but the privacy rule and youth-channel quirk are real added value.

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 dense paragraph, front-loaded with 'measured in MEETUPS first' so priority of metrics is clear before the enumeration. It is long and somewhat run-on, but nearly every clause carries substantive information about output content or constraints.

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?

With an output schema present, return values need no explanation, yet the description still sets expectations about metric composition and trend comparison. Annotations handle the safety profile and the description handles scoping, privacy, and edge cases, leaving nothing an agent needs 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%: period enum and channel resolution (channelId, @name, or name, omittable when exactly one channel exists) are fully documented in the schema. The description adds no parameter-level detail such as default period semantics beyond what the schema states, so the baseline 3 applies.

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 names a specific resource (one of the person's channels) and a specific measurement (reach), then enumerates the exact metrics returned: event attendance and first-timers per event and per month, sign-ups, views, unique people, reactions, and period-over-period trend. No sibling tool produces channel aggregate stats, so an agent can confidently select this one.

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 rather than stated: the agent can infer you call this to see how a channel is reaching people over the last 7d/28d. There is no explicit when-to-use/when-not, and no sibling is named as an alternative, although the schema points to list_my_channels for obtaining the channelId.

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

check_shopping_itemsHousehold: tick items off the shopping listA
Idempotent
Inspect

Tick things off the household's shopping list (bought), or untick them with done: false — itemIds from read_shopping_list. Only when the person says they bought them. Consent: the AI setting for groups — 'draft' puts a one-tap card in their Stream, 'send' ticks now, 'off' refuses; a household with someone under 18 is always a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
doneNotrue = bought (default), false = back on the list.
itemIdsYesitemIds from read_shopping_list, e.g. ["3fa9c1b2d4e6"].
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
whyNoWhy it's a draft (said to the person).
doneYes
noteYes
itemsYes
itemIdNoThe Stream card, when it's a draft.
statusYes
changedNo
itemIdsYes
householdYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare non-read-only, idempotent, non-destructive; the description adds far more — the reversible toggle semantics, the source of IDs, and a full consent model with draft vs send vs off and a hard under-18 rule. This is behavioral context the structured fields do not carry.

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 toggle behavior before branching into the consent detail. Dense but every clause (done: false, itemIds source, consent states, under-18 rule) is load-bearing, though the consent sentence is long.

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?

With an output schema handling return values, annotations covering the safety profile, and the description covering invocation conditions, ID sourcing, and consent gating, an agent has everything needed to call this correctly or correctly decline.

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 done, itemIds, and household are already documented in the schema. The description reinforces done: false and itemIds' origin but adds no format or edge-case detail beyond that baseline, and never mentions the optional household parameter.

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 (tick items off the household's shopping list) and explicitly covers the inverse operation via done: false. It also names where itemIds come from (read_shopping_list), so the agent can distinguish it from add_shopping_items and read_shopping_list at a glance.

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 an explicit usage condition — 'Only when the person says they bought them' — and names the sibling that supplies the required itemIds. It also spells out the consent gating (draft/send/off and the under-18 override), which tells the agent exactly when this may proceed.

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

contextYour day in one callA
Read-onlyIdempotent
Inspect

The person's day in ONE call — start every session here. Who they are (name, @handle, their personas = what they can act as, and the places they're in — föreningar, companies, communities — with their role), their week (plans, events, sessions and Händer for 7 days, with what still needs their answer), open threads per sphere (private: friends, family, groups; places: #kanaler and clubs; professional: the pro inbox — not open yet), what waits for their answer (friend and follow requests, family links, asks to join what they run), and the app icon's red number. Threads are COUNTS; the latest line of each comes only if the person granted Messages, and never a line written by someone under 18. Also returns next: the cursor for events, so you can poll what happens after this. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
meYes
nextYes
noteYes
weekYes
badgeYes
threadsYes
requestsYes
canReadMessagesYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description goes well beyond them: Messages-permission gating of preview lines, hard exclusion of content written by under-18s, threads returned as COUNTS only, and the "not open yet" state of the pro inbox. These are genuine behavioral constraints an agent could not infer from 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?

Front-loaded with the one-line pitch before the detail, which is good. However, it then enumerates the entire return surface (identity, week, threads, pending, badge) in a single dense run-on even though a full output schema already exists, so much of that clause stack is duplicative rather than additive.

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 no-parameter aggregator with an output schema, the description covers everything an agent needs: what is included, what is deliberately excluded (under-18 lines, pro inbox), the privacy precondition, and the follow-up cursor for `events`.

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?

Zero parameters, so there is nothing to document and the baseline is 4. The description correctly spends no effort on inputs.

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 aggregate resource (the person's whole day: identity, personas, week, open threads, pending answers, badge count) and explicitly positions itself as the entry point against the list_*/whats_waiting siblings. An agent can tell it apart from `events` because the description says it returns the `next` cursor for that tool.

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?

"Start every session here" is an explicit directive for when to call it, and the `next` cursor note tells the agent to poll `events` for later changes. It stops short of naming when NOT to use it or which sibling supersedes it for a specific slice (e.g., whats_waiting vs this).

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

create_eventEvent as what you run (draft or publish)AInspect

Make an event for something the person runs (its channel's event: sign-ups, the waitlist, reminders — reach is measured in who comes). Free events only, in a public place or a venue (a café, a hall, a field) — never at someone's home. Only when they ask. Like create_post: a DRAFT card "Publish" in their Stream by default; published right away only with "May publish directly" for your app AND a channel no one under 18 can see. Followers are told about a new event once.

ParametersJSON Schema
NameRequiredDescriptionDefault
asNoWhich of what the person runs to act as — a key from list_personas, e.g. "forening:a1b2c3d4e5" or "channel:Xy12Ab34Cd", or its name, e.g. "Löparklubben". May be left out when only one fits.
modeNo"publish" (default) publishes now only if the person turned on "May publish directly" for your app AND no one under 18 can see it — else it's a draft; "draft" always makes a draft they publish with one tap.
textNoA few words about it (≤ 1000 characters).
placeYes
titleYes3–80 characters, e.g. "Höstloppet 5 km".
endsAtNoOptional, same format, within 12 hours of the start.
capacityNoHow many may sign up (default 20).
startsAtYesISO 8601 with the person's UTC offset, at least an hour ahead and within 6 months, e.g. 2026-10-18T10:00:00+02:00.

Output Schema

ParametersJSON Schema
NameRequiredDescription
asYes
urlYes
whyYes
noteYes
itemIdYes
postIdYes
statusYes
undoUntilYes

TDQS

A3.6/5.0
Behavior4/5

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

With annotations covering only safety flags, the description supplies the behavior that matters: a draft card in the Stream by default, immediate publish gated on both an app permission ("May publish directly") and an under-18-visibility condition, plus the side effect that followers are notified once. That is well beyond annotation coverage, though error/rate-limit behavior is still unstated.

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?

It is reasonably short and the purpose clause leads, but the style is oblique — "reach is measured in who comes" and the em-dash clause about "its channel's event" cost parsing effort without adding usable information. The publish-gating sentence, by contrast, earns its length.

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 with nested objects, an output schema and 88% schema coverage, the description covers purpose, eligibility constraints, consent and default draft/publish behavior. The only gap is that it does not tell the agent when to prefer this over the household-event or post siblings.

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 88%, so the schema already explains as, mode, place, title, startsAt, endsAt and capacity in detail. The description mainly restates the mode default and the place restriction rather than adding format or interaction rules the schema lacks, so it sits at the baseline 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?

The description states a concrete verb and resource — create an event for a group/channel the person runs, covering sign-ups, waitlist and reminders — which is more specific than the title. It gestures at a sibling ("Like create_post") but only as an analogy for the draft workflow, not as a disambiguation from the closer sibling add_household_event, so an agent still has to infer which event tool applies.

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 one explicit consent rule ("Only when they ask") and hard eligibility limits (free events only, public place or venue, never a private home), which is real usage guidance. However it never names an alternative tool or an exclusion such as "use add_household_event for household-only events", so the routing between siblings remains inferred.

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

create_friend_codeRelay: make a friend codeAInspect

Make a fresh friend code (replaces the previous one; valid 30 days). The person shares it — as text or as the link at the url — with someone they want to talk to; when that person (or their agent) uses it, the person gets a friend request to approve in the app or the inbox. Only create one when they ask.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
codeYes
expiresInDaysYes

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it discloses that the new code replaces the previous one, that it is valid for 30 days, that it can be shared as text or a URL, and that use of it produces a friend request requiring approval. The annotations only carry safety flags, so this lifecycle detail is genuinely additive.

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 core action and constraints, and every sentence serves a purpose (replacement, validity, sharing, downstream effect, gating). The middle sentence describing the sharing/approval flow is a little long but still 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?

An output schema exists, so return values need not be explained, and the description fully covers the lifecycle: creation, replacement, validity, sharing mechanism, and the resulting friend request. Nothing an agent needs to invoke it correctly 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?

The tool takes zero parameters, so the schema carries no semantics to add. Baseline for a parameterless tool is 4; the description correctly adds no redundant parameter talk.

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 ('Make a fresh friend code') and immediately scopes it with the replacement behavior and 30-day validity. It also implicitly distinguishes the creation side from the redemption side (redeem_friend_code) by describing who creates vs. who uses the code.

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 gating condition — 'Only create one when they ask' — which prevents over-eager invocation, and describes the downstream flow that motivates sharing it. It does not, however, name an alternative tool or spell out when-not-to-use cases beyond the request condition.

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

create_homeStart a förening, community or companyAInspect

Start a home the person will run: a förening (a club — its groups, schedule and parents' groups follow in the app), a community (open or ask-to-join; "adults" or all ages — all-ages ones are reviewed before teens see them) or a company (adults only; a 14-day trial with everything, after which a plan is chosen on the web — you can never buy one). Only when they ask, with the name they chose. A förening that may already exist comes back as duplicates — ask the person; call again with force: true only if it's really a new one.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNocommunity: adults (default) or all ages.
cityNoExample: "Malmö"
joinNocommunity / company: open, ask (an admin answers — a community's default) or invite (a company's default).
kindYes
nameYesExample: "Limhamns Löparklubb"
forceNoförening: true after the person said the duplicates aren't theirs.
orgNoNoförening: its org number if it has one (10 digits).
sportNoförening: what it does, e.g. "Löpning".
listedNocommunity / company: shown in Utforska (a community's default) or not.
descriptionNocommunity / company: a sentence or two about it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
homeYes
kindYes
nameYes
noteYes
statusYes
duplicatesYes
conversationIdYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=false), the description discloses rich behavioral traits: förening groups/schedule/parents' groups follow, community visibility and age-review rules, company 14-day trial with later web-only plan choice, and duplicate handling via force. This is exactly the extra context an agent needs for a complex 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 long but front-loaded with the core action, then organized by kind and exception. Every clause carries operational meaning, though the density and parentheticals make it slightly heavy.

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?

Given the tool's complexity, the rich schema, the output schema, and the annotations, the description is complete for correct invocation. It covers all three creation paths, special review rules, trial behavior, and duplicate resolution without needing to explain return values.

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 90%, so the schema already documents most parameters. The description still adds meaningful semantics beyond the schema, such as kind-specific behavior, age/join defaults, the duplicate-force workflow, and the company trial constraint.

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: "Start a home the person will run," then enumerates the three kinds (förening, community, company). It clearly distinguishes this creation tool from siblings like list_homes or update_home, which manage existing homes.

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 gives a clear usage condition: "Only when they ask, with the name they chose," and a conditional exception for force when duplicates are not the person's. It does not explicitly name sibling alternatives, but no sibling create tool exists, so the practical guidance is strong.

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

create_planPlans: gather the gang (Samla gänget)AInspect

Gather the gang ("Samla gänget"): propose a meetup with 1–9 time+place options to ONE of the person's gangs, or to friends by name/@handle. People vote, "most can" decides the evening before, and the result comes with a share link friends without an account can answer by. Only with the person's go-ahead on what, when and where. Consent: gang plans follow the person's 'groups' policy, friend plans the 'friends' policy — 'draft' puts a card in their Stream for them to tap (nothing is sent), 'send' creates it now, 'off' refuses. Names must be the person's real friends/gangs — never invent people. Prefer public places; for 13–15 daytime.

ParametersJSON Schema
NameRequiredDescriptionDefault
gangNoA gang the person is in (name). Use this OR friends.
titleYesWhat you're doing, short: "Bio", "Fika på Espresso House", "Padel".
friendsNoFriends by name or @handle.
optionsYes1–9 time+place options.
activityNoOne or two words, e.g. film, fika, walk.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
whoYes
noteYes
itemIdNo
planIdNo
statusYes
optionsYes
shareUrlNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover only the safety profile (write, non-destructive, non-idempotent), and the description adds substantial context beyond them: the voting mechanic, 'most can' resolution the evening before, a share link for account-less friends, and the draft/send/off consent behavior. It also discloses guardrails (never invent people, prefer public places, daytime for 13–15).

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?

Purpose and mechanism are front-loaded, and every sentence carries load (voting, share link, consent modes, safety rules). It is a dense single block that is longer than ideal, but nothing 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?

With an output schema present, the description need not explain return values, and it covers what an agent needs to call this correctly: the recipients, the option structure, the consent gate, and the naming/safety constraints. Nothing essential 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 100%, so the baseline is 3, but the description adds meaning: the 1–9 option count, the gang-OR-friends exclusivity, and the hard rule that names must be the person's real friends/gangs. These constraints go beyond the schema 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?

The description gives a specific verb+resource (propose a meetup, create a 'plan') and scopes it precisely: 1–9 time+place options to ONE gang or to friends by name/@handle. The voting/'most can' flow and share link make it clearly distinguishable from siblings like create_event or add_household_event without opening any schema.

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 supplies strong when-to-use context through the consent model — 'draft' cards to Stream, 'send' creates it now, 'off' refuses — and the 'only with the person's go-ahead' precondition. It does not name explicit alternatives (e.g. create_event for one-off, non-voted events), so it stops short of a full when/when-not/alternatives treatment.

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

create_postPost as what you run (draft or publish)AInspect

Write a post for something the person runs (a förening's, a company's, a community's, a creator or topic channel) — words, words with photos or a clip (media: ids from upload_media), a poll, or a challenge (a quiz question with the right answer; good for a quick förhör). Pick WHO it's from with as and WHO sees it with audience (everyone · followers · members = the home's Nyheter · team · subscribers — only what that channel offers the person; list_identities shows them). Only when they ask; write in their voice and the channel's language, never invent people, numbers or quotes. By default it's a DRAFT card in their Stream: "Publish" (or "Schedule") does it with one tap, through the channel's own moderation. It's published right away only if they turned on "May publish directly" for your app AND nobody under 18 can see the channel (youth and all-ages channels, a class's: always a draft). Either way it's labelled AI-made; a direct publish can be taken back for 24 h; photos are checked before anyone else sees them.

ParametersJSON Schema
NameRequiredDescriptionDefault
asNoWhich of what the person runs to act as — a key from list_personas, e.g. "forening:a1b2c3d4e5" or "channel:Xy12Ab34Cd", or its name, e.g. "Löparklubben". May be left out when only one fits.
kindNotext (default), poll, or challenge (a question with one right answer).
modeNo"publish" (default) publishes now only if the person turned on "May publish directly" for your app AND no one under 18 can see it — else it's a draft; "draft" always makes a draft they publish with one tap.
textYesThe post's words (≤ 1000 characters; with a poll or a challenge: an optional line above it), e.g. "Träningen i helgen flyttas till Ribersborg — samma tid."
mediaNoPhotos/clips from upload_media (1–10; 2+ make a carousel), with kind text — the words become the caption. Example: [{"mediaId": "Ab12Cd34Ef56Gh78", "alt": "Laget efter matchen"}]
titleNoA short name for the draft card (not part of the post), e.g. "Helgens träning".
correctNochallenge: the right option, 0-based, e.g. 0.
optionsNopoll / challenge: 2–4 different options, e.g. ["1252", "1350", "1523"].
audienceNoWho should see it: everyone, followers, members (the home's Nyheter — its members only), team, or subscribers. Leave out for the channel's usual. Example: "members"
questionNopoll / challenge: the question, ≤ 120 characters, e.g. "Vilket år grundades Stockholm?"
publishAtNoWhen it should go out, 5 minutes to 30 days ahead, ISO 8601 with the person's UTC offset, e.g. 2026-10-09T08:00:00+02:00. Leave out for now.

Output Schema

ParametersJSON Schema
NameRequiredDescription
asYes
urlYes
whyYes
noteYes
itemIdYes
postIdYes
statusYes
undoUntilYes

TDQS

A4.6/5.0
Behavior5/5

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

Far exceeds the annotations (readOnly=false, destructive=false): it discloses the draft-by-default card, the two conditions required for immediate publishing, youth/all-ages always-draft rule, AI-made labelling, 24 h retraction window, and pre-publication photo checks. These are exactly the side effects an agent must know before writing.

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 purpose and the draft/publish consequence despite being a dense, parenthetical-heavy paragraph. Some content (publish-mode behavior) is duplicated between the description and the `mode` parameter, but almost every clause carries actionable constraints.

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 an 11-parameter, multi-variant tool with an output schema already available, the description covers authoring voice, audience scoping, moderation, scheduling and reversibility. Nothing an agent needs to call this correctly appears to be 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 already 100%, so the baseline is 3, but the description adds real meaning: media ids come from upload_media, `as` is a key from list_personas/list_identities, `audience` maps to concrete channel scopes, publishAt window is 5 min–30 days, and challenge's `correct` is the right option. Only minor gaps (no explicit poll vs challenge option-count guidance beyond schema enums).

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 concrete verb+resource ("Write a post for something the person runs") and enumerates the post shapes it supports (text, media, poll, challenge) plus the persona/audience axes. An agent can distinguish it from edit_post, schedule_post and create_post_draft by the 'as/audience' framing, though the draft-default behavior does slightly overlap with create_post_draft.

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?

"Only when they ask" is an explicit usage constraint, and the description spells out the draft-vs-publish decision path and audience/identity prerequisites. It does not, however, name sibling alternatives such as create_post_draft or schedule_post, so the routing decision between near-identical tools is left to inference.

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

create_post_draftChannels: write a post draftA
Idempotent
Inspect

Write a post DRAFT for one of the person's channels — words only (up to 1000 characters) and an optional short name for the draft. Nothing is published and nobody is reached: the draft lands as a card in the person's Stream (Hem) and opens Studio's composer, where they add photos, check it and publish or schedule it themselves. Use it when the person asks you to draft a post; write in their voice and the channel's language, never invent people, numbers or quotes. An image can't be added from a link: pass imageUrl and it's handed back for the person to add in the app (nothing fetches it). Then schedule_post can note when they want it out.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe post's words, as they should appear (max 1000 characters), e.g. "Lördagens löprunda: vi ses vid Ribersborg 09:00, alla tempon välkomna."
titleNoA short name for the draft on the card (not part of the post), e.g. "Lördagsrundan".
channelNoWhich of the person's channels: its channelId from list_my_channels, its @name or its name, e.g. "Löpsöder" or "@lopsoder". May be left out when they have exactly one.
imageUrlNoAn https link to an image the person wants with it, e.g. https://example.com/run.jpg — handed back for them to add in the app; never fetched.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
textYes
titleYes
statusYes
channelYes
draftIdYes
imageUrlYes
channelIdYes
studioUrlYes
alreadyWaitingYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: nothing is published, nobody is reached, the draft becomes a card in the person's Stream and opens Studio's composer, and imageUrl is handed back rather than fetched. This is exactly the side-effect detail an agent needs for a write tool whose annotations only say non-destructive/non-read-only.

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 core action and consequence, and most sentences carry real constraints. It is dense but slightly repetitive — the 1000-character cap and the 'handed back, never fetched' imageUrl behavior are each stated in both the description and the schema.

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?

With an output schema present, return values need not be explained, and the description covers side effects, constraints, voice guidance, and the schedule_post hand-off. Nothing material for correct invocation is 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 text/title/channel/imageUrl, including the 1000-character limit, the optional title, and channel-by-id/@name/name fallback. The description restates the character cap and imageUrl behavior rather than adding format or edge-case detail beyond the schema, so the baseline 3 is appropriate.

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+resource (write a post draft) and its scope precisely — words plus optional title, for one of the person's channels. It cleanly separates itself from siblings like create_post (immediate publishing) and schedule_post by stating nothing is published and the draft lands in the Stream/Studio composer.

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?

"Use it when the person asks you to draft a post" gives an explicit trigger, and it names schedule_post as the follow-up for timing. It also sets voice/accuracy constraints (write in their voice, never invent people, numbers or quotes). It stops short of explicitly routing the agent away from create_post for immediate publishing, so 4 rather than 5.

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

create_quiz_show_draftQuiz: draft a quiz night (host reviews)AInspect

Draft a live quiz night for a group, household chat or channel the person hosts (a channel's owner, a group's admin) — only when they ask. It is saved as a DRAFT nobody else sees: nothing is scheduled, announced or played until the person opens it in the app (a card in their Stream, or reviewUrl), checks every question — the AI can be wrong — picks the time and schedules it. 1–30 questions of kinds multiple_choice, drop_pin, journey (five clues), closest_wins, true_or_false, right_order, timeline, who_am_i, lightning, category (a board's squares) and emoji_riddle — mix them; picture rounds and the sound question are made in the app. Every question is worth at most 1000 points. Free to play: a channel's quiz may be for everyone, followers or — a subscription perk the channel turned on — subscribers; never a price of its own, never prizes. Adults and teens never play the same show (except a subscribers' show on an all-ages channel, where a teen whose parent pays may play); a teens' group's or channel's words are screened. Consent: refused if the person's AI setting for groups is 'off'; otherwise always a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly needed with an id that list_quiz_shows doesn't list, e.g. "group".
titleYesThe quiz night's title, ≤ 80 characters, e.g. "Friday quiz: Sweden".
whereYesThe group, household chat or channel — its name or id from list_quiz_shows (canHostIn), e.g. "Familjen" or "g_8f3k2l1m".
accessNoA channel's quiz: who may play — everyone (default), followers, or subscribers (only when the channel's subscription has quiz nights as a perk). A group's is always its members'.
hostingNoautopilot (default) runs the questions on time; host = the person presses Next from their phone.
startsAtNoSuggested start, ISO 8601 with offset, e.g. 2026-10-09T20:00:00+02:00 — the person can change it before scheduling. Default: tomorrow 20:00 their time.
questionsYes1–30 questions, in order.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
teensYes
titleYes
whereYes
accessYes
itemIdYes
showIdYes
statusYes
startsAtYes
questionsYes
reviewUrlYes
startsTextYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only carry the generic safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false); the description adds substantial non-obvious behavior: the object stays an unannounced draft the host must open in the app, the AI can be wrong so every question must be checked, consent gating on the AI setting, audience rules preventing adults and teens sharing a show, and content screening for teens' groups. This is real context the agent could not 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.

Conciseness3/5

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

The vital information (draft-only, host review, consent gate) is front-loaded in the first sentence, which is good, but the remainder is a dense em-dash run-on packing questions, scoring, access tiers and audience rules into two oversized sentences with no structure. Some length is justified for an 11-kind nested question schema, yet the prose could be broken into scannable clauses.

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 complex 7-parameter tool with nested question objects, an output schema covering return values, and full schema descriptions, the description supplies the domain rules an agent needs — draft semantics, consent, access levels, audience separation, point cap, and the in-app-only question kinds. Nothing material to calling it correctly is left out.

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 still adds constraints not in the schema: 1–30 questions, the 1000-point cap per question, and the fact that picture rounds and the sound question can only be made in the app rather than supplied here. The kind list largely echoes the enum, which caps this below 5.

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 first sentence states a specific verb and resource — drafting a live quiz night — plus the exact scope (a group, household chat or channel the person hosts) and the precondition that it is host-initiated. It also disambiguates from a hypothetical scheduling/announcing action by stating the result is a DRAFT nobody else sees, so no sibling tool can be confused with 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?

It gives an explicit trigger ('only when they ask') and an explicit refusal condition ('refused if the person's AI setting for groups is off'), plus the constraint that nothing is scheduled until the host reviews and schedules in the app. What is missing is a named alternative sibling (e.g. list_quiz_shows for resolving 'where', or the app for picture/sound rounds) to route an agent that cannot use this tool.

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

delete_postDelete a postA
DestructiveIdempotent
Inspect

Delete a post on a channel the person runs or edits (an event is cancelled for those who signed up, and they're told). Can't be undone: ask the person, then call with confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesFrom list_posts.
confirmNotrue once the person confirmed. Example: true

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
postIdYes
statusYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds value beyond them: the cascade effect ('an event is cancelled for those who signed up, and they're told'), irreversibility, and the enforced confirmation workflow. This is exactly the side-effect disclosure an agent needs before a destructive call.

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?

Two tight sentences: the cascade/irreversibility risk and the required confirmation are both front-loaded in parentheses and after the colon respectively, with zero 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?

With an output schema, full parameter coverage, and annotations covering the safety profile, the description supplies the remaining needed context: authorization scope, cascade behavior, and the mandatory confirmation protocol. Nothing required to call it correctly 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 100%, so both parameters are already documented, which sets the baseline at 3. The description adds meaning to confirm by tying it to the human-confirmation step ('ask the person, then call with confirm: true'), clarifying it is a consent gate rather than a mere flag.

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 ('Delete a post') plus the scope constraint (a channel the person runs or edits), so an agent can distinguish it from edit_post or create_post without inspecting schemas.

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 gives a concrete procedural rule for invocation ('ask the person, then call with confirm: true') and constrains usage to posts the person owns or edits. It never names a sibling alternative (e.g., edit_post) for the case where deletion is not intended, so it stops short of full when/when-not guidance.

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

edit_postEdit a post's words (draft or direct)AInspect

Change a post's WORDS (not its photos, time or label — those are the app's) on a channel the person runs or edits — e.g. a typo, a new time in the text. Only when they ask. Like create_post: a card "Save" in their Stream by default; done directly only with "May publish directly" for your app AND a channel no one under 18 can see. The words are moderated again; the post gets the AI label (edited) unless it has one.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"publish" (default) edits now when allowed, else a card; "draft" always a card.
textYesThe post's new words (≤ 1000 characters).
postIdYesFrom list_posts. Example: "Ab12Cd34Ef56Gh78"

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
whyYes
noteYes
itemIdYes
postIdYes
statusYes

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that words are re-moderated, that the post receives an AI '(edited)' label unless already labeled, and the exact conditions required for direct publishing. Annotations only flag non-read-only/non-destructive; the description adds substantive operational context.

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?

Information-dense and front-loaded, with the core action and scope stated first. Sentences are somewhat run-on, but nearly every clause conveys actionable detail.

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?

With an output schema present, return values need not be explained. The description covers authorization, moderation, labeling side-effects, and mode behavior, leaving no significant gap for an agent 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 coverage is 100%, so parameters are already fully documented. The description's mode-related language largely restates the schema's own mode description rather than adding syntax or format detail, so the baseline 3 is appropriate.

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 (change a post's words) and immediately delineates scope by excluding photos, time, and label as the app's domain. It is easily distinguishable from siblings like upload_media or delete_post.

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 conditional guidance: 'Only when they ask,' and explains the default card-Save path versus direct publishing with an explicit prerequisite gate. It references create_post as a behavioral twin but doesn't contrast against adjacent siblings like schedule_post for future-dated changes.

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

eventsWhat happened since (event stream)A
Read-onlyIdempotent
Inspect

What happened for the person since a cursor — the companion's event stream, newest last. Each event: id, time, sphere (private · professional · places), kind (message · mention · request · join_request · event_signup · plan_answer), a short line, the ids to read on with (conversationId, messageId, planId, eventId, spaceId …) and a link. No words of a message unless the person granted Messages — then preview is the message's latest line, read now (never someone under 18's). Pass since = the next you got last time (from events or context); without it you get the newest ones. At most 200 a call; more = call again with next. Events are kept 7 days. The same events reach the person's webhook if they set one. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNoOnly these kinds. Example: ["join_request", "event_signup"]
limitNoHow many, 1–200 (default 50). Example: 100
sinceNoThe `next` cursor from your last events or context call. Omit to get the newest.
sphereNoOnly one sphere. Example: "places"

Output Schema

ParametersJSON Schema
NameRequiredDescription
moreYes
nextYes
noteYes
eventsYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful traits beyond them: 7-day retention, 200-event cap with `more`/`next` paging, messages-preview gating on the person's Messages grant, an explicit minor (under-18) exclusion, and webhook duplication. This is unusually rich disclosure of constraints an agent must plan around.

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, then constraints, then pagination — a sensible order. It is a single dense block and slightly overstuffed (the webhook note is tangential), but every sentence carries functional information an agent needs.

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?

With an output schema present the description need not explain return shape, yet it still names the key fields and adds the operational envelope — retention window, page size, cursor loop, privacy gating. For a zero-required-parameter polling tool, nothing needed to call it correctly 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 description coverage is 100%, so the baseline is 3, but the description adds the cross-parameter contract the schema cannot express — that `since` must be the previously returned `next`, and how `next`/`more` drive the next call. It does not add per-parameter detail for `kinds`, `limit`, or `sphere` beyond 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 concrete resource — the person's event stream — and enumerates the event payload (id, time, sphere, kind, line, ids, link), so an agent knows exactly what comes back. It references the sibling `context` as a companion cursor source but never explicitly says why an agent would pick `events` over `whats_new`/`read_unread`, so sibling differentiation is only partial.

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 mechanics are spelled out: pass `since` with the `next` from a prior call to advance, omit it to get the newest, and re-call with `next` while `more` is set. That gives a clear operating context, but there is no explicit when-to-use/when-not statement versus the many adjacent list/stream tools in the sibling set.

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

event_signup_statusEvents: who's signed upA
Read-onlyIdempotent
Inspect

Who's coming to a channel event. For an event the person hosts (or co-hosts): how many are going, on the waitlist and checked in, with the names exactly as Studio shows them to the host. For an event they can see: their own status (going / waitlist / none) and the public numbers (going, spots left, waitlist). Channel events have no 'maybe' — for plans and meetups use get_plan. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIdYesThe event's id (eventId) — from list_upcoming (kind event or hosting) or a channel event link …/channel/<id>?post=<eventId>.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
roleYes
goingYes
placeYes
titleYes
countsYes
eventIdYes
myStatusYes
startsAtYes
waitlistYes
whenTextYes
eventStatusYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower, and the description adds real value: output varies by role (host sees counts and attendee names, viewers see only their own status and public numbers). That is behavioral detail annotations cannot express. It does not cover auth requirements or data-freshness, so 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.

Conciseness4/5

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

Three sentences, front-loaded with the core answer, then role-specific detail, then the disambiguation rule. Dense but every sentence carries distinct information. The middle sentence is long but not redundant.

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 single-param read tool with full annotations and an output schema, this is complete: it explains both output modes, the absence of a 'maybe' state, and where to go for plans/meetups. An agent has everything needed 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?

There is a single parameter with 100% schema coverage, and the description adds nothing about eventId beyond what the schema (which explains the id source) already provides. Baseline 3 is appropriate; the schema does the heavy lifting.

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 opens with a concrete verb+resource ("Who's coming to a channel event") and then splits the answer by the requester's relationship to the event (host/co-host vs. viewer). It is clearly the signup/attendance status tool and cannot be confused with creation or listing siblings like create_event or list_upcoming.

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 explicitly steers the agent away from non-event cases: "Channel events have no 'maybe' — for plans and meetups use get_plan." That is a clear alternative and condition. It does not, however, differentiate from the sibling who_is_coming, which sounds like an adjacent attendee-listing tool, leaving one obvious ambiguity unaddressed.

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

fetchOpen one search resultA
Read-onlyIdempotent
Inspect

Open one result from search by its id: the conversation's messages, the plan in full, the hunch, or the member's whole profile. The same rules as the tools behind it: reading a conversation marks it read and shows in that chat's Min AI; opening a profile shows its owner that your person's agent looked — tell your person first, then fetch the id with #told on the end.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAn id from search, e.g. conv:… · plan:… · hunch:… · profile:<handle>.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
textYes
titleYes
metadataNo

TDQS

A3.8/5.0
Behavior4/5

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

Discloses non-obvious side effects the annotations can't express: reading a conversation marks it read and surfaces in that chat's Min AI, and opening a profile reveals to its owner that the agent looked. That is exactly the context an agent needs before calling. There is mild tension with readOnlyHint=true, since marking read/notifying is a state change, but the description frames the operation as a read and the disclosure is helpful rather than contradictory.

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 sentences, front-loaded with the core action, and every clause carries information (targets, side effects, protocol). The second sentence is dense and packs several distinct ideas, but nothing is filler.

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 needn't be described, and annotations cover the safety profile; the description still supplies the side-effect and social-visibility context plus the sensitive-case protocol. Only the explicit relationship to sibling read tools is left implicit.

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 a formatting requirement not present in the schema: appending '#told' for the profile case. That is real semantic value beyond the documented id patterns (conv:…, plan:…, hunch:…, profile:<handle>).

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 ('Open one result from search by its id') and enumerates exactly what the id can resolve to: conversation messages, full plan, hunch, or whole profile. It doesn't explicitly contrast itself with the underlying siblings (read_conversation, read_profile, get_plan), so an agent still infers the relationship rather than being told it.

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?

Adds a genuine conditional protocol for the sensitive case ('tell your person first, then fetch the id with #told on the end') and notes the tool mirrors the rules of the tools behind it. It never says when to use fetch instead of read_conversation/read_profile directly, so the selection guidance 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.

find_circlesCircles: find open invitationsA
Read-onlyIdempotent
Inspect

Find open circles — public invitations like "running group · Risen, Genarp · Tuesdays 18:30" or "board games · Majorna · first Friday monthly". A circle starts (becomes a group chat) when enough people join. Search by place and/or activity. Shows how many joined, never who. Use this before find_people when the person wants to DO something with others.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNo
nearNoTown, district, municipality or region, e.g. Genarp, Majorna, Skåne. Leave out to search around where the person lives.
activityNoe.g. running, board games, book circle.
radius_kmNoWithout `near`: how far from the person, 5/10/25/50 km (default: their own setting, 25).

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
circlesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: how a circle converts into a group chat when enough people join, and the privacy rule 'shows how many joined, never who.' It does not cover pagination or result limits, but that is minor against the annotation coverage.

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 what a circle is, then usage, then routing, in a compact block. The two inline examples consume space but earn it by making the abstract concept ('open circle') concrete; slightly dense, but no filler sentences.

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 structure is not the description's burden, yet it still volunteers the socially important 'how many joined, never who' detail. For a zero-required-parameter, read-only discovery tool with four documented params, this is nearly complete; only edge cases like empty results or radius behavior are unaddressed.

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 75% with self-documenting descriptions on near, activity and radius_km, plus an enum on lang. 'Search by place and/or activity' restates the schema rather than clarifying formats, defaults, or how radius_km interacts with the person's stored setting. Baseline 3 is appropriate when the schema carries most of the load.

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 concrete verb and resource ('Find open circles — public invitations') and grounds it with two realistic examples showing the shape of a result. It explicitly distinguishes itself from the sibling find_people, so an agent can pick between them without opening either schema.

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?

Names the alternative tool and the condition that selects this one: 'Use this before find_people when the person wants to DO something with others.' That is decision-relevant routing, though there is no explicit when-not case (e.g. when the person wants one-on-one connection, use find_people) beyond the implied contrast.

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

find_complementary_thinkersFind complementary thinkersA
Read-onlyIdempotent
Inspect

Which famous thinkers would COMPLETE this person — opposite poles on the axes where opposites unstick each other (not similarity). Open read; great for curiosity and for explaining what a complementary collaborator looks like. Share the pages as links.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelIdNoModel id. Omit when connected via OAuth to use the person's own model.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
modelIdYes
complementsYes
humanVersionYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'Open read' is redundant. The one genuinely additive behavioral detail is 'Share the pages as links,' indicating the return is shareable link pages. With annotations carrying the safety profile, this is a modest contribution.

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 definition before the usage aside. The ALL-CAPS emphasis and em-dashes are slightly noisy but the content density is high and waste-free.

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 cover the safety profile, so the description need not explain returns. It adequately conveys the tool's distinctive output (complementary famous thinkers as link pages), leaving only alternative-routing guidance unaddressed.

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 modelId is fully documented there, including the OAuth omission rule. The description adds nothing about the parameter, 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?

States a specific verb-and-resource with a defining scope clause: finds famous thinkers who COMPLETE the person, explicitly 'not similarity.' That distinction separates it conceptually from proximity tools like find_matches and find_people, though it never names a sibling directly.

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?

'Open read; great for curiosity and for explaining what a complementary collaborator looks like' implies exploratory usage but gives no explicit when-to-use vs alternatives (e.g., find_matches for similar people) and no when-not conditions. Usage is inferable, not stated.

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

find_matchesFind complementary people (queued)AInspect

Look for complementary PEOPLE for the connected person (rule: agents propose, humans accept — this creates pending proposals the human decides on in their Hunchful hub; identities are never revealed here). Requires OAuth as the owner or the model's editToken, and the person must have joined introductions on their matches page.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelIdNo
directionNoseek = they want a fresh angle; offer = they can offer one. Default seek.
editTokenNoThe model's edit key, if not connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
proposalsYes
matchesUrlYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations (which only say non-readOnly, non-destructive, non-idempotent) by disclosing that the call creates pending proposals requiring human acceptance, that identities are never revealed, and exactly what credentials are needed. That is the side-effect and privacy context an agent needs before invoking.

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?

One dense but well front-loaded sentence opens with the verb and resource; the parenthetical rule and credential clause are load-bearing rather than filler. Slightly packed, but nothing is wasted.

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 auth, side effects, and the join prerequisite. Minor gap: no stated outcome for the no-match case or how pending proposals are surfaced, but the core is 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 67%, and the enum meaning for direction is already documented in the schema. The description only reinforces editToken's role as an alternative credential, leaving modelId and direction semantics 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?

States a specific verb and resource -- find complementary PEOPLE for the connected person -- and adds the distinct mechanism (queued pending proposals). It clearly differs in kind from generic find_people, but never names the very similar sibling find_complementary_thinkers, so the agent must infer the distinction.

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 the governing rule (agents propose, humans accept in the hub) and prerequisites: OAuth as owner or the model's editToken, and the target person must have joined introductions. It does not explicitly say when to prefer this over find_complementary_thinkers or find_circles.

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

find_peopleRelay: find people to talk toA
Read-only
Inspect

Find people to talk to — for someone who'd like new company, a collaborator, or a friend. Searches people who listed themselves, by collaboration style from the person's Hunchful model (mode 'complement' = works differently in ways that help, 'similar' = alike), shared interests, and place. Returns ALIASES and only what each person chose to show, plus an inspectable 'why' — never names or identities. To make contact, use knock with a result's ref, and only with the person's approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
modeNoDefault 'complement'.
textNoFree-text match in intros, interests, merits and views people chose to show.
limitNo1–20, default 8.
openToNoWhat they're open to.
regionNo
interestsNoMatch anyone sharing at least one.
languagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
noteYes
resultsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only/non-destructive, and the description adds genuinely new behavioral context: results are alias-only with 'never names or identities', each result carries an inspectable 'why', and contact requires the person's approval via knock. That consent model and privacy guarantee are not derivable from annotations or the input 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?

Purpose is front-loaded in the first clause, and the paragraph is dense but nearly every clause adds information (matching dimensions, return privacy, contact path). The em-dashed parentheticals and single run-on structure make it slightly heavier than needed.

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 explanation is optional, yet the description still clarifies the alias-only/'why' nature of results, which matters for agent interpretation. The one real gap for an 8-parameter tool is sibling disambiguation among the many find_* / search_* peers.

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 moderate (63%), and the description compensates where it matters most: it defines mode semantics ('complement' = works differently in ways that help, 'similar' = alike) that the schema leaves as ambiguous as 'Default complement'. It also covers the interests/place matching dimensions, though openTo, languages and limit are 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?

States a specific verb+resource (find people) and narrows it sharply: 'people who listed themselves', matched by collaboration style, interests and place. It does not, however, name or distinguish itself from the many adjacent search siblings (find_matches, find_complementary_thinkers, search_profiles), so an agent must infer which search tool applies.

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 use-case framing (new company, collaborator, friend) and an explicit next-step route: 'To make contact, use knock with a result's ref, and only with the person's approval.' No explicit when-not-to-use or sibling exclusion is stated, so the agent isn't told when find_matches would be the better call.

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

flag_conversationRelay: flag for human reviewAInspect

Flag a conversation for HUMAN review and pause your own sending in it. Use for: threats, sexual content involving a possible minor, grooming, extortion, scams/money requests, self-harm risk, pressure to go off-platform to avoid oversight, repeated contact after a no. Do NOT use for disagreement, awkwardness, bluntness, one rude message, loneliness or someone being different. After flagging: tell your person plainly; don't confront the other side or tell them.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesOne or two factual sentences: what happened.
categoryYes
messageIdsNoIds of the messages that matter, from read_conversation.
conversationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes
reviewIdYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare the safety profile (not read-only, not destructive, not idempotent). The description adds real behavioral context beyond that: flagging pauses the agent's own sending, it routes to a human, and the agent should disclose to its own principal while not confronting the other party. It does not cover reversibility, escalation timing, or auth expectations, so it stops short of 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.

Conciseness5/5

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

Purpose and side effect are front-loaded in the first sentence, then conditional use, then post-action behavior. The long lists are not padding — each item is a routing decision — and every sentence 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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description covers when to invoke, the pausing side effect, and follow-up conduct. It is slightly silent on what the human review process does next or whether the other party is affected, which keeps it from a 5.

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 50%: reason and messageIds carry inline descriptions while conversationId does not. The description's category-like list loosely maps to the enum values, but it never states how the listed scenarios correspond to a specific parameter. With half the schema documented, this is the baseline 3 — useful framing without compensating for the gap.

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 (flag) plus resource (a conversation) plus the key consequence (human review, pausing own sending). It is clearly distinguishable from adjacent siblings such as block_person, moderate_comment, or read_conversation without opening any schema.

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 an explicit, itemized when-to-use list (threats, sexual content involving a minor, grooming, extortion, scams, self-harm, off-platform pressure, repeated contact after a no) and an explicit when-NOT-to-use list (disagreement, awkwardness, bluntness, one rude message, loneliness, difference). It also tells the agent what to do immediately after flagging. Alternative tools are not named, but the inclusion/exclusion criteria are precise enough to route correctly.

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

get_planPlans: read one meetupB
Read-onlyIdempotent
Inspect

One meetup in full: the options with their "most can" score (coming = 1, maybe = ½), the leader, what's decided, who answered (FIRST NAMES only, including friends who answered by link without an account), when voting closes (20:00 the evening before), and the share link hunchful.io/t/… that anyone can answer by.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
titleYes
youthYes
leaderYes
myRsvpYes
planIdYes
statusYes
answersYes
decidedYes
mostCanYes
myVotesYes
optionsYes
activityYes
closesAtYes
shareUrlYes
isCreatorYes
organiserYes
manualPickYes
notAnsweredYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds valuable domain-specific context: the 'most can' score formula (coming=1, maybe=½), that only first names are shown, that friends who answered by link without an account are included, and that voting closes at 20:00 the evening before. It does not discuss error handling or permissions, but it meaningfully enriches behavioral understanding beyond 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?

The description is a single front-loaded sentence that clearly states the tool's scope before listing returned details. It is dense but contains no filler, though a run-on list structure reduces readability slightly compared with a more structured presentation.

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 is not strictly required to explain return values, yet it does so thoroughly. However, it omits any parameter explanation and any usage guidance relative to alternatives, which leaves gaps for an agent deciding when and how to call the tool despite the simple one-parameter interface.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It does not mention planId at all, nor explain its format or source. The single required ID parameter is somewhat self-evident from its name, but the description provides no additional meaning.

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 title and description make clear this tool reads a single meetup/plan in full, listing the specific data it returns. It is not a tautology and is distinguishable from list_plans by virtue of returning one plan completely rather than a collection. However, it does not explicitly name a verb or contrast directly with sibling list_plans.

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 gives no explicit when-to-use guidance, prerequisites, or alternatives. It only states what one call returns, leaving the agent to infer that it should be used when details for a specific planId are needed. No exclusions or sibling comparisons are provided.

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

invite_by_emailPrepare email invites (you send)AInspect

Prepare an email invite round for a home the person runs (the invite board, "Bjud in många"): rows of { email, name?, role? } — role is member (default) or, in a förening, leader, parent or child (a child's row needs parentEmail; the invite goes to the parent, never a child's own address), groupIds for a förening's group. It becomes a card: the person's tap sends it, confirming the addresses come from the organisation's own register. The board's own caps, opt-outs and age rules apply; addresses are never shown to anyone else. At most 50 per round.

ParametersJSON Schema
NameRequiredDescriptionDefault
homeNoWhich home — its name (e.g. "Löparklubben") or its id from list_homes. May be left out when the person runs exactly one.
rowsYes
groupNoförening: one of its groups (name or id) — the invite joins that group.

Output Schema

ParametersJSON Schema
NameRequiredDescription
homeYes
noteYes
validYes
itemIdYes
statusYes
targetYes
invalidYes
leftTodayYes

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond the annotations (which only say non-readonly, non-idempotent, non-destructive): it discloses board caps, opt-outs, age rules, the 50-per-round limit, privacy ('addresses are never shown to anyone else'), and the child→parent address routing. The one gap is it doesn't fully explain what 'becomes a card' does if left unsent.

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 purpose in the first clause and every subsequent clause adds substantive detail (roles, limits, privacy) rather than filler. It is dense and the Swedish jargon/parentheticals make it harder to parse, but nothing is wasted.

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 nested-row tool with four roles, parent routing and privacy rules, the description covers the operational essentials, and the presence of an output schema removes any need to explain return values. The unaddressed `extra` field is the main remaining gap.

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 67% schema coverage, the description carries meaningful extra weight: it defines role semantics and the member default, explains that a child's row needs parentEmail and why, and ties groupIds to a förening's group. It leaves the `extra` param undocumented, so it doesn't fully compensate.

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+resource: it prepares an email invite round for a home, producing a card the person taps to send. The distinction between preparing and sending is made explicit, which sets it apart from messaging siblings, but it never names a competing sibling or explains why you'd pick it over e.g. manage_member.

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 ('a home the person runs') and the home param note ('May be left out when the person runs exactly one') gives partial context. However there is no explicit when-to-use/when-not statement and no named alternative for adding people by other means.

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

join_circleCircles: join a circleA
Idempotent
Inspect

Join a circle for the person — only when they said yes. If their 'groups' setting isn't 'send', you get a link for them instead. When the circle reaches its threshold it becomes a group chat and everyone is notified.

ParametersJSON Schema
NameRequiredDescriptionDefault
circleYescircleId or slug from find_circles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
joinedNo
statusYes
startedNo
confirmUrlNo
minToStartNo
conversationIdNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds behavior beyond that: a conditional fallback where the caller receives a link instead of a join when the person's 'groups' setting isn't 'send', plus the side effect that hitting a threshold promotes the circle to a group chat and notifies everyone. That is meaningful side-effect and branching disclosure; auth/permission requirements remain unstated, keeping it off 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.

Conciseness4/5

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

Three short sentences, front-loaded with the action and its gating condition, then the fallback and side effect. No filler. Slightly terse phrasing in the opening clause ('for the person') costs it the top mark.

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 one-parameter mutation tool with an output schema and annotation coverage, the description supplies what structured fields cannot: the conditional return-link path and the group-chat promotion side effect. Return-value shape is delegated to the output schema, which is acceptable, leaving only minor gaps around permissions.

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 parameter is already documented as 'circleId or slug from find_circles'. The description adds no syntax, format, or lookup guidance beyond that, so the baseline 3 for a fully documented schema 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 (join) and resource (circle), and the qualifying clause 'for the person — only when they said yes' frames the action's scope. It does not explicitly contrast with close siblings like propose_circle or find_circles, so it stops short of a 5, but the action itself is 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 an explicit precondition for invocation ('only when they said yes'), which tells the agent this is a consent-gated action rather than a free-form join. No alternatives are named, so the agent must consult sibling names/parent descriptions to know when to prefer propose_circle, but the 'when' condition is real guidance.

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

knockRelay: knock on someone newAInspect

Knock on someone from find_people — a first-contact request. The recipient must be able to decide easily, so EITHER reveal who the person is (reveal='identity': their name, handle and public links are shown) OR give real context (reveal='context', ≥ 40 chars: who they are and why they'd like to talk, without identifying details). Optional first message. Only with the person's approval of the wording. If their knocks policy is 'draft', this saves a draft for them to send. Max 5 knocks a day; declines are silent.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesA result's ref from find_people.
revealYes
contextNoRequired for reveal='context' (40–600 chars); optional otherwise.
messageNoOptional first message, max 800 chars.
shareStyleNoShow the person's collaboration-style summary to the recipient (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
statusYes
draftIdNo
knockIdNo
confirmUrlNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (which only say non-readOnly, non-idempotent, non-destructive) by disclosing a concrete rate limit (max 5/day), the draft-policy branch, silent declines, the approval precondition, and exactly what the recipient sees in each reveal mode.

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 purpose then packs constraints, modes, and limits into one dense paragraph with no filler. Slightly long, but each clause carries actionable information.

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 5-param write tool with an output schema, the description covers the decision, side effects, limits, and policy branches that an agent needs. Return values are handled by the output schema, so nothing material 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?

Adds real meaning to the enum: identity surfaces name/handle/public links, context requires ≥40 chars and a specific content shape. message is noted as optional. shareStyle meaning is left to the schema, which already documents it, keeping this just short of 5.

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 ('knock') and resource ('someone from find_people'), and frames it as a 'first-contact request', which cleanly distinguishes it from siblings like find_people, list_knocks, and respond_knock.

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?

Clearly situates usage: the target is a ref from find_people, and it spells out the required reveal decision (identity vs context). It adds a precondition ('only with the person's approval of the wording') but does not explicitly state when to prefer this over alternatives such as other outreach tools.

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

list_conversationsRelay: list conversationsA
Read-onlyIdempotent
Inspect

List the person's conversations, newest first, with unread counts and a short preview.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
conversationsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this a read-only, idempotent, non-destructive operation, so the safety profile is fully covered. The description adds ordering (newest first) and result content (unread counts, short preview), but an output schema exists, making that disclosure largely redundant. No pagination or limits are mentioned.

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?

A single sentence with zero waste, front-loading the action and resource before the ordering and payload details. Nothing could be trimmed without losing useful 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?

Given a parameterless read tool with an output schema and rich annotations, the description covers the essentials an agent needs. The remaining gap is scope — whether 'the person's' means the caller or an arbitrary target — and any result-count limits, which keeps it from a 5.

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?

The tool takes zero parameters and every property is documented at 100% coverage, so there is nothing for the description to compensate for. Baseline 4 applies; no parameter semantics are needed or expected.

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 (list) and resource (conversations) plus the ordering and payload (newest first, unread counts, short preview), so it is clearly distinct from single-item readers like read_conversation. It does not explicitly position itself against ambiguous siblings such as read_unread or pro_conversations, 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 Guidelines2/5

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

There is no when-to-use guidance, no stated prerequisites, and no mention of alternatives. The agent must infer from the name alone that this is the entry point for browsing conversations rather than reading one (read_conversation) or fetching unread items (read_unread).

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

list_follow_requestsChannels: follow requestsA
Read-onlyIdempotent
Inspect

People asking to follow the person's own channel ("Min kanal" — what they share with friends and chosen people), waiting for their answer: name and @username as the app shows them to the person, and when they asked. Read only. To answer, ask the person, then answer_follow_request with confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
requestsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is largely covered. The description adds context beyond that: "Read only" as reinforcement and, more valuably, the human-in-the-loop workflow requiring the person be asked before answering, plus the confirm: true flag on the sibling.

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 resource and its state, and every clause contributes meaning. The "Min kanal" parenthetical and the trailing answer_follow_request workflow add length, and "Read only" duplicates the readOnlyHint annotation, so it is slightly less lean than it could be.

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 zero-parameter read tool with an output schema, the description covers purpose, state, what is returned, and the follow-up workflow. Nothing an agent needs to call it correctly is missing, and return-value explanation is unnecessary given the output schema.

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?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to compensate for. The field-level detail (name, @username, when they asked) describes output rather than inputs, which is richer than required but not parameter semantics.

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 the specific resource (people asking to follow the person's own channel, "Min kanal") and clarifies the state (waiting for their answer), plus what each entry contains. It names the sibling answer_follow_request, so an agent can distinguish the read of pending requests from the act of answering them without opening either schema.

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?

Explicitly routes to the alternative: "To answer, ask the person, then answer_follow_request with confirm: true." This gives both the alternative tool and the prerequisite (consult the person first). It lacks an explicit negative boundary (e.g., when not to call it), so it stops short of a full 5.

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

list_friendsRelay: list friendsB
Read-onlyIdempotent
Inspect

The person's friends (people who exchanged a friend code with them).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
friendsYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful domain context by defining what counts as a friend, but it does not disclose ordering, pagination, or rate-limit behavior beyond 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.

Conciseness4/5

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

The description is a single concise phrase with no filler, and the core definition is front-loaded. It is appropriately sized, though it reads as a fragment rather than a complete 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?

For a zero-parameter, read-only list operation with an output schema and rich annotations, the description supplies the one piece of domain meaning not covered elsewhere: who counts as a friend. Return values are handled by the output schema and safety by annotations, so the remaining gap is mostly usage guidance rather than missing invocation-critical information.

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?

The tool takes zero parameters, so there are no parameter semantics to explain. The empty schema and 100% schema coverage mean the baseline score of 4 is appropriate for a parameterless operation.

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 the resource (friends) and defines it as people who exchanged a friend code, which clarifies the domain beyond the tool name. However, it does not explicitly state the list operation in the description itself and offers no sibling differentiation against alternatives like find_people or list_follow_requests.

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 guidance about when to use this tool versus alternatives such as find_people, list_follow_requests, or pling_friend. Usage is only implied by the tool name, and no exclusions or prerequisites are mentioned.

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

list_homesYour föreningar, companies and communitiesA
Read-onlyIdempotent
Inspect

The föreningar, companies and communities the person is in — with their role (admin, leader …), whether they run it, its plan, how many are in it, asks waiting, whether under-18s may be in it (then #kanal changes are cards they confirm), and its #kanaler (name, access, optional). Pass a home's id or name as home to the other admin tools. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
homesYes

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, idempotent, non-destructive, closed-world), so 'Read only' is redundant. The description earns its keep by disclosing the returned data shape and a real behavioral nuance — under-18 homes turn #kanal changes into cards requiring confirmation.

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?

It is a single very long run-on sentence with a parenthetical aside ('then #kanal changes are cards they confirm'), which makes it dense and slightly hard to parse. The resource is front-loaded and little is truly wasted, but the structure could be broken up for clarity.

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 explanation is technically optional, yet the description still enumerates returned fields, which is helpful context. No parameters need documenting and the safety traits are covered by annotations, making this essentially 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?

This tool takes zero parameters, so per the rubric the baseline is 4. The schema is empty and 100% covered, and the description's mention of `home` refers to passing values to other tools, not to an input of this one, so no additional compensation is needed.

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 the resource precisely (föreningar, companies, communities the person is in) and enumerates the fields returned, so an agent knows exactly what this lists. It does not, however, explicitly distinguish itself from the sibling list_households, leaving that boundary 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?

It gives one concrete workflow rule — 'Pass a home's id or name as `home` to the other admin tools' — which clarifies downstream usage. But it never states when to call this versus list_households or the other list_* siblings, so selection guidance is only partial.

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

list_householdsHousehold: list the person's householdsA
Read-onlyIdempotent
Inspect

Start here for the household ("Hemmet"): the person's households — family or shared home — with their role (admin / member / guest), which parts they see, what they may do (add to the shopping list, suggest or pick dinners, mark chores done, add calendar events — the household's own rules), whether someone under 18 lives there (then every change is a draft the person taps), and today: the dinner, their chores due, how many things are on the list. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
householdsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/non-openWorld, so the safety profile is covered. The description adds genuinely non-structured context beyond that: household-specific rules govern what the person may do, and presence of an under-18 resident turns every change into a draft the person taps. That is useful behavioral disclosure not derivable from the annotations. Minor deduction for restating 'Read-only' which the annotations already carry.

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?

One very long, em-dash-chained sentence that crams the permission list, minor-resident behavior, and today's status together. It is front-loaded with 'Start here' and wastes little, but it is dense and unstructured, and 'Read-only' duplicates the annotation rather than earning 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?

An output schema exists, so the description need not explain return values, yet it still summarizes the payload well (role, visibility, permissions, minor flag, today). For a zero-param read tool with full annotation coverage and an output schema, this is nearly complete; only sibling routing against list_homes is 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?

Zero parameters, so the baseline of 4 applies — there is nothing parameter-wise the description needs to compensate for. Schema description coverage is 100% with an empty properties object, so nothing is missing.

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?

Names a specific verb (list) and resource (the person's households) and enumerates the fields returned — role, visibility, permissions, minor-in-residence flag, today's status. However, it does not distinguish itself from the sibling list_homes, nor from the field-overlapping reads (read_chores, read_dinners, read_shopping_list, read_household_calendar), so an agent cannot tell apart the entry-point summary from the targeted readers.

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?

'Start here for the household' implies this is the entry point and gives a weak sense of ordering, but there is no explicit when-to-use vs list_homes, and no when-not or exclusion guidance. Usage must be inferred from the 'start here' phrasing.

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

list_identitiesAs whom and to whom: where you can publishA
Read-onlyIdempotent
Inspect

AS WHOM and TO WHOM the person can publish — call it before create_post, create_event or upload_media when they say "post this as …" or "for the members". Each identity is one of what they run (a förening's, a company's or community's home, a creator or topic channel, a class) with its key (pass it as as), their role, and its place: the channel and the audiences it offers THEM (everyone · followers · members = the home's Nyheter · team · subscribers), whether under-18s can see it (then everything you write is a draft they publish) and whether your app may publish there directly. Their own friends feed and CV are theirs alone (not here). With the Messages scope: also the group chats and #kanaler they write in as themselves (send_to_conversation). Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
chatsYes
identitiesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds real behavioral context beyond them: the under-18 rule that everything written becomes a draft the person must publish, and the per-identity flag for whether the app may publish directly. It also discloses a scope-dependent capability (group chats/#kanaler via send_to_conversation). It does not discuss staleness, caching or rate limits, so 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?

Purpose and the critical 'call it before create_post' instruction are front-loaded, but the body is a single sprawling sentence with deeply nested parentheticals, slashes and em-dashes that make it hard to parse. Information-dense, yet it would be stronger split into a few short sentences.

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 zero-parameter, read-only listing tool with an output schema (so return format needn't be explained) and annotations covering the safety profile, the description supplies the missing why-and-when context, draft-publication rules and scope variants. Nothing essential for correct invocation is absent, though the coverage could be organized more cleanly.

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?

There are zero input parameters, so the baseline is 4. The description does add meaning about the returned identity record (key passed later as `as`, role, channel, offered audiences, publishability), which helps the agent map output fields to its next call, but that is output rather than parameter semantics.

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 conveys a specific resource: the identities ('as whom') a person can publish as and the audiences ('to whom') each offers, plus their key, role and publish permissions. It clearly distinguishes this from the write-side siblings (create_post, create_event, upload_media). It is clear but stated in metaphor-heavy prose rather than a plain verb+resource, 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 Guidelines5/5

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

Explicit when-to-use with named triggers ('when they say "post this as …" or "for the members"') and explicit precondition ('call it before create_post, create_event or upload_media'). It also names the scope-dependent extension (Messages scope → send_to_conversation) and excludes non-members ('Their own friends feed and CV are theirs alone (not here)').

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

list_knocksRelay: list knocksA
Read-onlyIdempotent
Inspect

Knocks waiting for the person (someone new would like to talk — with their identity or context, message, and why they might fit), and knocks the person sent (waiting / accepted / no answer).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sentYes
incomingYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine domain context beyond that: it defines what a knock contains (identity/context, message, fit rationale) and the status taxonomy (waiting/accepted/no answer), which is valuable for an unfamiliar domain term.

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 that covers both the received and sent collections without wasted prose. The nested parentheticals make it slightly dense but every clause carries 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 zero params, complete annotations, and an output schema handling return values, the description only needs to convey scope. It does so by covering both collections and their statuses, leaving little an agent would need beyond pagination/ordering details.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is 100% and no parameter explanation is needed.

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 clear verb (list) and resource (knocks), and scopes it to both received and sent knocks with their statuses. It doesn't explicitly name a sibling to differentiate from, but it is plainly distinct from action tools like knock or respond_knock.

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 — an agent infers this is the tool for reviewing one's knock inbox/outbox. No explicit when-to-use versus alternatives such as whats_waiting, list_follow_requests, or read_unread is given.

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

list_membersMembers and asks to joinA
Read-onlyIdempotent
Inspect

Who is in a home the person is in — named the way the app names them there (in a förening a child is "Ella S.", a parent "Alvins förälder"), their roles, and (for its admins) who asks to join: a company's or community's asks, and adults asking to lead a förening. Use memberId with manage_member. Keep the names to the person. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
homeNoWhich home — its name (e.g. "Löparklubben") or its id from list_homes. May be left out when the person runs exactly one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
asksYes
homeYes
kindYes
noteYes
adminYes
totalYes
membersYes
roleDefsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely new behavioral context: naming is app-specific per home type (with concrete examples), admins see pending join-asks ('adults asking to lead a förening'), and a directive to keep names to the person. 'Read only' merely echoes the annotation, but the rest goes beyond 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.

Conciseness4/5

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

Content is front-loaded ('Who is in a home...'), and the trailing cross-reference and 'Read only' are useful placement. The parenthetical name examples are long and the sentence is dense with em-dashes, and 'Read only' duplicates the annotation, so a small amount of trimming is possible.

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 still covers scope (whole-home vs admin-only asks), naming behavior, and the follow-on manage_member route. Nothing essential for correct invocation appears missing, though the admin-visibility distinction could be stated more explicitly.

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 `home` parameter is already well documented (name or id from list_homes, optional when one home exists). The description references the home concept but adds no format or syntax detail beyond the schema. Baseline 3 for a fully-covered schema is correct.

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 the resource (who is in a home) and its scope — roles and, for admins, asks to join — which is a specific subject distinct from siblings like list_homes and list_friends. It never uses a clean verb such as 'list' and the 'a home the person is in' phrasing is a little circular, but the resource and contents are identifiable. Adequate differentiation, if not crisp.

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?

Cross-references the sibling manage_member ('Use memberId with manage_member') and notes the admin-only view of asks to join, so usage is implied by context. But it never states when to reach for this tool versus e.g. list_friends or list_identities, nor any exclusion. Guidance is present but only implied.

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

list_my_channelsChannels: list your channelsA
Read-onlyIdempotent
Inspect

The person's own Hunchful channels (they are the owner — channels have one owner today): who it's for (audience), whether it's live or paused, followers, how many people have come to its events (reach is measured in meetups, not likes), events ahead, posts scheduled to go out, and post drafts you left waiting in their Stream. Use it first to find a channelId for the other channel tools. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
channelsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the bar is low. The description adds genuine behavioral context beyond that: it discloses that reach is measured in meetups, and that drafts live in "their Stream," which tells the agent how to interpret returned values.

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 sentences, front-loaded with the resource and followed by the routing hint. The first sentence is a dense field list, but every element is decision-relevant rather than padding; it is appropriately sized, if slightly heavy.

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 zero-parameter, read-only list tool with an output schema and full annotation coverage, this description is more than sufficient. Since the output schema already defines the return shape, describing the fields is a bonus rather than a necessity, and nothing an agent needs to invoke it correctly 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?

There are zero parameters, so the schema carries nothing to explain and the baseline is 4. The description correctly introduces no parameter syntax, matching a no-arg list tool.

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 resource (the person's own Hunchful channels) with an explicit ownership qualifier (they are the owner, one owner today), which distinguishes it from sibling channel tools. It enumerates the returned fields (audience, live/paused, followers, reach, events ahead, scheduled posts, drafts), so an agent knows exactly what this tool yields.

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?

"Use it first to find a channelId for the other channel tools" gives explicit routing guidance and positions this tool ahead of downstream channel tools. It stops short of naming a specific alternative or stating when this tool is NOT the right call, but the context is clear.

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

list_personasWhat you run: your personasA
Read-onlyIdempotent
Inspect

What the person RUNS on Hunchful — their personas: the föreningar (clubs) they run or lead groups in, companies, creator and topic channels, and classes — each with its key (pass it as as to the other tools), their role, its channel, whether you may post as it, and the groups they lead (pass a group's name or id as group). Their own friends channel and CV are theirs alone (not here). Read only. Start here for anything about what they run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
personasYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnly, idempotent, non-destructive, closed world), so the bar is lower. The description still adds real context beyond them: the full shape of each persona entry, the cross-tool contract that the key is passed as `as` and a group name/id as `group`, and a privacy scope constraint. It does not mention ordering or pagination, but the output schema is present.

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 core purpose ('What the person RUNS on Hunchful — their personas') before the em-dash enumeration. The long middle clause is dense but each item (clubs, companies, channels, classes) earns its place by bounding the resource. Minor verbosity in the stacked parentheticals.

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 zero parameters, full annotation coverage, and an output schema that documents the return shape, the description's job is mostly framing and routing - which it does well, including privacy scope. It is complete enough to call correctly; the absence of a named sibling alternative is a small gap.

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?

The tool takes zero parameters, so the baseline is 4. The description usefully references parameters of other tools (`as`, `group`) that consume this tool's output, which is cross-tool context rather than this tool's own parameter semantics.

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 (list/read) and resource (personas = clubs, companies, channels, classes) and enumerates exactly what each persona record carries (key, role, channel, post permission, led groups). It explicitly distinguishes itself from neighbouring concepts by noting the friends channel and CV are 'not here', so an agent can separate it from list_friends / list_identities.

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 entry-point directive ('Start here for anything about what they run') and an explicit exclusion (friends channel and CV are not included). It also explains how the returned key feeds the `as` parameter of other tools, routing the agent downstream. It stops short of naming a specific sibling alternative for an overlapping query.

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

list_plansPlans: list meetupsA
Read-onlyIdempotent
Inspect

The person's meetups ("Samla gänget"): plans they made or were invited to, newest first — status (planning / decided / done), which gang, whether they still need to answer, the current leader ("most can"), when voting closes and the share link. Use it to nudge towards actually meeting.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
plansYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish the safety profile (readOnly, idempotent, non-destructive), so the bar is lower; the description goes further by disclosing ordering (newest first) and the returned facets (status, gang, answer-needed, leader, voting close, share link). No auth or rate-limit context, so 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.

Conciseness4/5

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

Front-loaded with the subject ("The person's meetups") followed by a single em-dash enumeration and one usage sentence. It is dense but every clause earns its place, with only minor noise from the parenthetical foreign-language label.

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 cover the safety profile, so the description needn't restate return structure; it still supplies ordering, field facets, and a usage cue. Adequate for a zero-param list tool, though it could note how it relates to get_plan.

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?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to clarify beyond what the empty schema conveys.

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 (list) and resource (the person's meetup plans they made or were invited to), with a clear scope that separates it from single-plan tools like get_plan. It does not explicitly name sibling alternatives, 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 Guidelines4/5

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

Provides a clear situational purpose with "Use it to nudge towards actually meeting," which tells the agent the intended context. However, it offers no exclusions or explicit routing against siblings like get_plan or vote_plan.

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

list_postsRecent posts of what you runA
Read-onlyIdempotent
Inspect

The latest posts (up to 20) on a channel the person runs or writes news for — each with its postId (for edit_post, delete_post, read_comments), kind, words (shortened), who it's for (audience), when, its AI label, whether it's still being checked or scheduled, and its comment count for the channel's people. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
asNoWhich of what the person runs — a key from list_identities, e.g. "forening:a1b2c3d4e5" or "channel:Xy12Ab34Cd", or its name, e.g. "Löparklubben". May be left out when only one fits.

Output Schema

ParametersJSON Schema
NameRequiredDescription
asYes
noteYes
postsYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'Read only' is redundant but consistent. The genuinely additive detail is the 20-item cap; the run-down of returned fields is largely duplicated by the output schema. No contradiction, but the description stops short of discussing pagination or ordering beyond 'latest'.

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 fact (latest 20 posts on a channel you run) is front-loaded in the first clause, and the trailing field enumeration is dense but follows naturally. Slightly long and list-heavy, and the field roster partly duplicates the output schema, but there is 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?

With an output schema present, the description needn't explain return values, and it still names the fields that matter for downstream calls. Combined with a fully described single optional parameter and read-only annotations, an agent has everything needed to call it correctly; only ordering/pagination behaviour is left 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?

There is one parameter and the schema documents it at 100% coverage, including the 'key from list_identities or its name' form and the 'may be left out when only one fits' fallback. The description only gestures at it as 'a channel the person runs' and adds no syntax or edge-case detail beyond the schema, so the baseline 3 applies.

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 names a precise verb and resource ('The latest posts ... on a channel the person runs or writes news for') and adds a hard cap (up to 20), which immediately separates it from create_post, schedule_post, delete_post and edit_post in the sibling list. An agent can tell what it retrieves and from where without opening the schema.

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 by the parenthetical '(for edit_post, delete_post, read_comments)', which signals that this is an entry point for post-management workflows, and by the constraint that the channel must be one the person runs. However, it never states when to prefer this over neighbouring reads like list_my_channels or read_comments, nor any exclusion. Adequate but not explicit.

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

list_quiz_showsQuiz: list quiz nights and daily challengesA
Read-onlyIdempotent
Inspect

The person's quiz nights and daily challenges: for each of their groups, household chats and channels (run or followed) that has something — upcoming and recent shows (time, questions, players, their own place once it's done — never other players' names), today's daily question and whether they answered, and for the ones they host: the daily challenge's state (on, time, questions queued, suggestions waiting for their review). canHostIn lists where they may make quizzes (create_quiz_show_draft, queue_daily_challenge). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly needed with an id that list_quiz_shows doesn't list, e.g. "group".
whereNoOnly this group or channel — a name or id, e.g. "Familjen". Default: all of them.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
placesYes
canHostInYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds genuine value beyond that: it discloses a privacy behavior (never reveals other players' names), exposes canHostIn as a permission surface, and names the downstream creation tools. It stops short of discussing pagination or freshness limits.

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 subject is front-loaded ('The person's quiz nights and daily challenges'), but the rest is a single dense run-on sentence with nested em-dash clauses that is harder to parse than it needs to be. Much of the return-field detail duplicates the existing output schema.

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 complex, relationship-heavy read tool, the description covers scope, privacy behavior, and the permission bridge to creation tools, and an output schema already documents returns. The main gap is the absence of routing guidance against the numerous sibling list 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 100%, so the schema already documents kind and where; the description itself never mentions either parameter and instead describes return fields (canHostIn), which belongs to the output schema. Baseline 3 applies since the schema carries parameter meaning.

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 enumerates what the tool returns (upcoming/recent quiz shows with time, questions, players, own placement; today's daily question and answer status; hosted daily-challenge state) and scopes it to groups, household chats and channels. It is specific about the resource, though the verb is implicit (it reads as a list) rather than stated, and sibling differentiation is only partial via the create_quiz_show_draft / queue_daily_challenge references.

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 by the read-only listing nature and the pointer to canHostIn for where the person may create quizzes, which hints at the follow-on tools. However, there is no explicit when-to-use versus alternatives (list_upcoming, list_conversations, whats_waiting) and no stated prerequisites.

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

list_upcomingEvents: what's coming upA
Read-onlyIdempotent
Inspect

Everything coming up for the person in one list, in time order: plans and meetups (with their answer, and whether they still need to answer), channel events they signed up for (going or on the waitlist), events their own channels host (with sign-ups so far), and club sessions they lead or take part in (with their own answer). Use it for "what's on this week?" and to nudge towards actually meeting. Read only. Answer plans with vote_plan, channel events with rsvp_event.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days ahead, 1–30 (default 14), e.g. 7.

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysYes
noteYes
itemsYes
timeZoneYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, lowering the bar. The description adds real value beyond them: time-ordering of results, and the content of each entry (answer status, waitlist, sign-ups so far, own answer). 'Read only' slightly restates readOnlyHint but the ordering and content detail are additive.

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 core promise, then the category enumeration, then usage and routing. The long enumeration sentence earns its length by telling the agent what the list contains, though it is dense.

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?

With annotations covering the safety profile and an output schema handling return structure, the description completes the picture: what triggers it, what it contains, and which tools answer the items. Nothing needed to invoke it correctly is 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?

Only one optional parameter (days) with 100% schema coverage, so the schema already documents the 1-30 range and default. The description's 'what's on this week' loosely implies a short horizon but adds no format or semantics beyond the schema; baseline 3 applies.

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+resource ('Everything coming up... in one list, in time order') and enumerates the exact categories included: plans/meetups, channel events signed up for, events own channels host, and club sessions. This distinguishes it from narrower siblings like list_plans, read_schedule, or events.

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?

Names the trigger scenario ('what's on this week?') and routes follow-up actions to vote_plan and rsvp_event. It lacks explicit when-not guidance versus sibling listing tools such as list_plans or read_household_calendar, so it stops short of a full 5.

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

manage_kanalMake, rename or remove a #kanalA
Destructive
Inspect

Make, rename, re-lock or remove a #kanal (a chat inside a home) the person runs. action create: name (+ access: all / invite / a role id from list_homes, optional: true = people join it themselves); rename: kanal + name; access: kanal + access and/or optional; delete: kanal + confirm: true (its chat closes for everyone; #allmänt stays). In a förening or an all-ages community, create/rename/access are a card the person confirms (under-18s may be in it). Write in a #kanal with send_to_conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
homeNoWhich home — its name (e.g. "Löparklubben") or its id from list_homes. May be left out when the person runs exactly one.
nameNocreate / rename: e.g. "styrelsen".
kanalNorename / access / delete: its name as list_homes shows it (e.g. "#styrelsen") or its groupId.
accessNoall, invite or a role id (e.g. "leader", "adult" or one of the home's own).
actionYes
confirmNodelete: true once the person confirmed.
optionalNotrue: listed under "Browse channels", people join it themselves.

Output Schema

ParametersJSON Schema
NameRequiredDescription
homeYes
noteYes
kanalYes
itemIdYes
statusYes
conversationIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real context: delete closes the chat for everyone while #allmänt is preserved, and create/rename/access trigger a confirmation card in a förening or all-ages community (with under-18s possibly present). These are meaningful behaviors not captured by the boolean hints.

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?

Purpose is front-loaded, then the action-specific requirements are laid out compactly with clear delimiters. The Swedish terms and dense parentheticals add mild parsing load, but no sentence is wasted.

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 no explanation, and annotations cover the safety profile. The description supplies per-action requirements and the deletion/confirmation semantics, leaving little an agent would need before calling 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 high (86%), so the baseline is 3, but the description adds value the schema cannot: it links parameters to actions (create needs name; rename needs kanal+name; access needs kanal+access and/or optional; delete needs kanal+confirm). That action-to-parameter mapping is the genuinely useful addition.

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 set of verbs (make, rename, re-lock, remove) acting on a clearly defined resource: a #kanal, glossed as 'a chat inside a home the person runs'. It also distinguishes scope by routing writes within a channel to send_to_conversation, so an agent can separate it from siblings like send_to_conversation.

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 maps each action value (create/rename/access/delete) to the parameters it requires, which is concrete when-to-use-per-action guidance and goes well beyond a generic blurb. It lacks an explicit 'use X instead when Y' exclusion except for the send_to_conversation write case, so it stops 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.

manage_memberRoles, admins, asks and removing membersA
Destructive
Inspect

Change someone's place in a home the person runs. A company or community: set_roles (the home's own roles — ids from list_members roleDefs), make_admin / remove_admin (admins are adults), remove (confirm: true — they're taken out of every #kanal), accept_ask / decline_ask. In a community for all ages (under-18s may be in it) each change is a card the person taps. A förening: accept_ask / decline_ask for an adult asking to lead (a yes makes them one of its leaders) — its youth, parents and groups are the club pages' in the app. The home's own rules decide each one.

ParametersJSON Schema
NameRequiredDescriptionDefault
homeNoWhich home — its name (e.g. "Löparklubben") or its id from list_homes. May be left out when the person runs exactly one.
rolesNoset_roles: the home's own role ids, e.g. ["styrelse"]. [] takes them all away.
actionYes
memberYesmemberId from list_members, or their exact name.
confirmNoremove: true once the person confirmed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
homeYes
noteYes
memberYes
statusYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, non-idempotent, and not read-only, so the safety profile is covered. The description adds genuinely new behavior: remove takes the person out of every #kanal, requires confirm: true, and in some home types each change is surfaced as a card the person must tap (an approval workflow). It does not mention auth/permission requirements, but it goes meaningfully beyond 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.

Conciseness3/5

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

It is dense and mostly front-loaded with the action list, but the three long sentences interleave action semantics with home-type-specific rules, making it sprawling and harder to scan. Little is wasted, but the structure could separate per-action documentation from cross-cutting behavior.

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 action meaning, home-type nuance, and the confirm flow. It is nearly complete for a multi-action mutation tool; the main residual gap is any stated permission/ownership requirement for who may invoke it.

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 already 80%, so the schema documents most parameters. The description adds useful framing the schema lacks: roles come from the home's own role ids via list_members roleDefs, member ids come from list_members, and confirm is tied to remove. It gives origin and intent for parameters rather than restating types. The action enum still lacks a per-value gloss in both places.

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 purpose (changing a member's place), then enumerates the exact action verbs from the enum (set_roles, make_admin, remove_admin, remove, accept_ask, decline_ask), so an agent knows what the tool does. It references list_members as the id source, which lightly separates it from read-only siblings, but the phrasing 'a home the person runs' is idiomatic and the sibling differentiation is left partial.

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 scaffolds when each action applies by home type: company/community, an all-ages community where changes become tap cards, and a förening where accept_ask/decline_ask apply to adults asking to lead. This is clear per-action context, though it does not explicitly rule out when NOT to use the tool versus alternatives like list_members or update_home.

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

mark_chore_doneHousehold: mark a chore doneAInspect

Mark a chore done by the person ("I did the dishes") — choreId from read_chores. The next time comes and the rotation moves on, as in the app. Only when the person says they did it. Consent: the AI setting for groups — 'draft' puts a one-tap card in their Stream, 'send' marks it now, 'off' refuses; a household with someone under 18 is always a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
choreIdYeschoreId from read_chores, e.g. "a1b2c3d4e5".
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
whyNoWhy it's a draft (said to the person).
noteYes
titleYes
itemIdNoThe Stream card, when it's a draft.
statusYes
choreIdYes
householdYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: the rotation advances and the next turn is scheduled, and the consent model ('draft'/'send'/'off', plus under-18 always drafting) is fully spelled out. This is exactly the kind of side-effect and authorization context annotations cannot carry.

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 action, then adds rotation and consent details. Dense and mostly earning its place, though the phrasing is slightly run-on ('The next time comes and the rotation moves on, as in the app').

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?

With an output schema present, return values need no explanation; the description covers the action, ID source, side effects, and consent resolution — everything an agent needs to invoke 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 both choreId and household are already documented there, including the example value and the 'leave out when only one' rule. The description repeats the choreId provenance but adds no new syntax or format detail, so baseline 3 applies.

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?

Specific verb ('mark done') plus resource ('chore') with the actor scoped ('by the person'). It names the sibling read_chores as the source of the choreId, so an agent can immediately distinguish this write from the read tool.

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 when-condition: 'Only when the person says they did it.' It does not name an alternative action tool, but for this resource there is a clear read/write pairing with read_chores that is implied. Clear context, no explicit exclusions beyond the consent gate.

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

message_groupMessage a team or its parentsAInspect

Write to a group the person leads: its team (the players — youth), its parents' group (the players' linked parents and the leaders — adults only), or both. To the team or both it's ALWAYS an Utskick draft in the group's Utskick list — the leader opens it, checks it and sends it themselves (a card in their Stream opens it). To the parents' group only it goes into that chat like send_to_conversation: a draft they send with one tap (what a person's AI writes to people is always theirs to send — the spheres); labelled "via" your app once sent, and logged in that chat's Min AI. Never ID numbers, passwords, bank or health details.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesteam (the players), parents (the parents' group) or both.
modeNoparents only: "send" (default) sends if the person allows it, else drafts; "draft" always drafts.
textYesThe message in the person's voice (≤ 2000 characters), e.g. "Hej alla! Träningen på torsdag börjar 18:00 i stället för 17:30. Hälsningar, Anna".
groupNoA group the person leads — its name, e.g. "P13" or "8B" (add the förening's name if several share it, e.g. "Löparklubben P13"), or its groupId from list_personas. May be left out when they lead exactly one.
titleNoA short first line, e.g. "Ändrad tid på torsdag" (≤ 80 characters).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYes
urlYes
whyYes
noteYes
groupYes
reachYes
itemIdYes
statusYes
draftIdYes
messageIdYes
broadcastIdYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false): it discloses that the message is never auto-sent, that the leader opens/checks/sends it, that a card appears in their Stream, that sent messages are labelled 'via' the app and logged in that chat's Min AI. That is exactly the kind of delivery/authorization behavior an agent needs and annotations cannot convey.

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?

Purpose is front-loaded and every sentence carries routing or policy information, so length is justified for a tool with this much branching behavior. Prose is dense and jargon-heavy ('the spheres', 'Utskick', 'Min AI') with layered em-dash clauses that slightly impede scanning.

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?

Output schema exists, so return values need no explanation, and the description fully covers the decision space: target routing, draft-vs-send semantics, who sends, labelling, logging, and content restrictions. An agent has everything needed to invoke 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 description coverage is 100%, so the baseline is 3; however, the description adds a constraint not present in the schema — the text must never contain ID numbers, passwords, bank or health details — plus the 'in the person's voice' framing and the parents-only scope of the mode behavior.

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 — write to a group the person leads — and enumerates the three target variants (team, parents, both). It explicitly differentiates itself from send_to_conversation by describing how the parents-only path behaves 'like send_to_conversation' while the team/both paths always create an Utskick draft.

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?

Explains the selection conditions well: which target routes to a draft in the Utskick list versus which routes into the chat, and that the mode parameter only applies to the parents path. It does not frame these as explicit 'use this instead of X when Y' exclusions, but the routing context is clear enough for selection.

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

moderate_commentHide a comment or turn comments offA
Idempotent
Inspect

The channel's moderator tools: hide a comment (only its author still sees it, marked "hidden by the channel") or show it again, and turn comments off or on for one post. Only when the person asks, on a channel they own or moderate.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYeshide, show, comments_off or comments_on.
postIdNocomments_off / comments_on: from list_posts.
commentIdNohide / show: from read_comments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
statusYes

TDQS

A4.1/5.0
Behavior4/5

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

Adds substance beyond the annotations by explaining what hiding actually does ('only its author still sees it, marked "hidden by the channel"') and implying reversibility via show. This is consistent with destructiveHint=false and idempotentHint=true, and it discloses the user-visible side effect that the annotations alone would not convey.

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 with the capabilities front-loaded and the constraint second. Dense but free of filler; the only cost is the slightly awkward quoting of 'hidden by the channel' which is justified as user-visible text.

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 and annotations covering safety and idempotency, the description needs only to cover the action space and permission context, which it does fully. Coverage of all four enum actions and the ownership precondition makes it callable without further inference.

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% (action enum, postId sourced from list_posts, commentId from read_comments), so the schema already carries parameter meaning. The description reinforces the action set and the post scope of comments_off/comments_on but adds no new syntax or format detail. Baseline 3 applies.

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 the resource (comments, comments on a post) and enumerates all four supported verbs: hide, show, comments_off, comments_on, matching the action enum exactly. An agent can distinguish this from neighbors like read_comments or delete_post without opening the schema.

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?

States a clear usage condition and permission gate: 'Only when the person asks, on a channel they own or moderate.' That is a real when-to-use and authorization constraint. It does not, however, name a sibling alternative (e.g., deleting a comment instead of hiding it), so it stops short of explicit alternative routing.

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

pling_friendPling a friend (light nudge)AInspect

Send a light pling to a friend — a tiny nudge like "promenad i kväll?" or "plugga ihop?", delivered as a message in their 1:1 chat so they can just answer. The lightest way to get two people to meet; offer it when the person misses someone or the feed has ended. Only when the person wants it. Consent: the 'friends' policy — 'draft' puts a one-tap card in their Stream, 'send' sends now (labelled as sent by an agent), 'off' refuses.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesA friend's name or @handle.
whatYes2–5 words, e.g. "promenad i kväll", "fika på lördag".

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYes
noteYes
itemIdNo
statusYes
conversationIdNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare the generic write profile (readOnlyHint=false, destructiveHint=false, non-idempotent, closed-world); the description goes well beyond that by disclosing the consent policy, what "draft" and "send" produce, and that sends are labelled as agent-authored. It does not address reversibility or rate/duplication behavior, and the 'draft'/'send'/'off' values do not appear anywhere 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?

Front-loaded with the action and its effect, then usage, then consent — a sensible order with no filler sentences. The em-dash-heavy packing makes the middle sentence dense, but nothing is redundant.

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 only two required string params, an output schema handling returns, and consent/delivery behavior explained, an agent has what it needs to invoke this correctly. The one gap is that the consent mode referenced ('draft'/'send'/'off') has no corresponding parameter, leaving it unclear how the caller selects a mode.

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 already documents both "to" and "what" with its own example, so the description adds no syntax or format detail beyond it. The inline example ("promenad i kväll?") duplicates the schema's example rather than extending it.

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 ("Send a light pling to a friend — a tiny nudge") and explains the delivery mechanism (a message in their 1:1 chat). It also positions itself against heavier siblings by calling itself "the lightest way to get two people to meet," so an agent can distinguish it from send_message or suggest_dinner.

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 trigger ("offer it when the person misses someone or the feed has ended") and an explicit constraint ("Only when the person wants it"), which is real when-to-use guidance. It stops short of naming an alternative tool for the heavier cases, so routing is implied rather than spelled out.

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

pro_contact_noteProfessional: note on a contactB
Idempotent
Inspect

A short note on someone the person has talked to professionally ("recruiter at Acme, role closes Nov 1"). The note is the person's own — only they see it. An empty note clears it.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
handleNoOr their @handle (must already be a professional contact).
conversationIdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes

TDQS

B3.2/5.0
Behavior4/5

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

The annotations already declare non-readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: the note is private to the user ('only they see it') and an empty note clears the existing note — a deletion semantic not captured by any annotation.

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 short sentences, front-loaded with the core purpose, with the privacy and clearing semantics placed after the example. Every sentence carries information, though the illustrative quote is slightly dense relative to the rest.

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?

With an output schema present, return values need not be explained, and the idempotent hint plus the 'empty note clears it' sentence conveys overwrite semantics. Missing is any indication of how the target contact is selected (handle vs conversationId), which matters for a 3-parameter upsert tool.

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

Parameters2/5

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

Schema description coverage is only 33%, so the description carries much of the burden. It gives a content example for 'note' and implies brevity, but says nothing about 'handle' vs 'conversationId' as alternate targets or the 500/40 character limits, leaving a key identification parameter undocumented in both places.

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 operation on a specific resource — a personal note attached to someone the person has talked to professionally — and the example ('recruiter at Acme, role closes Nov 1') pins down scope and content. It distinguishes itself from the surrounding pro_* siblings by the 'professional contact' framing, though it never names an alternative tool explicitly.

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 or when-not-to-use guidance and no named alternatives among the many sibling tools (pro_message, pro_profile, pro_search). The only implied constraint is that the handle must already be a professional contact, which comes from the schema, not the description.

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

pro_conversationsProfessional: inbox and conversationsA
Read-onlyIdempotent
Inspect

The person's professional inbox — ONLY their professional conversations (recruiters, companies, their public network), never their private chats. Without conversationId: the list, newest first, with unread counts and their notes. With conversationId: that conversation's messages (oldest first); reading doesn't clear the person's unread.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdNoA pro_… id from the list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
draftsYes
conversationNo
conversationsNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral value beyond that: ordering semantics ('newest first' for the list, 'oldest first' for messages) and the important fact that 'reading doesn't clear the person's unread.' It does not mention pagination or list-size limits.

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?

Two dense sentences with zero filler. The identity/scope constraint is front-loaded, then the two modes are laid out in parallel structure, making it scannable and appropriately sized for a single-parameter 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?

With an output schema present, return-value detail is not the description's burden, and annotations cover safety. Identity scoping, both entry modes, and ordering are all present. The only real omission is how a very long list is bounded (paging or truncation), which is not addressed anywhere in the visible fields.

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% and the schema already explains the 'pro_… id from the list' format, so the baseline is 3. The description goes further by defining the semantic consequence of the parameter's presence or absence — list mode versus message mode — which is meaning the schema does not convey.

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 names the specific resource (the person's professional inbox) and delimits it sharply: 'ONLY their professional conversations (recruiters, companies, their public network), never their private chats.' That negative scoping is exactly what separates it from siblings like list_conversations and read_conversation, and it also spells out both operational modes (list vs. single conversation).

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 the conditional usage: omit conversationId to get the list, supply it to get that conversation's messages. That covers when to use each mode. It stops short of explicitly naming which sibling to use for private chats, so the alternative routing is implied rather than stated.

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

pro_messageProfessional: write as your person's professional selfAInspect

Write as the person's professional self: answer a professional conversation (conversationId) or write to someone's professional profile (to: their @handle — they must have turned theirs on). Depending on the person's level it's refused (off), saved as a draft they send with one tap (draft), or sent now (send) — and the recipient always sees "via ". Follow the person's standing rules (pro_profile → rules): they are the person's own words about what you may do and say here. When a message would go beyond them, make it a draft (mode: "draft") and tell your person why. Never share what the rules keep private (salary, private contact details, their private life).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOr: the @handle of someone whose professional profile is on.
modeNo"draft" = prepare only, even when you may send.
textYesThe message, as you'd write it for the person.
conversationIdNoAnswer this professional conversation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
statusYes
draftIdNo
messageIdNo
conversationIdYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations only provide generic hints (readOnlyHint=false, destructiveHint=false), so the description carries the behavioral burden and does so well: it discloses refusal behavior, draft-vs-send outcomes, the 'via <your app>' recipient disclosure, and explicit privacy constraints on salary/contact/private life. Minor gap: it doesn't state rate limits or the shape of the confirmation returned.

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?

A single dense paragraph that is front-loaded with the core action and two targeting paths before moving to behavioral rules and privacy limits. Every sentence carries operational meaning; nothing is decorative or redundant.

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 non-idempotent write tool with four parameters and an output schema, the definition covers the target selection, mode semantics, permission gating, draft fallback, and privacy boundaries. Return values are legitimately omitted because an output schema exists.

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 preconditions beyond the schema: 'to' requires that the target has turned their professional profile on, and 'mode: "draft"' is prescribed as the fallback when rules are exceeded. These tie parameters to decision logic rather than restating field docs.

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 (write as the person's professional self) and immediately enumerates the two distinct targets: answering a professional conversation (conversationId) or posting to another person's professional profile (to). This clearly distinguishes it from siblings like send_message, message_group, and send_to_conversation.

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?

Explicitly describes the decision tree: depending on the person's level the action is refused (off), saved as draft (draft), or sent (send), and it names the governing artifact (pro_profile → rules). It also gives a clear fallback rule — make it a draft when a message exceeds standing rules — leaving nothing to inference.

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

propose_circleCircles: start a circleAInspect

Start a new circle when nothing fits: a real place (it's verified on the map), a schedule and a short, warm description. The person becomes its first member. Only with their approval of the wording.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNo
placeYesSpecific place + town, e.g. "Risen, Genarp" or "Slottsskogen, Göteborg".
titleYese.g. "Löpgrupp på Risen i Genarp".
activityYesOne or two words, e.g. running, board games.
scheduleYese.g. "Tisdagar 18:30, varje vecka".
minToStartNoPeople needed to start (2–12, default 4).
descriptionYes30–900 chars: what happens, who it's for, level.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
circleNo
statusYes
confirmUrlNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations establish the mutation profile (readOnlyHint=false, destructiveHint=false), and the description adds real behavioral context beyond that: the place is verified on the map, the creator becomes the first member, and the wording requires their approval. That approval/verification detail is exactly the kind of context annotations can't carry.

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 compact sentences, front-loaded with the action and the triggering condition, then the important side effect. Efficient with no filler, though 'short, warm description' is slightly subjective phrasing for a spec.

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?

An output schema exists, so return values need no explanation, and the description covers the key non-obvious behaviors (map verification, creator becomes first member, wording approval). For a 7-param mutation with well-documented schema, nothing an agent needs is 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 86%, so the schema already documents every parameter with examples. The description only loosely gestures at place, schedule and description, adding no format or constraint detail beyond the schema, 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 gives a specific verb+resource: 'Start a new circle,' and adds concrete qualifiers (real place, schedule, description). It doesn't name the sibling tools (find_circles, join_circle) but the 'when nothing fits' framing implicitly positions it against them.

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?

'Start a new circle when nothing fits' implies the alternative path (find/join an existing circle) but never names it or states the condition explicitly. Usage is implied rather than spelled out, so it is minimum viable.

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

propose_refinementPropose a refinement (queued)AInspect

Propose a refinement (provenance pointers only). It lands in the owner's confirm queue — nothing changes until they accept. Authorized by OAuth (own model) or a contributionToken.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
modelIdNo
contributionTokenNoScoped propose-only key, if not connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
statusYes
reviewUrlYes
proposalIdsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already set readOnlyHint=false, destructiveHint=false and idempotentHint=false, and the description earns its keep by adding the queue semantics ('lands in the owner's confirm queue', 'nothing changes until they accept') and the auth model (OAuth own-model or scoped contributionToken). It does not mention that duplicate proposals are possible despite idempotentHint=false, which would have been useful.

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 compact sentences, front-loaded with the action before the behavioral and auth details. No filler and nothing repeated from the title or annotations.

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 the queue lifecycle and both auth paths. The remaining shortfall is the undocumented modelId parameter and the batch constraints, which an agent would have to read from the schema.

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 only 33%, with items and modelId carrying no schema descriptions, so the description must compensate. It contributes a real constraint on the source field ('provenance pointers only, no free text'), but says nothing about modelId or the item batch limit of 50, leaving the coverage gap only partly closed.

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 ('propose a refinement') and immediately bounds the payload ('provenance pointers only'), so an agent knows exactly what it is submitting. It stops short of naming apply_refinement as the sibling that actually commits the change, leaving that routing implicit.

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 lands in the owner's confirm queue — nothing changes until they accept' tells the agent this is the non-committal path, which implicitly contrasts with the apply tool. But there is no explicit when-to-use statement or named alternative, so the agent must infer that apply_refinement is the follow-up.

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

pro_profileProfessional: your person's profile and rulesA
Read-onlyIdempotent
Inspect

The person's professional profile (their professional persona in Hunchful — a public place, separate from their private life): whether it's on and public, its headline, the public page, how far you may go here (level: off · draft · send — "send" means you may act), unread professional messages, and their STANDING RULES in their own words. Call it before writing professionally. Follow the person's standing rules (pro_profile → rules): they are the person's own words about what you may do and say here. When a message would go beyond them, make it a draft (mode: "draft") and tell your person why.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
onYes
nameYes
noteYes
pageYes
levelYes
rulesYes
handleYes
publicYes
unreadYes
headlineYes
cvVisibilityYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is settled. The description adds real behavioral context beyond that: the off/draft/send permission semantics, the meaning of 'send' as authorization to act, and the draft fallback when rules are exceeded.

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 trigger ('Call it before writing professionally') is buried mid-paragraph after a long content inventory. The standing-rules instruction is stated twice in near-identical phrasing ('their STANDING RULES in their own words' then 'Follow the person's standing rules ... in their own words'), which is redundant filler in an otherwise dense passage.

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 no explanation, and the description instead supplies the permission model and the draft-when-out-of-bounds rule, which is what an agent actually needs to use the result. It is complete for a zero-parameter read tool, though the entry-point framing could be crisper.

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?

Zero input parameters means there is no parameter surface to document, so the baseline of 4 applies. The description's references to 'level' and 'mode: "draft"' describe downstream message behavior rather than inputs to this tool.

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 enumerates what the tool surfaces (professional persona, visibility, headline, public page, permission level, unread professional messages, standing rules) and contrasts it with the person's private life, implicitly distinguishing it from read_profile. It never states an explicit verb like 'retrieve', reading more as a content inventory than an action, which keeps it just 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 Guidelines4/5

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

It gives an explicit trigger — 'Call it before writing professionally' — plus a follow-on behavior (when a message exceeds the standing rules, make it a draft and explain why). It stops short of naming an alternative tool or a when-not-to-use condition, so it misses the top tier.

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

queue_daily_challengeQuiz: suggest daily challenge questionsAInspect

Suggest questions for the daily challenge (one question a day, answered any time that day, no clock) of a group, household chat or channel the person hosts — only when they ask. The questions go to the host's review list in the app ("waiting for your yes"); none is published until the person approves it there. multiple_choice or closest_wins, 1–14 at a time. Consent: refused if the person's AI setting for groups is 'off'; otherwise always for their review.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly needed with an id that list_quiz_shows doesn't list, e.g. "group".
whereYesThe group, household chat or channel — its name or id from list_quiz_shows (canHostIn), e.g. "Familjen" or "g_8f3k2l1m".
questionsYes1–14 questions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
addedYes
whereYes
itemIdYes
queuedYes
statusYes
dailyOnYes
reviewUrlYes
waitingForReviewYes

TDQS

A4.1/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: submitted questions land in the host's review list ("waiting for your yes") and nothing is published until approved there, plus the consent/gating rule. This explains the draft-and-approve lifecycle that readOnlyHint=false alone does not convey.

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?

One dense paragraph, front-loaded with purpose then scope, volume limits, and consent. Every clause carries information, though the parenthetical challenge definition and quoted UI string add a little length without much agent utility.

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?

With annotations and an output schema present, the description supplies the remaining agent-critical context — hosting scope, 1–14 question limit, question kinds, review-before-publish, and consent gating. Nothing needed to call it correctly is 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 where, kind, and the nested question shape. The description only echoes what the schema states (multiple_choice or closest_wins, 1–14 at a time), adding no new parameter meaning.

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 — suggesting questions for the daily challenge of a group/household chat/channel the person hosts — and defines the challenge concept (one question a day, answered any time, no clock). It does not explicitly contrast itself with the close sibling suggest_question, so the agent must infer the boundary.

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 activation condition ("only when they ask") and a hard gating rule (refused if the person's AI setting for groups is 'off'), which is genuine when/when-not guidance. It never names an alternative tool, so the routing vs. suggest_question remains unstated.

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

read_choresHousehold: read the choresA
Read-onlyIdempotent
Inspect

The household's chores: what's due (overdue, today), whose turn it is, who took it, who did it last — first names only — and which are the person's own. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
todayYes
choresYes
canAssignYes
householdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds genuinely new behavioral context: the 'first names only' privacy constraint on returned identity data. It stops short of covering pagination or error behavior, but that is a modest gap against rich 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?

A single dense sentence with the resource named first and the returned fields front-loaded, ending with the 'Read-only' qualifier. Efficient with no filler, though the em-dash enumeration is long enough that it reads more as a field dump than a tightly prioritized statement.

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?

An output schema exists, so the description need not explain return values, yet it usefully previews the returned fields. The one parameter is fully documented in the schema and the safety traits are covered by annotations, leaving nothing an agent needs missing 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% for the single optional 'household' parameter, so the schema already explains the name-or-id format and the omit-when-single case. The description only implies the household context via its opening phrase and adds no syntax or format detail. Baseline 3 is appropriate.

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 resource (the household's chores) and enumerates exactly what it returns: due/overdue items, turn ownership, who took/did it last, and the person's own chores. This distinguishes it cleanly from siblings like read_dinners, read_shopping_list, and the write-side mark_chore_done.

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 by the content enumeration and the 'Read-only' tag, but there is no explicit when-to-use statement, no mention of the complementary sibling mark_chore_done, and no conditions or exclusions. An agent can infer intent but is given no routing guidance.

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

read_commentsComments under a postA
Read-onlyIdempotent
Inspect

The comments under one post (newest 50), as the channel's people see them — each with its commentId, words, when, and who (named across the age line by first name only, as the app does). Hidden ones are marked. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesFrom list_posts.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
postIdYes
canHideYes
commentsYes
commentsOffYes

TDQS

A3.9/5.0
Behavior4/5

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

On top of annotations that already declare the read-only/safe profile, the description discloses useful behavioral traits: a hard 50-item cap, that only the newest comments appear, that hidden comments are flagged, and the first-name-only naming rule across the age line. It stops short of explaining pagination or how to reach older comments.

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 that names the resource, the limit, and the return fields with no filler. The em-dash clause is slightly run-on but every clause carries 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?

For a one-parameter read tool with an output schema and full safety annotations, the description is largely complete: it covers scope, limit, field shape, and visibility marking. Only pagination/access to older comments is unaddressed.

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 there is a single required postId already documented as 'From list_posts.' The description's 'under one post' adds little beyond the schema, so the baseline 3 applies.

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 resource and scope ('the comments under one post') plus concrete return detail (newest 50, commentId, words, when, who). The framing 'as the channel's people see them' with 'Hidden ones are marked' distinguishes it from a moderation-oriented sibling like moderate_comment.

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: the 'one post' scoping and the schema's 'From list_posts' hint at the prerequisite, but the description never says when to reach for this tool versus siblings such as list_posts or read_conversation, nor any when-not condition.

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

read_conversationRelay: read a conversationB
Read-onlyIdempotent
Inspect

Read messages in one conversation (oldest→newest; pass before = olderCursor for earlier ones). Marks it read. Each message says who wrote it — the person, or an agent. Relay faithfully; if anything matches the flag list in relay_status rules, call flag_conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
beforeNoolderCursor from a previous call, to page back.
conversationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
withYes
closedYes
contextYes
myAliasYes
messagesYes
iRevealedYes
agentPausedYes
olderCursorYes
iWantFriendsYes
theyRevealedYes
conversationIdYes
theyWantFriendsYes

TDQS

B3/5.0
Behavior1/5

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

The description states 'Marks it read,' which is an explicit state mutation, while the annotations declare readOnlyHint=true (does not modify its environment). This is a direct contradiction. It also omits how errors, large conversations, or repeated reads interact with that side effect.

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 core action, then layers paging, side-effect, and routing instructions in compact sentences. Slightly dense (four distinct ideas packed in three sentences) but no wasted prose.

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?

With an output schema covering return values and annotations covering the safety profile, the description supplies the paging mechanic and flag routing, which is useful. It still leaves the sibling-selection question and the exact consequences of the read-receipt side effect unresolved.

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 50% (conversationId is undocumented, `before` is documented). The description adds real meaning by explaining `before` as the olderCursor used to page back and by specifying oldest→newest ordering, but does not expand on conversationId. 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 — 'Read messages in one conversation' — and adds scope detail ('oldest→newest'). It is clearly differentiated from list-oriented siblings like list_conversations and read_unread by operating on messages within a single conversation, though it never names a 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 Guidelines3/5

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

Gives conditional routing to one alternative ('if anything matches the flag list in relay_status rules, call flag_conversation') and usage guidance for paging ('pass before = olderCursor'). However it never says when to choose this over read_unread, pro_conversations, or list_conversations, so sibling selection is left mostly to inference.

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

read_dinnersHousehold: read the week's dinnersA
Read-onlyIdempotent
Inspect

The household's dinners for one week (Monday–Sunday): each day's chosen dinner, the suggestions with who suggested them (first names) and their 👍, plus the household's allergies/preferences line. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNoAny day in the week, YYYY-MM-DD, e.g. 2026-10-05. Default: this week.
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
daysYes
foodYes
noteYes
todayYes
canChooseYes
householdYes
weekStartYes
canSuggestYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/no-destructive, so 'Read-only' is largely redundant. The description does add value beyond structured fields by disclosing the exact composition of the payload, including the privacy-relevant detail that suggesters appear as first names and that allergy/preference lines are included.

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 dense sentence, front-loaded with the resource and its scope before detailing the payload. No wasted framing, though the long enumeration makes it slightly harder to scan than a split two-sentence form.

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?

With an output schema present, annotations covering the safety profile, and 100% schema coverage on both optional parameters, the description supplies everything else an agent needs: the timeframe semantics and payload composition. Nothing material is 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 both parameters (week, household) are already documented with format examples and defaults. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 ('the household's dinners for one week') and enumerates the payload: each day's chosen dinner, the suggestions with suggester first names and 👍, plus the allergies/preferences line. That scope plus the 'Monday–Sunday' frame cleanly separates it from siblings like suggest_dinner (write) and read_household_calendar.

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 explicit statement of when to call this versus suggest_dinner or read_household_calendar, and no prerequisites are given. The only contextual cue is 'Default: this week' buried in the schema, which is parameter guidance rather than usage routing.

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

read_household_calendarHousehold: read the calendarA
Read-onlyIdempotent
Inspect

The household calendar for one week: the household's own events, what members chose to share of their own week, shared school days, and the children's club sessions — each as date, time, title, who (first names) and kind (home / shared / school / club). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNoAny day in the week, YYYY-MM-DD, e.g. 2026-10-05. Default: this week.
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
todayYes
canAddYes
entriesYes
householdYes
weekStartYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already carry the full safety profile (readOnlyHint, idempotentHint, destructiveHint=false, closed world), so the trailing 'Read-only' is largely redundant. The description does add genuinely non-structured behavior: events shown are only 'what members chose to share', a data-visibility/privacy nuance an agent could not infer from annotations or 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?

A single front-loaded sentence enumerating the payload, closed with a short safety note. Efficient and well ordered, though the long em-dash list makes the kind/field details slightly harder to scan than separate sentences would.

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 no further explanation, and both optional parameters are fully specified in the schema. Scope, composition and read-only nature are covered; only the missing sibling-routing guidance keeps it from being 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%, and the schema already documents the YYYY-MM-DD week format, its default, and the household-name/householdId lookup. The description only echoes the one-week scope, adding little beyond the structured fields, so the baseline 3 applies.

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?

A specific verb+resource ('the household calendar for one week') followed by an explicit inventory of what it contains: the household's own events, members' shared items, school days, and club sessions, each with date, time, title, who and kind. That composition is distinctive enough to separate it from personal-calendar siblings like read_schedule or events without opening a schema.

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 never states when to pick this tool over the many neighbouring read tools (read_schedule, events, list_upcoming, read_chores). Scope is implied by the weekly framing, but there is no explicit when/when-not or alternative routing guidance.

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

read_modelRead a collaboration modelA
Read-onlyIdempotent
Inspect

Read a Hunchful collaboration model: its hunches (axis, pole, confidence), the axis ids you can refine, and how you're connected. Start here. With OAuth, omit modelId to read the connected person's own model.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelIdNoModel id. Omit when connected via OAuth to use the person's own model.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlsYes
renderYes
hunchesYes
modelIdYes
guidanceYes
connectedAsYes
constraintsYes
openHunchesYes
howToConnectNo
libraryVersionYes
canApplyDirectlyYes
refinablePatternIdsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds useful context beyond that: the OAuth-dependent behavior of modelId and a hint that this is the discovery step before refining axis ids. No limits or auth caveats beyond OAuth, hence 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.

Conciseness4/5

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

Two sentences, front-loaded with the core action and payload contents, then the OAuth conditional. No wasted words; "Start here" is a terse but effective fragment.

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 read-only, fully-annotated tool with 100% schema coverage and an output schema, the description covers everything an agent needs: what it returns, that it's the starting point, and the OAuth-dependent parameter behavior. Return-value details are correctly left to the output schema.

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% for the single optional modelId, and the schema already documents the OAuth-omission semantics. The description restates that behavior rather than adding new syntax or format detail, so the baseline of 3 for full schema coverage 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+resource ("Read a Hunchful collaboration model") and enumerates the payload contents: hunches with axis, pole, confidence, refinable axis ids, and connection info. It's clearly distinguishable from mutating siblings like add_hunch or apply_refinement, though it doesn't explicitly name an alternative.

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?

"Start here" positions the tool as an entry point, and the OAuth clause gives a concrete conditional (omit modelId to read the connected person's own model). It stops short of naming when NOT to use it or pointing to a specific alternative, so it's strong but not exhaustive.

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

read_profileProfiles: read one (the owner sees it)A
Idempotent
Inspect

Read one member's whole Profile & CV by @handle (experience, education, skills, languages, links, and the parts of their cognitive model they chose to show). The person whose profile you open sees that it was opened — as "'s agent", with the date. Tell your person that in plain words before the first read ("The person sees that you looked"), then call read_profile again with acknowledged: true. There is no anonymous mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThe @handle from search_profiles.
acknowledgedNotrue once your person has been told that the profile's owner sees the read.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeYes
profileNo
needsNoticeYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and idempotentHint=true; the description supplies the reason — the read is disclosed to the profile owner as '<your person>'s agent' with the date — which is exactly the behavioral context an agent cannot infer elsewhere. This also explains why a nominally 'read' tool is not read-only, so it reinforces rather than contradicts 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?

Purpose is front-loaded in the first sentence and the consequential disclosure requirement follows immediately. The acknowledgment instruction is spread over three sentences with some restatement ('Tell your person that in plain words' / 'The person sees that you looked'), but nothing is wasted.

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?

An output schema exists, so return values need not be described. Given a 2-parameter tool with full schema coverage, the description covers everything an agent needs: what it fetches, the visibility consequence, and the required confirmation sequence.

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 goes beyond the schema by explaining the workflow meaning of acknowledged (the second call after telling your person), not just its definition. Handle semantics are only summarized as coming from search_profiles, which the schema already 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 gives a specific verb and resource ('Read one member's whole Profile & CV by @handle') and even enumerates what the record contains (experience, education, skills, languages, links, cognitive model). It is unambiguous what the tool returns, though it never names a sibling such as search_profiles or pro_profile to draw the boundary explicitly.

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?

It lays out an explicit two-step procedure: tell your person first, then call again with acknowledged: true. It also states the exclusion directly ('There is no anonymous mode'), so there is no ambiguity about when or how this tool is appropriate.

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

read_scheduleSchedule: a group's weekA
Read-onlyIdempotent
Inspect

A group's week as its leader sees it — every session (training, match, show, other: date, time, place, cancelled or moved) with how many are coming, can't come and haven't answered, plus the leader's short summary of the coming days. For a group the person LEADS. Use the session's key with who_is_coming and change_session. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNoAny date in the week, YYYY-MM-DD, e.g. 2026-10-12. Default: this week.
groupNoA group the person leads — its name, e.g. "P13" or "8B" (add the förening's name if several share it, e.g. "Löparklubben P13"), or its groupId from list_personas. May be left out when they lead exactly one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
daysYes
noteYes
groupYes
startYes
todayYes
summaryYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds value beyond that by disclosing what the payload contains (per-session attendance counts, cancelled/moved status, leader summary) and the leader-only scope, which are not encoded in any structured field. It repeats 'Read only' but adds real behavioral context.

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 resource and its contents, then closes with the practical `key` hand-off and read-only note. Dense but every clause carries information; only the redundant 'Read only.' line is strictly expendable given the annotations.

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?

An output schema exists, so return shape needn't be explained, yet the description still orients the agent on what to expect. For a 2-parameter, none-required, idempotent read with full schema coverage and clear sibling routing, nothing an agent needs to call it correctly is 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% — both `week` (date format, default this week) and `group` (name/groupId, optional when exactly one group is led) are fully documented in the schema. The description adds nothing about parameter syntax 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.

Purpose5/5

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

Names a specific verb and resource ('A group's week as its leader sees it') and enumerates the contents (sessions with dates, times, places, cancellation status, attendance counts, and a leader summary). The scoping phrase 'For a group the person LEADS' distinguishes it from leader-agnostic siblings like events or list_upcoming, so an agent can route without opening schemas.

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 downstream routing: 'Use the session's `key` with who_is_coming and change_session.' It also states the access precondition (must lead the group). It does not explicitly say when NOT to use it versus read_household_calendar or events, so it stops 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.

read_shopping_listHousehold: read the shopping listA
Read-onlyIdempotent
Inspect

The household's shopping list as the person sees it: what's still to buy (with each itemId — use those with check_shopping_items) and what was bought recently. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
openYes
householdYes
recentlyBoughtYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered and 'Read-only' in the description is partly redundant. That said, 'as the person sees it' and the split between still-to-buy and recently-bought items are genuine behavioral details about what the response contains and how the view is personalized.

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?

The description is a tight two-sentence block that front-loads what is returned and closes with the read-only qualifier. Every clause earns its place with no 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 single-optional-parameter read tool with full schema coverage, complete annotations, and an output schema, the description provides everything needed to select and invoke it. Return-value explanation is not required given the output schema, yet the content split is still summarized usefully.

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% on the single 'household' parameter, including the example name and the guidance to omit it for single-household people, so the schema carries the load. The description adds no parameter-level detail beyond that, making the baseline 3 appropriate.

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 names a specific verb (read) and resource (the household's shopping list), then enumerates its contents: items still to buy (with itemId) and items bought recently. It also distinguishes itself from the sibling check_shopping_items, which consumes the itemIds this tool returns, so an agent can tell the two apart without opening a schema.

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 frames this as the read/view operation and names check_shopping_items for the follow-up action on the returned itemIds, giving strong context for the read-then-check workflow. It stops short of explicit when-not guidance or stating prerequisites, 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.

read_topicsYour topics (Ämnen)A
Read-onlyIdempotent
Inspect

The person's topics (Ämnen) — what they've been talking to their Hunchful AI about, sorted into at most 25 topics: each topic's name, how many times it came up, when last, "what you landed in" (≤ 5 short lines), open questions (≤ 3), its subtopics (each with ≤ 3 lines of its own) and related topics. Private to the person: use it only to help THEM (e.g. to pick up where they left off), never quote it to anyone else. Read only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
topicsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint, openWorldHint=false), so the bar is lower. The description adds real non-annotation context: the data is private to the person and must never be relayed to third parties. It also bounds the payload size (≤25 topics, ≤5/≤3 lines), though it doesn't discuss freshness or caching.

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?

Purpose is front-loaded and there is no filler, but the single sentence is heavily packed with an enumeration of return fields that largely duplicates the existing output schema. The privacy rule, the most decision-relevant sentence, is buried at the end rather than surfaced earlier.

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 the description needn't enumerate return fields, yet its loose summary is harmless and useful for selection. The privacy constraint fills the main gap that annotations leave open for a personal-data read tool. No pagination or empty-result behavior is mentioned, which keeps it just short of 5.

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?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly implies no filtering arguments are needed to fetch the full topic set.

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 gives a specific verb+resource (read the person's AI-derived topics) and precisely characterizes the payload: at most 25 topics, each with name, count, recency, landed-in lines, open questions, subtopics and related topics. 'Topics (Ämnen)' is clearly distinguishable from siblings like read_conversation, read_profile or list_personas, which cover raw conversations or static identity data rather than synthesized topic summaries.

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 states when to use it ('use it only to help THEM, e.g. to pick up where they left off') and a firm exclusion ('never quote it to anyone else'), which is genuine usage guidance. It does not name an alternative tool for when the agent needs raw conversation data instead (e.g. read_conversation), 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.

read_unreadRead my unread messagesA
Read-only
Inspect

Read the person's UNREAD messages across their conversations in one call (newest conversations first; at most 20 messages per conversation, 8 conversations). Marks them read. Use for "what did people write?" / "read my unread" — then summarize for the person in their words (who wrote, what they want) and ask what to reply. Each conversation you read gets a line in the person's Min AI for that chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxConversationsNoDefault 5. Example: 3

Output Schema

ParametersJSON Schema
NameRequiredDescription
moreYes
noteYes
conversationsYes

TDQS

A4.1/5.0
Behavior4/5

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

Discloses the state-mutating side effect ('Marks them read') and the side effect of writing a line into Min AI for each chat — this is real behavioral context. Notably annotations claim idempotentHint=false and readOnlyHint=true, yet the description says it marks messages read (a mutation); readOnlyHint=true is arguably contradicted by a state-changing write to message read-status. This is a partial contradiction worth flagging.

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 core action and scope, then guidance and side effects. Reasonably tight, though the parenthetical caps plus the summarizing flow plus the Min AI line make it a dense run-on; still, every clause carries 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?

Covers action, limits, side effects, and the recommended agent follow-up. Output schema exists so return-shape need not be explained. The main gap is not clarifying relationship to read_conversation for single-conversation cases.

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 the single optional param (maxConversations, default 5, max 8) is documented in-schema. The description mentions the '8 conversations' cap but doesn't explain maxConversations semantics beyond what the schema already states, so baseline 3.

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 with scope: reads UNREAD messages across conversations, newest first, with explicit caps (20 messages/conversation, 8 conversations). Clearly distinguishes itself from read_conversation (singular, one conversation) via the 'across their conversations in one call' phrasing.

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 trigger phrases ('what did people write?' / 'read my unread') and the follow-up flow (summarize, then ask what to reply). Doesn't name the sibling alternative read_conversation as a fallback for single-conversation reads, but the batch scope makes the boundary fairly inferable.

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

redeem_friend_codeRelay: use a friend codeAInspect

Use a friend code someone gave the person (looks like ABCD-1234 or a hunchful.io/f/… link) to send them a friend request (status 'requested' — they approve it; once they do, a conversation opens and the person is told). Only when the person asks. If their policy says new friends need confirmation, you get a link for them instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe code, e.g. ABCD-1234, or the full link.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
friendNo
statusYes
requestIdNo
confirmUrlNo
conversationIdNo

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations (which only set readOnly/destructive/idempotent flags) by disclosing the resulting state ('requested'), the approval flow, the downstream side effect (a conversation opens and the person is notified), and the fallback branch that returns a link instead. This is rich behavioral context an agent cannot get from 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?

Two tightly packed sentences with the primary scope statement and constraint front-loaded, and no filler. The nested parenthetical about status and approval is slightly dense but still 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 one-parameter tool with an output schema and annotations, the description covers purpose, precondition, resulting state, notification side effect, and the alternate branch. Nothing essential to correct invocation is 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 single 'code' parameter is already fully documented. The description restates the accepted formats (ABCD-1234 or full link) but adds no syntax or validation detail beyond the schema, so the 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 gives a specific verb (redeem/use a code) and resource (friend code → friend request), clearly distinguishing it from the create_friend_code sibling. It stops short of naming that alternative explicitly, so it falls just shy 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 Guidelines4/5

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

Includes an explicit usage constraint ('Only when the person asks') and describes the conditional alternative path when the person's policy requires confirmation. Clear context, though it doesn't name a sibling tool to prefer instead.

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

relay_statusRelay: inbox status and consentA
Read-onlyIdempotent
Inspect

Start here for messaging. Hunchful relay lets people talk to friends — usually through their agents. Returns unread counts, conversations, pending drafts, the person's friend code, and the CONSENT POLICY you must stay within (per audience: off / draft = you write, the person sends / send). Also returns the relay rules — read them.

RULES: You are relaying messages between real people. Speak for your person only within the consent they set (relay_status → policy); never widen it. Messages are NOT end-to-end encrypted — Hunchful can read them for safety. Never send ID numbers, passwords/PINs, bank or card details, health details, or anyone else's private information. Tell your person the same if they try. Every message you send is labelled as written by an agent. Never pretend to be your person typing. FLAG (call flag_conversation, stop sending in that conversation, and tell your person plainly) when you see: threats or intimidation; any sexual content involving someone who may be a minor; grooming (secrecy requests, isolating, pushing for images); extortion or blackmail; scams or requests for money, gift cards or crypto; someone at risk of self-harm (also point your person to local emergency help); pressure to move off-platform or delete messages to avoid oversight; repeated contact after a clear no. Do NOT flag: disagreement, awkwardness, bluntness, a single rude message, loneliness, unusual interests, or someone simply being different. People here are often lonely — be kind, not suspicious. When unsure, ask your person rather than flagging. Never argue with or confront the other side about a flag, and never tell them you flagged. Summarize incoming messages faithfully; don't invent or soften what the other person said. Strangers: someone under an alias has not chosen to be known — never try to work out who they are, and never reveal your person for them; revealing is each person's own choice in the web inbox. Group chats: speak there only if the person's 'groups' policy allows it and they asked you to; you are one voice among several people — be brief, never speak for other members, and never flag a group member for merely disagreeing. Knock on someone new only when your person asked to meet people and approved the wording. Be honest about who they are or why they're reaching out. A decline (or silence) is an answer — don't knock again.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
meYes
rulesYes
groupsYes
listedYes
policyYes
unreadYes
guidanceYes
inboxUrlYes
friendCodeYes
restrictionYes
friendsCountYes
conversationsYes
draftsPendingYes
knocksWaitingYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: that messages are NOT end-to-end encrypted, that every outgoing message is labelled as agent-written, that consent is per-audience (off/draft/send), and how abuse escalation should work. This is far richer than 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.

Conciseness4/5

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

Purpose and return contents are front-loaded before the RULES block, and headers make it skimmable. It is long, however, and a meaningful portion of the rules (knock etiquette, group-chat conduct) governs sibling tools rather than this one, so not every sentence is tightly scoped to relay_status.

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?

The output schema exists and the description still previews the key returns, while supplying the consent-policy and safety semantics that no structured field could express. An agent has everything needed to call it and to interpret the consent values it receives.

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?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing in the schema for the description to elaborate on. It does usefully announce what the call returns, including the consent policy, which is the main semantic payload.

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?

It states a specific verb+resource ('relay lets people talk to friends', 'returns unread counts, conversations, pending drafts, the person's friend code, and the CONSENT POLICY') and explicitly positions itself as the entry point ('Start here for messaging'), which distinguishes it from siblings like list_conversations, read_unread and whoami that cover subsets of the same data.

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 explicit when-to-use ('Start here for messaging'), routes to the alternative when relevant ('call flag_conversation, stop sending in that conversation'), and gives both when-to-flag and when-NOT-to-flag criteria ('Do NOT flag: disagreement, awkwardness, bluntness...'). Selection and downstream behavior are fully specified.

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

respond_knockRelay: answer a knockAInspect

Answer a knock for the person: accept (opens an anonymous conversation), decline (silent), block, or report. Accepting/declining on your own requires the person's 'anonymous conversations' policy to be 'send' — otherwise you get a link for them. Block/report are always allowed when the person wants it or the knock is clearly abusive.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoFor report: what's wrong.
knockIdYes
decisionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
statusYes
confirmUrlNo
conversationIdNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare the generic write profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds non-obvious behavior the annotations cannot convey: that accept creates an anonymous conversation, that decline is silent, that the policy setting changes the outcome, and the fallback link behavior. It stops short of covering auth requirements for relaying on someone's behalf or what the response contains.

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 dense sentences, front-loaded with the action and its outcomes before the conditional policy detail. The middle sentence is slightly tangled but every clause carries operative information; nothing is 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?

For a state-changing tool with annotations covering safety and an output schema covering returns, the description supplies the missing pieces: side effects of each decision and the policy gate. The main omission is the provenance/semantics of knockId, which matters for correct invocation.

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 only 33% – only 'reason' is documented in the schema. The description does usefully explain the semantics of each 'decision' enum value and when each is allowed, which is value beyond the bare enum. However, knockId (a required identifier) is left unexplained, including where the agent should obtain it, so the gap is only partially compensated.

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 (respond/answer) and resource (a knock) and enumerates the four possible decisions with a short gloss on each (accept opens an anonymous conversation, decline is silent), so an agent knows exactly what the call does. It does not explicitly name the siblings it is distinct from (knock, list_knocks, answer_follow_request), so it falls short of the 5 bar.

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 real conditional guidance: accept/decline on the person's own behalf requires their 'anonymous conversations' policy to be 'send', otherwise the result is a link to forward; block/report are always permitted when the person wants it or the knock is clearly abusive. These are preconditions rather than an explicit alternative-tool routing, so 4 rather than 5.

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

rsvp_eventEvents: sign up or cancelA
DestructiveIdempotent
Inspect

Sign the person up for — or cancel their spot at — a channel event (one they can see in Hunchful). ONLY with their own answer: ask first ("Löpsöder runs Saturday 09:00 — shall I sign you up?"). Signing up is always the person's own tap in Hunchful (spots, the waitlist and any price are shown there): you get a card in their Stream that opens the event. Cancelling follows their policy for the organiser — 'groups' for a club's or class's channel, else 'friends': 'draft' → a card that opens the event, 'send' → cancelled now (the spot goes to the first on the waitlist, who is told), 'off' → refused. For plans and meetups use vote_plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
answerYes"sign_up" or "cancel".
confirmNoCancelling gives the spot away: true once the person confirmed. Example: true
eventIdYesThe event's id (eventId) — from list_upcoming (kind event or hosting) or a channel event link …/channel/<id>?post=<eventId>.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
titleYes
itemIdYes
statusYes
eventIdYes
myStatusYes
whenTextYes
spotsLeftYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so safety is partially covered; the description nonetheless adds real behavior beyond that — signup happens via the person's own tap, the agent only gets a Stream card, cancellation releases the spot to the first waitlisted person who is notified, and refusal semantics. The introduction of 'draft'/'send'/'off' policy vocabulary that maps to no parameter slightly muddies rather than clarifies.

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 action is front-loaded, but the body is a dense run-on mixing consent rules, Stream-card mechanics, and an organiser-policy taxonomy that isn't exposed in the schema. Several clauses (group/friends policy, draft/send/off) do not obviously earn their place for an agent trying to call a 3-parameter 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?

With an output schema and safety annotations already provided, the description covers the remaining agent-critical context: consent requirement, the difference between a card-only signup and an immediate cancellation, and the alternative tool. The unmapped policy vocabulary is a minor loose end but not a blocking gap.

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 answer, confirm and eventId (including where to source eventId). The description reinforces the consent/confirm workflow but adds no field-level format or syntax detail, and the organiser-policy terms it discusses correspond to no parameter at all.

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 pair (sign up / cancel) and resource (a person's spot at a channel event), plus the scope qualifier 'one they can see in Hunchful'. It explicitly carves out the neighbouring case ('For plans and meetups use vote_plan'), so an agent can distinguish it from vote_plan and event_signup_status without opening schemas.

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 explicit when-to-use (channel events), when-not (plans and meetups → vote_plan), and a precondition (must act only on the person's own answer, ask first, with a concrete example prompt). That is about as prescriptive as routing guidance gets.

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

schedule_postChannels: set a draft's timeA
Idempotent
Inspect

Note WHEN the person wants a post draft (from create_post_draft) to go out: 5 minutes to 30 days ahead. The time is put on their draft card; they schedule it in Studio with one look — a channel post is only ever published or scheduled by the person in Hunchful, even when this AI may otherwise send directly. Consent: their 'groups' policy ('off' refuses). Only with the person's go-ahead on the time.

ParametersJSON Schema
NameRequiredDescriptionDefault
atYesISO 8601 with the person's UTC offset, e.g. 2026-10-07T09:00:00+02:00.
draftIdYesThe draftId create_post_draft returned, e.g. "Qm3xT0a9bW2cD4eF5gH6iJ7k".

Output Schema

ParametersJSON Schema
NameRequiredDescription
atYes
noteYes
statusYes
draftIdYes
whenTextYes
channelIdYes
studioUrlYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare idempotent=true, destructive=false, readOnly=false, so the safety profile is partly covered. The description adds meaningful behavior beyond that: the time is placed on the draft card, the person (not the AI) actually publishes/schedules in Studio, and consent is required via the 'groups' policy. This clarifies the surprising fact that the write does not itself publish, which annotations alone would not 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 core purpose is front-loaded, but the prose is convoluted with em-dashes and parenthetical asides ('even when this AI may otherwise send directly'), making it harder to parse than necessary. The content is mostly worthwhile, but the structure is denser and less scannable than ideal.

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. The description covers the purpose, the valid time range, the consent requirement, and the key behavioral constraint that publication is done by the person. It is fairly complete for a two-parameter scheduling tool, though the when-to-use framing remains implicit.

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. The description adds genuine meaning beyond the schema by stating the allowed range (5 minutes to 30 days ahead) for the 'at' time, which the schema does not express. The draftId is only referenced implicitly through 'post draft (from create_post_draft)'.

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: recording WHEN a draft (from create_post_draft) should go out, with the 5-minute to 30-day window. It references the sibling create_post_draft, so an agent can tell it apart from drafting vs. scheduling. The phrasing 'Note WHEN... to go out' is slightly indirect but conveys 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 Guidelines3/5

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

It gives some usage conditions: only with the person's go-ahead on the time, and the 'groups' policy ('off' refuses) gates the action. However, it never explicitly says when to use this versus alternatives or states prerequisites in a clean when-to-use form; the guidance is implied and buried in dense prose.

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

search_profilesProfiles: search members' CVsA
Read-onlyIdempotent
Inspect

Search Hunchful members' Profile & CV pages (adults who chose Members or Public) by skills, role, place, free text and collaboration traits. Returns only the public fields (name, headline, city/region, top skills, a short model teaser) — not logged. The person must be a signed-in adult; within their relay 'search' consent; rate-limited. Open one with read_profile (the owner sees that).

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
textNoFree text, e.g. 'product designer fintech'.
limitNo
placeNoCity or region.
skillsNoEvery skill must match.
traitsNoCollaboration traits as '<patternId>:<A|B>' (see read_model).

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
resultsYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (which already declare readOnly/idempotent/non-destructive). It discloses return scope (only public fields, not logged), consent and auth requirements, rate-limiting, and the notable side effect that opening a result via read_profile is visible to the owner.

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 tight sentences, front-loaded with the core purpose, followed by return/visibility scope, prerequisites, and the follow-up action. No filler; every clause carries information.

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 search tool with an output schema, the description still covers the essential non-schema facts: result field scope, consent/auth preconditions, rate-limiting, and the read_profile hand-off. Nothing an agent needs to invoke it correctly is 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?

The description enumerates the searchable facets (skills, role, place, free text, collaboration traits) that map to the schema properties, and the schema covers 67% of params with its own descriptions. It adds little beyond the schema and says nothing about 'limit' or matching semantics, so a 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 (search) and resource (Hunchful members' Profile & CV pages) and scopes it precisely to adults who chose Members or Public. It separates itself from read_profile (the follow-up action) but does not distinguish itself from other search-like siblings such as find_people, find_matches, or list_members.

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 context: search by skills/role/place/free text/traits, then 'Open one with read_profile.' Also lists prerequisites (signed-in adult, relay 'search' consent). It lacks explicit when-not-to-use guidance versus the other people-finding siblings, so it stops 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.

send_messageRelay: send a messageAInspect

Send a message on the person's behalf — to a friend, in an anonymous conversation, or in one of their group chats (conversationId g_, from relay_status.groups). Prefer send_to_conversation (it resolves names safely). It is labelled "via ". Stays within consent: friends, anonymous talks and group chats are the person's private life, so this saves a draft they send with one tap (you get a confirmUrl) — never sent in their name; off in their policy → refused. NOT end-to-end encrypted — never include ID numbers, passwords/PINs, bank/card details or health details; such messages are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoA friend's @handle or exact name (if unique).
bodyYesThe message, max 4000 characters. Write as the person would want to be represented.
conversationIdNoFrom list_conversations. Or use `to`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
statusYes
draftIdNo
messageIdNo
confirmUrlNo
conversationIdNo

TDQS

A4.8/5.0
Behavior5/5

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

With annotations only covering the safety profile (readOnly=false, destructive=false), the description adds substantial beyond-schema context: it saves a draft with a confirmUrl rather than sending in the person's name, is refused if their policy disables it, is labelled 'via <app name>', is not E2E encrypted, and rejects sensitive content like PINs/bank/health data. This is unusually rich behavioral disclosure.

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 purpose, then the alternative, then safety constraints in a logical order. It is dense and somewhat run-on, but nearly every clause carries safety-critical information that 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?

An output schema exists, so return values need not be detailed. For a consent-gated messaging tool the description covers the confirmation flow, policy refusal, encryption limits, and content restrictions — everything an agent needs to invoke it correctly and safely.

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 goes further by specifying the conversationId format (g_<groupId>) and its source (relay_status.groups), which the schema does not fully convey. The only gap is the mild divergence from the schema's stated source (list_conversations vs relay_status.groups).

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 ('Send a message') plus the exact channels it targets (friend, anonymous conversation, group chat). It explicitly contrasts itself with the sibling send_to_conversation, so an agent can route without opening either schema.

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?

Explicitly names the preferred alternative ('Prefer send_to_conversation (it resolves names safely)') and gives the conditions that select this tool (group chats via conversationId g_<groupId>). When-to-use, when-to-prefer-alternative, and the consent gate are all stated.

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

send_to_conversationSend or draft into a conversationAInspect

Send something INTO one of the person's conversations — a friend, a group chat, the family/household chat — e.g. "summarize this for Elin" or "tell the family dinner is at 6". to is a name, @handle, group name or conversationId; it's matched against the person's OWN conversations and never guessed: if several fit you get status 'ambiguous' with candidates — ask the person which one, then call again with that conversationId. The message is labelled "via " for everyone, and a line lands in the person's private Min AI panel for that chat (with Undo for 15 minutes).

CONSENT: these are the person's PRIVATE conversations, so this always saves a DRAFT they send with one tap (they get a notification) — you never send in their name here; the result says so, tell them. A conversation that includes someone under 18 is a draft too, always. Same rules as a message typed in the app (blocks, read-only chats, moderation). Not end-to-end encrypted: never include ID numbers, passwords/PINs, bank/card or health details.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesWho/where: a friend's name or first name, an @handle, a group's name, or a conversationId. Example: "Elin"
modeNoKept for older callers: a private chat always gets a draft the person sends. "draft" says so explicitly.
textYesThe message, in the person's voice — plain text; short Markdown like *bold* and lists is fine. Example: "Hej Elin! Kort sammanfattning av artikeln: …"
aboutNoWhat this is, in a few words, for the person's Min AI record. Example: "a summary of the article"
linksNoOptional links, added under the text.
replyToNoAnswer one message in the chat (shown quoted above yours, like the app's Svara): its id from read_conversation or read_unread. Pass `to` as that conversation's conversationId. Example: "Xk3p9QwErT2yUi8oPa1s"

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYes
noteYes
statusYes
draftIdNo
messageIdNo
undoUntilNo
candidatesNo

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false) by disclosing that this always saves a draft the person sends with one tap, that a notification and an Undo window of 15 minutes exist, that messages are labelled "via <app name>", that under-18 conversations force drafts, and that blocks/read-only chats/moderation apply. It also warns the channel is not end-to-end encrypted and lists content that must never be included.

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?

Long but front-loaded, with the core action in sentence one and a clearly labelled CONSENT block carrying the constraints. Nearly every sentence adds decision-relevant information, though the density is close to the limit for a tool description.

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 write-shaped tool with annotations and an output schema already present, the description covers the remaining risk surface an agent needs: draft-only behavior, the consent/notification model, ambiguity handling, and content restrictions. Nothing material 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 description coverage is 100%, so a baseline of 3 applies, but the description adds real semantics the schema does not: `to` is matched only against the person's own conversations, is never guessed, and yields status 'ambiguous' with candidates when several match. The `mode` parameter is left to the schema, which is acceptable since it is documented there.

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 and resource: sending/drafting a message INTO a named person's own conversation, with concrete example phrasings. It is clear what the tool does, but it never distinguishes itself from the adjacent siblings send_message and message_group, which appear to cover overlapping channel/group targets.

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 trigger examples ("summarize this for Elin", "tell the family dinner is at 6") and an explicit recovery procedure for the ambiguous-target case: ask the person, then re-call with the conversationId. It stops short of stating when to prefer a sibling such as send_message or message_group instead.

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

suggest_dinnerHousehold: suggest a dinnerAInspect

Suggest a dinner for a day in the household — with choose: true it becomes that day's dinner, but only where the person picks dinners (in a family the parents usually do) and only when they asked for that. Check read_dinners' allergies/preferences first. Consent: the AI setting for groups — 'draft' puts a one-tap card in their Stream, 'send' does it now, 'off' refuses; a household with someone under 18 is always a draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesThe day, YYYY-MM-DD, e.g. 2026-10-09.
titleYesThe dish, short, e.g. "Tacos" or "Pasta carbonara".
chooseNotrue = make it that day's dinner (only if the person picks dinners there and asked). Default false: a suggestion others can 👍.
householdNoThe household's name or householdId from list_households, e.g. "Hemma". Leave out when the person has only one.
ingredientsNoOptional, up to 20, e.g. ["tortillas", "minced meat", "salsa"].

Output Schema

ParametersJSON Schema
NameRequiredDescription
whyNoWhy it's a draft (said to the person).
dateYes
noteYes
titleYes
chosenYes
itemIdNoThe Stream card, when it's a draft.
statusYes
householdYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare this is a non-read-only, non-destructive write; the description adds substantive context beyond that: the consent model (draft puts a one-tap card in the Stream, send does it now, off refuses) and the hard rule that a household with someone under 18 is always a draft. These behavioral constraints are exactly the kind of context annotations cannot carry.

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?

Purpose is front-loaded and every clause carries non-redundant information (choose semantics, prerequisite, consent modes). It is dense and reads as a run-on with multiple semicolon-joined clauses, which costs a little readability, but nothing 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?

With an output schema present and annotations carrying the safety profile, the description still supplies everything an agent needs: prerequisite (read_dinners), permission constraints, and the consent/under-18 behavior. Nothing material to 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 100%, so the baseline is 3; the description marginally exceeds it by qualifying the choose parameter's real-world constraint (only where the person picks dinners and only when asked), which the schema's own description only hints at. Other parameters (date, title, household, ingredients) are fully handled by 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 (suggest a dinner) and resource scope (for a day in the household), and clarifies the escalation to actually choosing that day's dinner via choose: true. An agent can distinguish this from read_dinners and other household tools without opening any schema.

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 explicit conditions: choose only works where the person picks dinners (e.g. parents in a family) and only when they asked for it, and directs the agent to check read_dinners' allergies/preferences first. It also spells out the consent flow selecting between draft/send/off, which is clear when-to-use guidance.

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

suggest_questionSuggest a new question (queued)AInspect

Suggest a NEW question/axis for the person — a dimension their model doesn't capture (situational axes welcome: name it 'When '). It lands in their Hunchful inbox and, by default, emails them; nothing is added until they answer. Authorized by OAuth (own model) or a contributionToken. Use sparingly — about once a week at most.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoYour name, e.g. "claude".
whyNoWhy you're asking — what you observed (no quotes, no names).
nameYesShort axis name, e.g. "When plans change suddenly".
poleAYesPole A label — one way of working.
poleBYesPole B label — the other way.
modelIdNo
questionYesThe question, addressed to the person.
contributionTokenNoScoped propose-only key, if not connected via OAuth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
statusYes
inboxUrlYes
notifiedYes
proposalIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the side effects: it lands in the person's inbox, emails them by default, and nothing is added until they answer. It also states the two auth paths (OAuth vs contributionToken). It does not address duplicate/re-submission behavior despite 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?

A single dense paragraph with the core action front-loaded and no filler sentences. Em-dash parentheticals keep it tight, though the auth clause at the end is slightly tacked-on rather than integrated.

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 no explanation, and the description covers the mutation's deferred effect, notification behavior, and auth requirements. For an 8-param write tool it is nearly complete, missing only edge-case/error behavior.

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 88%, so the schema already documents nearly every parameter including the field meanings and the contributionToken scope. The description only reinforces the axis-name convention, adding little beyond the structured fields; baseline 3 applies.

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 (suggest a NEW question/axis) and immediately qualifies scope: 'a dimension their model doesn't capture.' The 'When <situation>' naming convention further pins down what counts as a valid suggestion, distinguishing it from generic add_* siblings.

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 frequency guidance ('Use sparingly — about once a week at most'), which is real when-to-use context. It does not name an alternative sibling (e.g. add_hunch) or state when NOT to suggest, so it stops short of the 5 tier.

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

update_homeChange a home's name, description or who can joinAInspect

Change a home the person runs: its name, its description (a community or company), and who finds it and how people join (listed in Utforska, open / ask / invite). A community's age (adults ↔ all ages) needs confirm: true — adults only takes its under-18s out; all ages is reviewed again before teens see it. In a förening or an all-ages community the change is a card they confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNocommunity only — confirm: true.
cityNoförening only.
homeNoWhich home — its name (e.g. "Löparklubben") or its id from list_homes. May be left out when the person runs exactly one.
joinNo
nameNo
sportNoförening only.
listedNo
confirmNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
homeYes
noteYes
itemIdYes
statusYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations cover the safety profile (not read-only, not destructive, not idempotent, closed-world), so the bar is lower, and the description still adds real behavior: age changes require confirm:true, adults-only removes under-18s, all-ages triggers re-review before teens see it, and förening/all-ages changes go through a confirmable card. This is meaningful side-effect disclosure beyond 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.

Conciseness3/5

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

Front-loads the core purpose in the first clause, but the following sentences are dense and rely on untranslated domain terms (förening, Utforska) and an oblique phrase ('a card they confirm'). Information is packed rather than layered, so it is compact but not easily parsed.

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?

With an output schema present, return values need not be described, and annotations carry the safety profile. However, a 9-parameter mutation with 0 required params and 44% schema coverage leaves several fields (name, description, listed, confirm) under-explained, so the description is only adequate for the tool's complexity.

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 only 44%, so the description must compensate and does so partly: it explains that age needs confirm:true and that join values are open/ask/invite and that listed controls presence in Utforska. But name, description, confirm, city and sport get no semantic elaboration beyond the schema's terse hints.

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 (change) and resource (a home the person runs), then enumerates the mutable facets: name, description, directory listing and join mode. It implicitly separates this from create_home/list_homes, though it never names a sibling. Scope is clear enough for an agent to pick it correctly.

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?

Gives conditional guidance for the age field ('needs confirm: true') and notes that in a förening or all-ages community the change becomes a confirmation card. It never says when to choose this over create_home or list_homes, nor whether the caller must run the home. Usage is implied rather than spelled out.

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

upload_mediaUpload a photo or clip for a postAInspect

Bring a photo or a short clip for a post (then pass its mediaId to create_post's media). Two ways: (1) url — a public https link to the file itself (a JPEG/PNG/WebP photo ≤ 10 MB, or an MP4/MOV/WebM clip ≤ 25 MB and ≤ 60 s with durationS and a posterUrl frame): Hunchful fetches it; (2) upload — if you can make HTTP requests, give its contentType and size (photos ≤ 10 MB, clips ≤ 50 MB with durationS and posterBase64), then PUT the bytes to the returned uploadUrl with exactly uploadHeaders before create_post; (3) base64 — if you can NOT reach the network (a sandbox, e.g. ChatGPT's or Claude's), send a photo's bytes inline as base64 (≤ 2 MB decoded — a JPEG at 1280 px or less; photos only, never the uploadUrl path). Only for what the person runs and may post in (as), only what they asked for, never someone else's picture without their right to it. Nothing is shown to anyone until a post with it passes the photo check; an unused upload is gone after 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
hNo
wNo
asNoWhich of what the person runs — a key from list_identities, e.g. "forening:a1b2c3d4e5" or "channel:Xy12Ab34Cd", or its name, e.g. "Löparklubben". May be left out when only one fits.
urlNoA public https link to the file. Example: "https://example.com/photos/lag.jpg"
kindNoimage (default) or video.
base64NoInstead of url/upload: the photo's bytes as base64 (a data:image/…;base64, prefix is fine), ≤ 2 MB decoded. For clients without network access.
uploadNoInstead of url: you PUT the bytes yourself to the uploadUrl you get back.
durationSNovideo: its length in seconds (≤ 60). Example: 14.5
posterUrlNovideo + url: a https link to a still frame (JPEG/PNG/WebP).

Output Schema

ParametersJSON Schema
NameRequiredDescription
asYes
kindYes
noteYes
statusYes
mediaIdYes
expiresAtYes
uploadUrlYes
uploadHeadersYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare write, non-idempotent, non-open-world, non-destructive. The description adds real operational detail beyond that: the 24-hour expiry of unused uploads, the moderation gate ('nothing is shown to anyone until a post with it passes the photo check'), the PUT-to-uploadUrl step with exact headers, and per-path size/duration ceilings. It does not disclose auth/permission requirements or failure behavior, 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?

Front-loaded with purpose, then the selection logic, then constraints; every sentence carries information for a genuinely multi-path tool. Minor flaw: it announces 'Two ways' and then enumerates three, which briefly mis-signals the 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?

An output schema exists, so return values need no explanation, and the description supplies the format limits, lifecycle, and moderation/staleness behavior an agent needs to sequence this before create_post. The uncovered `h`/`w` parameters and absent auth/permission detail keep it short of a 5 for a 9-parameter tool.

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 78% the baseline is 3, and the description pushes past it by explaining parameter interrelationships the schema states only locally: url + durationS + posterUrl for clips, upload + posterBase64, and the base64 path being photos-only. The only real gap is the bare `h`/`w` integers, which neither schema nor description explains.

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+resource ('bring a photo or a short clip for a post') and immediately states the downstream integration ('then pass its mediaId to create_post's media'), which no sibling tool does. An agent can distinguish this from create_post, schedule_post, or edit_post without opening a schema.

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 explicit routing rules: use url when you have a public link, upload when you can make HTTP requests, base64 when you cannot reach the network. It also states when-not ('never someone else's picture without their right to it', only what the person runs and asked for) and names the required follow-up call (create_post).

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

vote_planPlans: answer / RSVPB
Idempotent
Inspect

Answer a plan for the person (RSVP): coming / maybe / can't, and which options work. ONLY with the person's own answer — ask first ("Noah wants to see a film Tuesday — shall I say yes?"), never guess. Consent: gang plans follow the 'groups' policy, others 'friends' — 'draft' puts a one-tap answer card in their Stream, 'send' answers now, 'off' refuses. When everyone has answered, "most can" decides immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
rsvpYesyes = coming, maybe, no = can't.
planIdYes
optionIdsNoOption ids from get_plan that work for the person (all that work, not just one). Not needed for 'no', or when the plan has one option or is already decided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
rsvpYes
itemIdNo
leaderNo
planIdYes
statusYes
decidedNo
optionIdsYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare it is a non-readOnly, idempotent, non-destructive, non-openWorld mutation. The description adds real context beyond that: the ask-first requirement and the 'most can decides immediately' auto-resolution rule. However, the 'draft'/'send'/'off' consent modes imply a mode argument that the schema (additionalProperties: false, 3 params) does not have, which is misleading rather than transparent.

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 purpose, which is good, but the consent sentence is dense and introduces terminology ('groups'/'friends' policy, draft/send/off) that is never grounded in the tool's inputs, so it reads as noise relative to the callable surface.

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 values need no explanation, and annotations cover the safety profile. Still, the description leaves planId unaddressed and buries the actual invocation contract under consent-policy language that does not map to any parameter.

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 67%: rsvp and optionIds are already described in the schema, planId is not. The description restates the rsvp values and the 'which options work' idea without adding syntax or constraints, and says nothing about planId. Baseline 3 for a partially documented 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+resource: 'Answer a plan for the person (RSVP)', and enumerates the answer values. An agent can tell this answers an existing plan. It does not, however, differentiate itself from the sibling rsvp_event, which uses the same 'RSVP' vocabulary.

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?

Gives one strong usage constraint — 'ONLY with the person's own answer — ask first, never guess' — which is actionable. But the following sentence about 'draft'/'send'/'off' describes consent behaviour keyed to parameters that do not exist in the schema, muddying rather than clarifying when and how to invoke the tool, and no alternative tool is named.

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

whats_newWhat's new (daily check-in)A
Read-onlyIdempotent
Inspect

A short, content-light check-in: what's new in the person's Stream since a time — new cards by type and title, plans waiting for their answer (who proposed, what, the options), meetups coming up, who wrote (names only, never message text), knocks and drafts waiting, and suggestions from you still waiting for their tap. Made for a daily check: say it in two or three lines and offer ONE step towards meeting someone ("Noah wants to see a film Tuesday — shall I say yes?"). Read messages only if the person asks (read_conversation).

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoISO time of your last check. Default: 24 hours ago (max 14 days).

Output Schema

ParametersJSON Schema
NameRequiredDescription
sinceYes
streamYes
comingUpYes
guidanceYes
needsYouYes
nothingNewYes
wroteToYouYes
draftsWaitingYes
knocksWaitingYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint and the safe read profile, so the bar is lower. The description adds real behavioral context beyond that: output is 'content-light', names only are surfaced and 'never message text', and it prescribes a short two-to-three-line response with one suggested action. It doesn't cover pagination or the since-window edge behavior, but the added disclosure 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?

It is front-loaded with the core purpose ('A short, content-light check-in') and every clause carries information. The main body is one very dense, comma-chained sentence that packs seven content categories plus output-style guidance, which costs 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, so return structure needn't be explained, and the description covers the deliverable shape (short, one action), the content categories, and the read_conversation boundary. What is missing is the relationship to overlapping siblings like whats_waiting, but for calling the tool correctly it is essentially 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% and the single optional 'since' parameter is fully documented in the schema including its 24h default and 14-day cap. The description's 'since a time' phrasing adds nothing beyond that, so the baseline 3 for schema-covered params is correct.

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 verb and resource ('what's new in the person's Stream since a time') and enumerates the card types it surfaces (new cards, waiting plans, meetups, writers, knocks/drafts, pending suggestions), so an agent knows exactly what it returns. It does not, however, distinguish itself from close siblings such as whats_waiting or list_upcoming, which cover overlapping territory.

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 states the intended context ('Made for a daily check') and gives an explicit exclusion with the alternative named: 'Read messages only if the person asks (read_conversation).' That is a clear when-not rule. It stops short of explaining when to pick this over siblings like whats_waiting, so it is not a full 5.

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

whats_waitingWhat's waiting for youA
Read-onlyIdempotent
Inspect

What waits for the person's answer, across what they run and their own life: people asking to lead or join their föreningar, sessions in the coming week with players who haven't answered, follow requests to their channels, and the open requests in their app (friends, family links, plans, consents) — names as the app shows them, never message text. Read only: answering is the person's own tap in the app (or the matching tool, with their OK).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
groupsYes
channelsYes
requestsYes
foreningarYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context the annotations cannot carry: results are limited to names as displayed and never include message text, and no write occurs 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 purpose is front-loaded in the first clause, and the em-dash list efficiently enumerates the included categories before the second sentence covers read-only behavior. It is dense rather than padded, though the single long list sentence is slightly unwieldy.

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 formatting need not be explained, and annotations cover safety and world scope. The enumerated categories plus the privacy note give an agent enough to call it correctly; only the mapping of each category to its answering sibling is left implicit.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool applies. No parameter claim is made that could mislead the caller.

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 resource — the set of pending items awaiting the person's decision — and enumerates its contents (lead/join requests for föreningar, unanswered sessions, follow requests, in-app requests). This scope clearly separates it from narrow siblings like list_follow_requests or list_knocks, though those siblings are not named 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?

It establishes the read-only context and points at the follow-up path: 'answering is the person's own tap in the app (or the matching tool, with their OK),' which steers the agent away from trying to respond through this tool. It stops short of naming which sibling tool answers each category.

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

whoamiWho am I connected asA
Read-onlyIdempotent
Inspect

Who you're connected as and what you may do: the person's name, your app, the three spheres and how far you may go in each (private: drafts only — never sent in their name; professional: off, draft or act, with their standing rules; places: administer with drafts, routine posts directly only where they released a place), the scopes they approved (with what each allows and which actions need confirm: true), their consent settings per audience, and their households and groups by name. Call it first in a new conversation, or when a tool you expect is missing (it's in a scope they didn't approve — they can reconnect to change that).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
clientYes
groupsYes
personYes
placesYes
policyYes
scopesYes
spheresYes
proRulesYes
manageUrlYes
householdsYes
notGrantedYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent read; the description adds richer behavioral context the annotations cannot express, including that some actions require confirm:true and what each scope actually permits. It stops short of describing the response shape (output schema exists) and doesn't detail error 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 single dense sentence front-loads the purpose and the usage routing at the end, but the middle parenthetical listing spheres and scopes is long and heavily nested, making it harder to scan than it needs to be.

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 rich output schema exists, so return values don't need explanation, and the description still clarifies what the returned scope/sphere labels mean in practice. It is missing only the shape/format of the response mapping to those labels.

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?

There are zero parameters, so schema coverage baseline is 4. The description correctly adds no parameter detail because none exist, and instead enriches the return-domain semantics an agent needs to interpret the call.

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 purpose: identity and permission introspection ('Who you're connected as and what you may do'). It is unmistakably distinct from every sibling, none of which describe session context or scope state.

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 explicit when-to-use guidance: 'Call it first in a new conversation, or when a tool you expect is missing (it's in a scope they didn't approve — they can reconnect to change that).' This names the situation and the remedy, not just the tool.

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

who_is_comingSchedule: who's comingA
Read-onlyIdempotent
Inspect

One session of a group the person leads: who is coming, who can't and who hasn't answered — by name as the app shows the leader (players as "Ella S."), and how many a change would reach. Pick it by key (from read_schedule), or by its date (+ title or start when there are several that day). Read only — reminding those who haven't answered is the person's own tap in the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoThe session's key from read_schedule, e.g. "a1b2c3d4e5_2026-10-09".
dateNoOr its date, YYYY-MM-DD.
groupNoA group the person leads — its name, e.g. "P13" or "8B" (add the förening's name if several share it, e.g. "Löparklubben P13"), or its groupId from list_personas. May be left out when they lead exactly one.
startNoWith date: its start, HH:MM.
titleNoWith date: part of its title, e.g. "träning".

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
groupYes
reachYes
comingYes
sessionYes
noAnswerYes
notComingYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds real value beyond them: names are rendered as the leader sees them (players abbreviated like 'Ella S.') and the result includes how many people a change would reach. It omits any permission/authorization detail for the 'person leads' constraint.

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?

Content is front-loaded: what it returns comes first, then how to pick the session, then the read-only caveat. It is a touch dense with stacked parentheticals, but no sentence is pure filler.

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 no explanation, and the description still covers selection logic, return semantics and the non-reminding boundary. For a read-only lookup of moderate complexity this is nearly sufficient; only contrasting-sibling routing is 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 every parameter including the date+title/start combination is already documented in the schema. The description's selection summary largely restates that, adding only the loose notion that title or start disambiguate same-day sessions. Baseline 3 is appropriate when the schema carries parameter meaning.

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 exact resource (one session of a group the person leads), the payload (who is coming, who can't, who hasn't answered, plus a reach count), and the identity source (read_schedule for the key). It is clearly distinguishable from a plain schedule listing, though it never names a contrasting sibling like event_signup_status outright.

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 states how to select the session (by key from read_schedule, or by date plus title/start when several share a day) and draws a boundary: 'Read only — reminding those who haven't answered is the person's own tap in the app.' That tells the agent what this tool will not do, but there is no explicit when-not-to-use guidance against neighboring RSVP tools.

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. 2 tool updates
    • Addedfetch
    • Addedsearch
  2. 2 tool updates
    • Changedlist_identities1 field changed
      • changedOutput schema / properties / identities / items / properties / place / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "audiences": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "channelId": {
        -        "type": "string"
        -      },
        -      "publishesDirectly": {
        -        "type": "boolean"
        -      },
        -      "under18CanSee": {
        -        "type": "boolean"
        -      },
        -      "usual": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "channelId",
        -      "audiences",
        -      "usual",
        -      "under18CanSee",
        -      "publishesDirectly"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "audiences": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "brief": {
        +        "description": "The owner's brief for you: what this channel is, its voice, its themes, what it never says. Follow it when you write as this identity.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "channelId": {
        +        "type": "string"
        +      },
        +      "official": {
        +        "type": "boolean"
        +      },
        +      "publishesDirectly": {
        +        "type": "boolean"
        +      },
        +      "under18CanSee": {
        +        "type": "boolean"
        +      },
        +      "usual": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "channelId",
        +      "audiences",
        +      "usual",
        +      "under18CanSee",
        +      "publishesDirectly",
        +      "brief",
        +      "official"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedupload_media1 field changed
      • addedInput schema / properties / base64
        Added value: +{
        +  "description": "Instead of url/upload: the photo's bytes as base64 (a data:image/…;base64, prefix is fine), ≤ 2 MB decoded. For clients without network access.",
        +  "maxLength": 2900000,
        +  "type": "string"
        +}
  3. 70 tool updates
    • Addedadd_household_event
    • Addedadd_session
    • Addedadd_shopping_items
    • Addedanswer_follow_request
    • Changedblock_person1 field changed
      • addedInput schema / properties / confirm
        Added value: +{
        +  "description": "true once the person confirmed they want to block. Example: true",
        +  "type": "boolean"
        +}
    • Addedchange_session
    • Addedchannel_stats
    • Addedcheck_shopping_items
    • Addedcontext
    • Addedcreate_event
    • Addedcreate_home
    • Addedcreate_plan
    • Addedcreate_post
    • Addedcreate_post_draft
    • Addedcreate_quiz_show_draft
    • Addeddelete_post
    • Addededit_post
    • Addedevent_signup_status
    • Addedevents
    • Addedfind_circles
    • Addedget_plan
    • Addedinvite_by_email
    • Addedjoin_circle
    • Addedlist_follow_requests
    • Addedlist_homes
    • Addedlist_households
    • Addedlist_identities
    • Addedlist_members
    • Addedlist_my_channels
    • Addedlist_personas
    • Addedlist_plans
    • Addedlist_posts
    • Addedlist_quiz_shows
    • Addedlist_upcoming
    • Addedmanage_kanal
    • Addedmanage_member
    • Addedmark_chore_done
    • Addedmessage_group
    • Addedmoderate_comment
    • Addedpling_friend
    • Addedpro_contact_note
    • Addedpro_conversations
    • Addedpro_message
    • Addedpro_profile
    • Addedpro_search
    • Addedpropose_circle
    • Addedqueue_daily_challenge
    • Addedread_chores
    • Addedread_comments
    • Addedread_dinners
    • Addedread_household_calendar
    • Addedread_profile
    • Addedread_schedule
    • Addedread_shopping_list
    • Addedread_topics
    • Addedread_unread
    • Changedredeem_friend_code3 fields changed
      • changedOutput schema / properties / conversationId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "friends",
        -  "already_friends",
        -  "needs_confirmation"
        -]New value: +[
        +  "friends",
        +  "already_friends",
        +  "requested",
        +  "already",
        +  "needs_confirmation"
        +]
    • Changedrelay_status2 fields changed
      • addedOutput schema / properties / policy / properties / places
        Added value: +{
        +  "$ref": "#/properties/policy/properties/friends"
        +}
      • addedOutput schema / properties / policy / properties / professional
        Added value: +{
        +  "$ref": "#/properties/policy/properties/friends"
        +}
    • Addedrsvp_event
    • Addedschedule_post
    • Addedsearch_profiles
    • Addedsend_to_conversation
    • Addedsuggest_dinner
    • Addedupdate_home
    • Addedupload_media
    • Addedvote_plan
    • Addedwhats_new
    • Addedwhats_waiting
    • Addedwho_is_coming
    • Addedwhoami
  4. 2 tool updates
    • Changedfind_people7 fields changed
      • addedInput schema / properties / languages
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / openTo
        Added value: +{
        +  "description": "What they're open to.",
        +  "items": {
        +    "enum": [
        +      "coffee",
        +      "walks",
        +      "online chat",
        +      "collaboration",
        +      "mentoring",
        +      "study buddy",
        +      "hobby partner",
        +      "language exchange"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / text / description
        Previous value: -"Free-text match in intros."New value: +"Free-text match in intros, interests, merits and views people chose to show."
      • addedOutput schema / properties / results / items / properties / languages
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / results / items / properties / merits
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / properties / openTo
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / results / items / properties / views
        Added value: +{
        +  "type": "string"
        +}
    • Changedrelay_status2 fields changed
      • addedOutput schema / properties / groups
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "conversationId": {
        +        "type": "string"
        +      },
        +      "groupId": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "groupId",
        +      "name",
        +      "conversationId"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "me",
        -  "unread",
        -  "policy",
        -  "friendCode",
        -  "conversations",
        -  "friendsCount",
        -  "draftsPending",
        -  "knocksWaiting",
        -  "listed",
        -  "restriction",
        -  "inboxUrl",
        -  "rules",
        -  "guidance"
        -]New value: +[
        +  "me",
        +  "unread",
        +  "policy",
        +  "friendCode",
        +  "conversations",
        +  "friendsCount",
        +  "draftsPending",
        +  "knocksWaiting",
        +  "listed",
        +  "groups",
        +  "restriction",
        +  "inboxUrl",
        +  "rules",
        +  "guidance"
        +]
  5. 8 tool updates
    • Addedfind_people
    • Addedknock
    • Changedlist_conversations4 fields changed
      • addedOutput schema / properties / conversations / items / properties / iRevealed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / conversations / items / properties / with / properties / anonymous
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / conversations / items / properties / with / required
        Previous value: -[
        -  "uid",
        -  "name"
        -]New value: +[
        +  "name"
        +]
      • changedOutput schema / properties / conversations / items / required
        Previous value: -[
        -  "conversationId",
        -  "kind",
        -  "with",
        -  "lastMessageAt",
        -  "lastPreview",
        -  "lastFromMe",
        -  "unread",
        -  "closed",
        -  "agentPaused"
        -]New value: +[
        +  "conversationId",
        +  "kind",
        +  "with",
        +  "iRevealed",
        +  "lastMessageAt",
        +  "lastPreview",
        +  "lastFromMe",
        +  "unread",
        +  "closed",
        +  "agentPaused"
        +]
    • Addedlist_knocks
    • Changedread_conversation10 fields changed
      • addedOutput schema / properties / context
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / iRevealed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / iWantFriends
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / kind
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / myAlias
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / theyRevealed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / theyWantFriends
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / with / properties / anonymous
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / with / required
        Previous value: -[
        -  "uid",
        -  "name"
        -]New value: +[
        +  "name"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "conversationId",
        -  "with",
        -  "closed",
        -  "agentPaused",
        -  "messages",
        -  "olderCursor"
        -]New value: +[
        +  "conversationId",
        +  "kind",
        +  "with",
        +  "context",
        +  "myAlias",
        +  "iRevealed",
        +  "theyRevealed",
        +  "iWantFriends",
        +  "theyWantFriends",
        +  "closed",
        +  "agentPaused",
        +  "messages",
        +  "olderCursor"
        +]
    • Changedredeem_friend_code2 fields changed
      • addedOutput schema / properties / friend / properties / anonymous
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / friend / required
        Previous value: -[
        -  "uid",
        -  "name"
        -]New value: +[
        +  "name"
        +]
    • Changedrelay_status7 fields changed
      • addedOutput schema / properties / conversations / items / properties / iRevealed
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / conversations / items / required
        Previous value: -[
        -  "conversationId",
        -  "kind",
        -  "with",
        -  "lastMessageAt",
        -  "lastPreview",
        -  "lastFromMe",
        -  "unread",
        -  "closed",
        -  "agentPaused"
        -]New value: +[
        +  "conversationId",
        +  "kind",
        +  "with",
        +  "iRevealed",
        +  "lastMessageAt",
        +  "lastPreview",
        +  "lastFromMe",
        +  "unread",
        +  "closed",
        +  "agentPaused"
        +]
      • addedOutput schema / properties / knocksWaiting
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / listed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / me / properties / anonymous
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / me / required
        Previous value: -[
        -  "uid",
        -  "name"
        -]New value: +[
        +  "name"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "me",
        -  "unread",
        -  "policy",
        -  "friendCode",
        -  "conversations",
        -  "friendsCount",
        -  "draftsPending",
        -  "restriction",
        -  "inboxUrl",
        -  "rules",
        -  "guidance"
        -]New value: +[
        +  "me",
        +  "unread",
        +  "policy",
        +  "friendCode",
        +  "conversations",
        +  "friendsCount",
        +  "draftsPending",
        +  "knocksWaiting",
        +  "listed",
        +  "restriction",
        +  "inboxUrl",
        +  "rules",
        +  "guidance"
        +]
    • Addedrespond_knock
  6. 9 tool updates
    • Addedblock_person
    • Addedcreate_friend_code
    • Addedflag_conversation
    • Addedlist_conversations
    • Addedlist_friends
    • Addedread_conversation
    • Addedredeem_friend_code
    • Addedrelay_status
    • Addedsend_message
  7. 7 tool updates
    • First observedadd_hunch
    • First observedapply_refinement
    • First observedfind_complementary_thinkers
    • First observedfind_matches
    • First observedpropose_refinement
    • First observedread_model
    • First observedsuggest_question

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables a local-first, user-owned AI work identity layer that lets multiple MCP coding tools share approved preferences, quality standards, lessons, decisions, and project context, with local files you can inspect, edit, and override.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables multiple MCP-compatible coding tools to start from one user-owned, local-first identity layer, sharing your preferences, quality bar, lessons, decisions, and project context across sessions and tools. All knowledge lives in inspectable local files that you can review, edit, or override, with high-risk writes held for approval and a preview of exactly what an AI caller would receive.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables multiple MCP-compatible coding tools to start from a single user-owned identity and knowledge layer, so preferences, quality standards, lessons, decisions, and project context carry across Claude Code, Codex, Cursor, Windsurf, and others. Everything is stored in local files the user can inspect, edit, approve, or override, with a read-only preview of what any AI caller would receive.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    The personal context layer for AI - one user owned profile plus files, read by any MCP client so you never re-introduce yourself.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.