Skip to main content
Glama

Server Details

Members-run AI builder space on Floor 10, Frontier Tower SF. 138 tools: events, news, directory.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Immersive-commons/ic-skills
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 156 of 156 tools scored. Lowest: 3.2/5.

Server CoherenceA
Disambiguation4/5

The toolset is organized into clear domain prefixes (ic_, floor10_, floorcast_) with verb-based names, making most tools distinguishable at a glance. A few pairs could be confused: floor10_submit_highlight vs floorcast_push both accept HighlightStory payloads, and ic_events_next (personal event log) vs ic_events_get_live (current live event) are easy to mix up.

Naming Consistency5/5

Names follow a consistent snake_case verb_noun pattern with domain prefixes throughout. Every domain uses predictable verbs (get/list/create/update/submit/approve/reject), and derived forms like get_my/list_my are uniform. No camelCase or mixed conventions.

Tool Count1/5

At 156 tools, this is an extreme count for a single MCP server. Even though each domain cluster is internally coherent, the platform would be far more navigable split into per-domain servers (e.g., admin, files, rooms, hack, headsets). The cardinality creates a heavy discovery and disambiguation burden.

Completeness4/5

Core workflows across the many domains are thoroughly covered—files and folders have full CRUD plus grants, admin queues have approve/reject/dry-run flows, and agent inbox has send/reply/block/undo. Minor gaps exist such as no member-side event cancellation, no room teardown/leave tool, and no owner-side print deletion, but these are workable.

Available Tools

162 tools
floor10_extract_event_metadataExtract event metadata from a URLA
Read-only
Inspect

Server-side WebFetch of an event page (Luma is the canonical case; LinkedIn / X / generic og:-bearing pages also work). Returns parsed { title, date, image, description, organization } so the agent doesn't have to scrape and parse OG / JSON-LD itself. Use the result to compose a HighlightStory. Args: { url }. Returns: a metadata map; empty fields where extraction missed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
Behavior5/5

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

The description discloses the tool makes a server-side web fetch (consistent with readOnlyHint=true), returns a map with empty fields on extraction failure, and specifies supported page types. This goes beyond annotations by detailing the behavior and error handling.

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 three sentences with no superfluous words. The first sentence immediately conveys the core action. It uses bullet-style listing in prose, making it clear and efficient.

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 simplicity (one parameter, no output schema), the description fully covers what the tool does, what it returns (including fields and empty handling), and supported page types. No other information is necessary for correct invocation.

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

Parameters4/5

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

The single parameter 'url' has no description in the input schema (0% coverage), but the description explicitly mentions 'Args: { url }' and clarifies what kinds of URLs are expected (event pages from Luma, LinkedIn, etc.). This adds meaning beyond the schema's format constraint, though it could specify URI format more explicitly.

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 clearly states it performs server-side WebFetch to extract event metadata from a URL, listing specific fields and canonical use cases (Luma, LinkedIn, X, generic OG pages). This specific verb+resource description distinguishes it from sibling tools like floor10_list_claimable_events or floor10_submit_highlight.

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?

The description explicitly tells the agent to use the returned metadata to compose a HighlightStory, and notes that the tool saves the agent from manual scraping/parsing. This provides clear usage context, though it does not list alternative tools or when not to use, the context is sufficient for this simple tool.

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

floor10_get_my_floor_memberGet my floor-member infoA
Read-only
Inspect

Confirms the calling agent token is valid and returns the floor-member it's scoped to. Use as a post-mint smoke check before submitting. Args: none. Returns: { member_id, member_name, token_prefix, scopes }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds behavioral context: it confirms token validity and returns specific fields, which is useful 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose, includes args and return structure. No wasted words.

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?

Covers purpose, usage, behavior, and return fields. No output schema needed, but the description compensates fully.

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?

No parameters exist; schema coverage is 100%. Per rules, baseline is 4. No additional param info needed.

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?

Explicitly states the tool confirms token validity and returns the scoped floor-member, clearly distinguishing it from other tools like ic_get_my_membership which return different scopes.

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 explicit usage context: 'Use as a post-mint smoke check before submitting.' This guides when to invoke it, though it lacks explicit when-not-to-use or alternatives.

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

floor10_list_claimable_eventsList events I could write a highlight aboutA
Read-only
Inspect

Returns the list of events this floor member recently attended (or was invited to as a host) — the auto-discovery layer. Use this BEFORE asking the human 'what event did you go to?'; show them this list and let them pick. Source: graph.yaml attendance ingest, enriched with canonical URLs from data/events.yaml. Args: { status_filter? (e.g. ['checked_in','attended']), limit? (default 25, max 100) }. Returns: { count, total, generated_at, events: ClaimableEvent[] }. ClaimableEvent fields: event_api_id, title, date (YYYY-MM-DD), status (invited|approved|going|checked_in|attended), role, url, program, episode, registered_at, source.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 25; max 100.
status_filterNoOptional. Filter to one or more statuses. E.g. ["checked_in","attended"] for "really went". Default: all statuses (incl. "invited" so hosts see their own events).
Behavior4/5

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

Annotations already declare readOnlyHint=true, so description adds value by stating the data source (graph.yaml attendance ingest, enriched from data/events.yaml) and default behavior of status_filter including invited events for hosts. No contradictions.

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 paragraph but conveys purpose, usage, source, parameters, and return shape efficiently. Slightly dense but well-organized for the tool's complexity.

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 list tool with 2 optional params and no output schema, the description provides return type (ClaimableEvent[]) and field details, making it self-contained. Sibling tools are numerous, but this description adequately stands alone.

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%, giving a baseline of 3. The description adds meaning beyond schema by explaining the status_filter default and providing an example (['checked_in','attended'] for 'really went'), enhancing semantics for agent use.

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 clearly states the tool returns a list of events for a floor member, with specific verb (returns) and resource (list of attended/invited events). It distinguishes itself by being the auto-discovery layer and mentions use before asking the human, setting it apart from siblings like floor10_submit_highlight.

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 explicit when-to-use: 'Use this BEFORE asking the human what event did you go to?; show them this list and let them pick.' This is clear context-specific guidance, though it does not mention when not to use or name alternative tools.

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

floor10_list_my_pendingPending highlights queue (count)A
Read-only
Inspect

Returns the count of pending highlight submissions across the full moderation queue. Useful as a 'is there a backlog?' probe before adding more. (Per-member filtering is not exposed for v1; the queue is small.) Args: none. Returns: { count }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds context about the full moderation queue and lack of per-member filtering, which is consistent and provides additional transparency 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.

Conciseness5/5

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

Extremely concise: two sentences plus a brief specs line. All information is front-loaded and relevant. No waste.

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 simplicity (no params, no output schema), the description fully covers inputs, outputs, and usage context. It mentions return shape and limitations.

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?

No parameters, and schema coverage is 100% trivially. Description mentions 'Args: none,' which is sufficient. Baseline of 4 is appropriate for zero-parameter tools.

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 clearly states it returns the count of pending highlight submissions from the full moderation queue. The title and name align, and it distinguishes from list tools like ic_admin_list_pending_highlights by focusing on count rather than detailed list.

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 describes use case as a backlog probe before adding more highlights. Notes limitations (no per-member filtering, queue is small). Does not explicitly name alternative tools but implies its probe role.

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

floor10_submit_highlightSubmit a highlight to the moderation queueAInspect

POST a HighlightStory for admin review. Same shape + same validation as the REST endpoint at /api/ingest/highlights/pending. Rate limit: 3 per token per UTC day. Re-submitting the same id refreshes the pending TTL (idempotent). Hard rules: no fabricated dates / quotes / member ids; news-wire third-person dek; candids first, posters last in images[]. See https://www.immersivecommons.com/docs/agent-submissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSlug pattern YYYY-MM-DD-<member-slug>-<event-slug>. Lowercase, alphanumeric + hyphens.
dekYesNews-wire third-person, 1-2 sentences. No editorial verbs. No first person. No fabricated quotes.
dateYesDisplay ("MAY 08") or ISO date.
statsNoConvention: RSVPS / ORGANIZATION / ROLE.
actionYesVerb-clause completing "<member> <action> <event_title>". Lowercase. E.g. "spoke at", "hosted", "demoed at".
imagesYesPublic URLs only (not base64). Candids first, posters / Luma covers last. Lead card cycles through these.
event_urlNo
member_idNoSlug from data/members.yaml. The token attributes the submission server-side regardless.
event_titleYes
member_nameYesDisplay name as it should appear on the card.
image_focalsNoOptional sparse map of subject focal points in [0, 1] coords (top-left origin).
Behavior2/5

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

Describes idempotent behavior and rate limits, but contradicts the idempotentHint=false annotation by stating re-submission is idempotent.

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?

Concise, front-loaded purpose, every sentence adds information. No fluff.

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 submission rules, idempotency, rate limits, and validation patterns. References external docs. Sufficient for an agent to use 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?

Adds value beyond schema by specifying image ordering, date formats, and action examples. Schema coverage is 82%, so description compensates well.

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

Purpose5/5

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

Clearly states 'POST a HighlightStory for admin review' and mentions submitting to moderation queue. Differentiates from sibling admin tools like ic_admin_approve_highlight.

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 guidelines on idempotency, hard rules for content, and a reference to the REST endpoint. Could be more explicit on when to use alternatives but adequate.

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

floor10_upload_imageUpload an image to the IC photo storeAInspect

Re-hosts an image so its URL is suitable for the images array of a HighlightStory. Pass url (recommended; server fetches + stores) or data_url (small files only, RFC 2397 inline base64). Storage is content-addressed at floor10/highlights//. on Vercel Blob, public-readable, year-long cache. Idempotent: same bytes -> same URL. Rate limit: 30 uploads / token / UTC day (separate from the submission rate). Allowed types: image/jpeg|png|webp|gif|heic|heif|avif. Max 8 MB per upload. Returns: { url, bytes, content_type, sha256, deduped }.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic URL of an image to fetch and re-host. Recommended path. http(s) only; localhost / cloud-metadata addresses are blocked.
data_urlNoInline data URL ("data:image/jpeg;base64,..."). Use for screenshots / small captures the agent generated locally. Capped at the same 8 MB ceiling; base64 has ~33% overhead so practical max is ~6 MB of source bytes.
Behavior1/5

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

The description claims the tool is idempotent ('same bytes -> same URL'), but the annotation idempotentHint is false. This is a direct contradiction. Otherwise, the description provides useful behavioral details (storage, cache, rate limit, size limits) that go beyond the minimal annotations.

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 sentences: first states purpose, second details parameters and storage, third adds idempotency, rate limit, types, size, and return fields. No filler, front-loaded, 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?

Covers purpose, parameters, storage, idempotency, rate limits, allowed types, max size, and return fields. Lacks error handling details (e.g., what happens on rate limit exceed) but is otherwise comprehensive for a file upload tool with 2 parameters and no output schema.

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

Parameters5/5

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

Schema coverage is 100%, and the description adds significant context: url parameter gets restriction notes (blocked localhost/cloud-metadata), data_url gets use case guidance and overhead explanation. This adds meaning well beyond the schema definitions.

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 clearly states the tool re-hosts an image for use in HighlightStory images array, specifies the target storage (IC photo store), and distinguishes two input methods (url vs data_url) with clear recommendations.

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 guidance on when to use url (recommended) vs data_url (small local captures), includes rate limits (30 uploads per token per UTC day), and allowed image types. However, does not explicitly contrast with sibling tools like ic_membership_upload_photo or other image tools.

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

floorcast_effective_featuresWhich feature modules are LIVE on this floor (resolved)A
Read-only
Inspect

Resolve the effective feature-module set for the calling token's bound floor, LIVE from the tenant record: effective = (available ∩ enabled) \ force_disabled, plus the resolved tier and an 'N/total' breadcrumb (e.g. 'AI tier, 8/8 features live'). FAIL-CLOSED: on a both-down outage where the tenant record is unavailable, returns { ok:false, reason:'tenant-record-unavailable' } — NEVER a synthesized full set. Read-only; any valid token. Args: none. Returns: { ok, tenant, tier, available, enabled, force_disabled, effective, breadcrumb }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations provide readOnlyHint=true and openWorldHint=false. The description adds significant detail: the algorithm, fail-closed behavior on tenant-record outage (returns error, never synthesized), and the return shape. No 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?

The description is dense but well-structured with a clear statement of purpose, algorithm, fail-closed note, and return shape. It could be slightly more organized (e.g., bullet points), but every sentence adds value.

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 no output schema, the description fully explains the return shape { ok, tenant, tier, available, enabled, force_disabled, effective, breadcrumb } and the breadcrumb format. All necessary information is present.

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

Parameters5/5

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

No parameters exist (schema is empty). The description explicitly states 'Args: none', which is clear. Schema coverage is 100%, so the description adds no extra needed, but it confirms the absence of parameters.

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 clearly states it resolves the effective feature-module set for the calling token's bound floor, explains the formula (available ∩ enabled) \ force_disabled, and mentions the breadcrumb. This is specific and distinguishes from sibling tools that set features or perform other floor operations.

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 says 'Read-only; any valid token' and describes the fail-closed behavior, guiding when to use. While it does not name alternatives, the sibling list implies this is the read-only counterpart to setter tools. Clear context for usage.

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

floorcast_my_rolesWhat can this token do on its floor (per-tenant roles)A
Read-only
Inspect

Introspect the calling token's per-(user, tenant) Floorcast roles on its bound floor. Returns the resolved ring + display label + the canActAs verdicts (member / floor-admin / super-admin). Resolves the SAME way the auth gate does (one shared resolver — no drift). On a token with no tied Clerk identity it returns the fail-open public shape. Read-only; no scope beyond a valid token. Args: none. Returns: { tenant, ring, role_label, can_act_as }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses that resolution matches the auth gate (no drift), and specifies behavior for tokens without Clerk identity (fail-open public shape). It also notes no scope beyond a valid token and lists the return fields.

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 concise (4-5 sentences) and front-loaded with the primary purpose. Every sentence adds value: purpose, resolution details, edge cases, and return shape. No redundancy.

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 introspection tool with no parameters and no output schema, the description fully covers what the tool does, how it works, edge cases, and the return structure. It is complete and sufficient for an agent to understand and invoke the 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?

The tool has zero parameters, so schema coverage is 100%. The description explicitly states 'Args: none,' which is clear. No additional parameter details needed.

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 clearly states the tool's purpose: 'Introspect the calling token's per-(user, tenant) Floorcast roles on its bound floor.' It uses a specific verb (introspect) and resource (token's roles), and distinguishes itself from sibling tools by focusing on token introspection rather than other actions.

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 description implies when to use (e.g., 'On a token with no tied Clerk identity it returns the fail-open public shape') but does not explicitly state when to use this tool vs alternatives. No mention of when not to use or comparison to siblings.

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

floorcast_preview_ai_curationPreview what the AI would surface on this floor (read-only)A
Read-only
Inspect

Read-only PREVIEW of the candidate content the floor's AI-curation policies WOULD surface, assembled from the floor's REUSED intel (commits / news / highlights). Writes NOTHING. Returns a per-policy { policy, candidate } list (candidate is null when the policy has no intel). Static-tier floors and floor10 (slug-fenced) return an empty list. Args: none.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only' and 'Writes NOTHING'. It adds further behavioral details on the return format and edge cases, which are not covered by annotations.

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 extremely concise with two sentences, front-loading the key information ('Read-only PREVIEW'). Every sentence adds value without redundancy.

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 no parameters and no output schema, the description fully explains the tool's behavior, return format, and edge cases. It provides all necessary information for correct invocation.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100%. The description correctly states 'Args: none', which is sufficient given the absence of parameters.

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 clearly states it's a read-only preview of AI-curation output, using specific verbs 'preview' and 'surface'. It distinguishes itself from the sibling tool 'floorcast_run_ai_curation' by emphasizing read-only and preview nature.

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 explicitly states it writes nothing, indicating safe usage. It also describes when an empty list is returned (static-tier floors, floor10 slug-fenced), providing context for when not to expect results. However, it does not directly mention alternatives like 'floorcast_run_ai_curation' for actual curation.

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

floorcast_pushPush a highlight to your floor (policy-routed)AInspect

Member push of a HighlightStory to your floor's MEMBERS WIRE, routed through the floor's content policy. Default policy 'moderation_queue' ⇒ the story lands PENDING for operator approval ({ ok:true, status:'pending', id }). A 'free_push_with_retract' floor (floor10 only this increment) ⇒ the story goes straight to ACTIVE ({ ok:true, status:'active', id }) — a deliberate policy bypass of the operator gate, retractable via floorcast_unpush. CONSEQUENTIAL. Typed refusals: { ok:false, reason } where reason is 'forbidden' (not a member on this floor), 'invalid' (story failed validation), 'approve-failed' (free_push: enqueued but the active-promotion failed; the pending record is left for operator visibility), or 'tenant-not-provisioned' (NON-floor10 push is currently DENIED — not 'lands in moderation_queue'; multi-tenant push ships in a follow-on). Same story shape + validation as floor10_submit_highlight. Args: the HighlightStory fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dekYes
dateYes
statsNo
actionYes
imagesYes
event_urlNo
member_idNo
event_titleYes
member_nameYes
image_focalsNo
Behavior5/5

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

The description goes beyond annotations (which only set readOnlyHint=false etc.) by detailing the full return shape for both success (pending vs active status) and failure (typed reasons like forbidden, invalid, approve-failed, tenant-not-provisioned). It highlights the 'CONSEQUENTIAL' nature, policy bypass for free_push_with_retract, and the retraction capability via floorcast_unpush. No contradiction with 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 description is long but front-loaded with the main purpose. It includes extensive behavioral details, edge cases, and references to other tools. While informative, it could be more concise and structured (e.g., separate sections for behavior, return values, and parameter notes). Still, every sentence adds value and there is no redundancy.

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

Completeness4/5

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

Given the tool's complexity (11 parameters, nested objects, policy routing, multiple return scenarios), the description covers most essential aspects: push destination, policy defaults, status outcomes, failure reasons, and validation. It references another tool for story shape. No output schema exists, but return values are fully described. Minor gap: no explanation of each parameter's purpose or constraints, but overall complete for agent decision-making.

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 coverage is 0% (no parameter descriptions in the schema). The description only vaguely mentions 'Same story shape + validation as floor10_submit_highlight' and 'Args: the HighlightStory fields', without explaining individual parameters or constraints. Given the schema has 11 parameters including nested objects, the description fails to add meaningful semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool pushes a HighlightStory to a floor's MEMBERS WIRE with policy routing. It specifies the verb 'push' and the resource 'floor's members wire', and distinguishes from siblings like floorcast_unpush and floor10_submit_highlight by mentioning policy bypass and same story shape.

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 explains when to use it (member push) and contrasts the default vs. free push behavior. It mentions that non-floor10 push is currently denied, providing clear context. However, it does not explicitly state when to use alternative tools like floor10_submit_highlight or floorcast_unpush, though the sibling names and context imply relationship.

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

floorcast_run_ai_curationRun AI curation now on this floor (Floor-Admin, consequential)AInspect

Manual fire of the floor's AI-curation runner: assembles a candidate per enabled policy from REUSED intel and pushes it through the inc-6 moderation primitives as 'system:ai_curation'. Non-floor10 AI floors land the candidate PENDING (operator-gated). Floor-Admin gated. Static floors return { ok:false, reason:'feature-not-available' }; floor10 is slug-fenced and ALSO denied (absolute in inc-7). De-dups against the active + pending lists so a re-run does not poison the pending queue. Args: none. Returns: a per-policy result list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations provide minimal safety hints, but the description adds rich behavioral detail: it assembles candidates from intel, pushes through moderation, handles different floor types (landing pending or error), de-dupes to avoid queue pollution, and returns per-policy results. No contradiction with 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 densely packed with essential information and front-loaded with the core action. While comprehensive, it could be slightly more concise; however, it effectively uses every sentence to convey necessary details.

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?

Given the tool's complexity (floor types, policies, moderation, dedup), the description covers most behavioral aspects but lacks detail on the exact structure of the per-policy result list. With no output schema, this omission limits completeness.

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 zero parameters and 100% schema coverage, the baseline is 4. The description redundantly states 'Args: none' but adds no new meaning beyond the schema, which is acceptable.

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 clearly states the tool's action: 'Manual fire of the floor's AI-curation runner' with specific verb ('run') and resource ('AI curation'). It distinguishes from siblings like 'floorcast_preview_ai_curation' by emphasizing this is a commit action, and the title further reinforces the purpose.

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

Usage Guidelines4/5

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

The description provides context on when to use (manual fire) and when not to (static floors, floor10), along with authorization requirement (Floor-Admin gated). It does not explicitly name alternatives but implies differentiation from preview and policy-setting tools.

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

floorcast_set_ai_policySet the AI-curation policy list on this floor (Floor-Admin)A
Idempotent
Inspect

Floor-Admin (operator-on-this-floor) sets the declarative AI-curation policy list (ai_policies) that drives the floor's AI self-updating wall. PERSISTS the tenant record via the inc-6 writer. Runs the FULL authz gate first: a non-Floor-Admin gets { ok:false, reason:'forbidden' } (no write). A live KV write failure surfaces { ok:false, reason:'write-failed', error }. Each policy is { type: 'top_commit'|'latest_news'|'rotate_highlights', enabled?, max_items? }. On success returns { ok:true, record }. Scope: a valid floor-bound token. Args: { policies }.

ParametersJSON Schema
NameRequiredDescriptionDefault
policiesYesThe AI-curation policy list to persist on this floor.
Behavior4/5

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

Adds value beyond annotations by detailing authorization gate, write failure handling, exact error responses, and success return shape. No contradiction with idempotentHint=true or destructiveHint=false. Implementation detail 'inc-6 writer' provides extra transparency.

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?

Single paragraph of 6 sentences is efficient and front-loaded with main purpose. Dense but no unnecessary words. Could be slightly improved by breaking into bullet points or separating sections.

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?

Covers authorization, input structure, error cases, success response, and scope. With no output schema, the description adequately explains return format. All necessary context for a 1-parameter non-destructive write tool is present.

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

Parameters5/5

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

Schema covers 100% of parameters, but description adds the internal structure of each policy object (type enum values, optional enabled/max_items) and clarifies maxItems=16 constraint. This supplements the schema's minimal description.

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?

Clearly states the verb 'sets' and the resource 'AI-curation policy list', and explains it drives the floor's AI self-updating wall. Differentiates from siblings like floorcast_preview_ai_curation and floorcast_run_ai_curation by focusing on setting the policy list.

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?

Specifies authorization requirement ('Floor-Admin') and describes forbidden response for non-admins. Indicates this tool is for setting policy that drives AI curation. Does not explicitly compare with alternatives, but context from sibling names helps.

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

floorcast_set_feature_availabilitySet a feature module AVAILABLE on this floor (Super-Admin)A
Idempotent
Inspect

Super-Admin (apex flag AND operator-on-THIS-floor) sets which modules a floor is ALLOWED to enable. PERSISTS the tenant record (inc-6). Runs the FULL per-tenant super-admin gate first: a floor-admin WITHOUT the apex flag, or a super-admin on a DIFFERENT floor, gets { ok:false, reason:'forbidden' } (no write). A live KV write failure surfaces { ok:false, reason:'write-failed', error } (no 500). On success returns { ok:true, record }. NOTE: the force-disable kill-switch (setForceDisabled) is intentionally NOT exposed as an MCP verb this increment — it stays human/lib-only as a deliberate safety posture (re-evaluated when the inc-7 human override console lands). Args: { module, available }.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesModule id (one of the 8 enum modules).
availableYestrue to make available, false to remove.
Behavior5/5

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

Beyond annotations (idempotent, not destructive), the description adds the full auth gate logic, error response shapes for forbidden and write-failure, and the successful return format. This provides essential behavioral context for safe invocation.

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 single dense paragraph with every sentence adding value: purpose, auth, errors, note on kill-switch, and args. Efficient and front-loaded.

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

Completeness4/5

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

The description covers auth, error modes, and return format without an output schema. It does not list the concrete module IDs (schema only says 'one of the 8 enum modules'), leaving a small gap for the agent.

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% with descriptions for both 'module' and 'available'. The description only mentions the args without adding new detail or clarifying the module ID enum values, so it adds no extra semantic value.

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 clearly states the tool sets which modules a floor is allowed to enable, targeting Super-Admin with apex flag on the same floor. It distinguishes from potential siblings by noting the 'force-disable kill-switch' is not exposed, and the title reinforces the action.

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 explicitly states the security gate (apex flag, same floor) and provides a clear 'when not to use' by noting the force-disable kill-switch is intentionaly not exposed. However, it does not directly compare to the sibling tool 'floorcast_set_feature_enabled'.

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

floorcast_set_feature_enabledToggle a feature module ENABLED on this floor (Floor-Admin)A
Idempotent
Inspect

Floor-Admin (operator-on-this-floor) toggles a module in the floor's ENABLED set; a module must be AVAILABLE on the floor to enable. PERSISTS the tenant record (inc-6). Runs the FULL authz + availability gate first: a non-Floor-Admin, or enabling a module not available on the floor, gets { ok:false, reason:'forbidden' } (no write). A live KV write failure surfaces { ok:false, reason:'write-failed', error } (no 500). On success returns { ok:true, record } (the persisted next-record). Scope: a valid floor-bound token. Args: { module, enabled }. floorcast_effective_features reflects the toggle on the next read.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesModule id (one of the 8 enum modules).
enabledYestrue to enable, false to disable.
Behavior5/5

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

Annotations are sparse (idempotentHint=true), but description adds rich behavioral details: persistence, authz gate, specific error responses (forbidden, write-failed), and no 500. No contradictions.

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?

Description is comprehensive but slightly verbose. Front-loaded with core action, then details. Could trim minor redundancy, but overall efficient.

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?

No output schema, but description fully explains return values (success, errors) and side effects (floorcast_effective_features update). Complete for the tool's complexity.

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 covers 100% of parameters, so baseline is 3. Description adds value by mentioning that module is one of 8 enums (not in schema) and the availability precondition, improving clarity.

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 clearly states the action (toggles a module in the floor's ENABLED set), the resource (module enabled set for a floor), and the precondition (module must be AVAILABLE). It distinguishes from sibling tools like floorcast_set_feature_availability.

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?

Specifies the target user (Floor-Admin) and precondition (module must be available). Does not explicitly contrast with alternatives, but context is clear.

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

floorcast_unpushRetract your OWN pending highlightAInspect

Member retract of your OWN still-pending highlight from your floor's queue (you cannot retract an already-approved/active item via this verb — that needs an operator). Routed through the floor content policy; the gate is server-side (ownership-checked). CONSEQUENTIAL. Returns { ok:true, id } on success; typed refusals { ok:false, reason } where reason is 'forbidden' (not your submission), 'not-found' (no such pending item), or 'tenant-not-provisioned' (NON-floor10 is currently DENIED). Args: { id }.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending highlight id to retract.
Behavior4/5

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

Annotations do not indicate destructiveness, but the description labels the action as 'CONSEQUENTIAL' and explains server-side ownership checking and possible refusal reasons. This adds behavioral context 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.

Conciseness4/5

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

The description is information-dense but not overly long. Every sentence serves a purpose: action description, limitation, routing, consequential warning, output format. Could be slightly tighter.

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 simple tool with one parameter and no output schema, the description covers all necessary aspects: what the tool does, preconditions (ownership, pending status), possible return values, and error types. It 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 100% with a description for the 'id' parameter. The description adds no new meaning beyond what the schema provides, so baseline score of 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?

The description clearly states that the tool retracts your own still-pending highlight from the floor's queue, using specific verbs and resources. It also distinguishes from other tools by noting that it cannot retract approved/active items.

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 explicitly states when not to use the tool (for already-approved/active items) and mentions that an operator is needed for those cases. It does not name a specific alternative but gives clear exclusion criteria.

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

ic_activity_get_recentRead the calling user's agent-activity logA
Read-only
Inspect

Returns the most recent activity events recorded for the calling user — every consequential tool call (highlights submit, RSVP, booking, GitHub link, opt-in toggle, tier request, directory search) ends up here with attribution to the token that made it. Each event has { ts, tool, scope, token_prefix?, token_label?, via, success, error?, meta? }. Useful for the human to audit 'which of my agents has been doing what.' Args: { limit?: number (max 100, default 25) }. Required scope: membership:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many recent events to return. Default 25, capped at 100.
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds that events include token attribution, success/error status, and detailed fields, providing useful context about what the tool returns.

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

Conciseness4/5

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

The description is two sentences, front-loaded with the main purpose. It is informative but slightly verbose with the enumeration of event types; still clear and efficient.

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 no output schema, the description provides a good summary of the event fields and the use case, making it complete enough for a list tool with one parameter.

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 single parameter 'limit' is fully described in the schema and reinforced in the description with default and max values, adding clarity beyond 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?

The description clearly states it returns recent activity events for the calling user, listing specific event types and the event structure, distinguishing it clearly from sibling tools like administrative audit logs.

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 explicitly mentions the use case for auditing one's own agents, but does not provide explicit guidance on when not to use or compare to alternatives like admin audit search.

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

ic_admin_agent_client_listList class-B agent-client integrations (operator)A
Read-only
Inspect

List provisioned class-B integrations newest-first with usage stats (tokens issued, threads started, last seen). Operator-only (admin:agent_clients + live operator re-check). Secret hashes are never returned. calls_per_day / rejection_rate render absent until a per-call counter lands (v1 has none). Args: { include_revoked?: boolean (default true), limit?: number, offset?: number }. Returns: { ok, clients, has_more } — page past the cap with offset. Required scope: admin:agent_clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax clients (default 200).
offsetNoPagination offset (default 0).
include_revokedNoInclude revoked clients (default true).
Behavior5/5

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

Discloses operator-only, secret hashes never returned, and caveats about missing stats. This adds value beyond the readOnlyHint and openWorldHint annotations, with no contradictions.

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?

Concise, front-loaded with main action. Includes necessary details about scope, returns, and missing fields. Slightly wordy but still efficient.

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?

Complete for a list tool with no output schema. Explains return shape, pagination, operator scope, and field limitations. Covers all information needed 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 coverage is 100%, so baseline 3. Description mentions include_revoked and pagination defaults but adds minimal new meaning beyond the schema descriptions.

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

Purpose5/5

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

Clearly states it lists provisioned class-B integrations with usage stats, newest-first. Distinguishes itself from sibling register/revoke tools by focusing on listing and operator-only access.

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?

Specifies operator-only and required scope admin:agent_clients. Mentions pagination defaults and the absence of certain stats. Does not explicitly state when to use vs alternatives, but the context is clear enough.

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

ic_admin_agent_client_registerRegister a class-B agent-client integration (operator)AInspect

Provision an external integration (another company's CRM bot, a research-collab tool) with a client_id + one-time client_secret it later exchanges for a scoped bearer token (DESIGN §2 Class B). Operator-only: gates on admin:agent_clients AND a live operator-tier re-check. The plaintext secret is returned EXACTLY ONCE (only its hash is stored) — a lost secret means re-register. Grantable scopes are limited to the agent:* family (directory:read / request_meeting / send_intro / ping / thread:write / inbox:read / policy:read); any other requested scope (esp. admin:*) is REFUSED and listed in denied_scopes. Args: { name, operator_human, scopes: string[], contact, autonomy?, requires_signature?, budget_overrides? }. Returns: { ok, client_id, client_secret_once, client }. Required scope: admin:agent_clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name of the integration (e.g. 'Skew meeting bot').
scopesYesExplicitly-enumerated scopes — must be a non-empty subset of the grantable agent:* family. Non-grantable scopes are refused (denied_scopes).
contactYesContact for the operator-of-record (email / handle / URL) so a revoke decision has a human to reach.
operator_humanYesThe human operator-of-record who vouches for this integration.
requires_signatureNoWhen true, the eventual bearer must ALSO carry a valid Ed25519 signature (the pubkey is bound at grant time).
Behavior5/5

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

The description provides extensive behavioral details beyond the annotations: operator-only, scope restrictions (only agent:* family), secret returned exactly once, hash storage, denied_scopes listing, and refusal of admin:* scopes. This adds significant value beyond the minimal 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 somewhat lengthy but each sentence adds unique value. It is front-loaded with the core purpose and provides a logical flow: what it does, restrictions, behavior, and return format. Could be slightly more concise but remains clear.

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 complexity of the tool, the description is complete. It explains the return format (ok, client_id, client_secret_once, client), the one-time nature of the secret, and the scope denial behavior. No output schema is present, so the description adequately covers what the agent needs to know.

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 schema coverage is 100% for the parameters listed in the schema. The description adds meaning by explaining the purpose of each parameter (e.g., contact for revoke decision, scopes limitations). However, there is a minor inconsistency: the description mentions 'autonomy?' and 'budget_overrides?' as optional args but they are not in the input 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?

The title and description clearly state the purpose: 'Register a class-B agent-client integration (operator)'. The description specifies the verb 'Provision' and the resource 'external integration', and distinguishes from sibling tools like ic_admin_agent_client_list and ic_admin_agent_client_revoke.

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 explicitly states it is 'Operator-only', requires scope 'admin:agent_clients', and mentions a 'live operator-tier re-check'. It provides context on when to use (registering external integrations) and hints at limitations (secret returned once). However, it does not explicitly mention when not to use or suggest alternatives.

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

ic_admin_agent_client_revokeRevoke a class-B agent-client integration (operator)A
Destructive
Inspect

Revoke an integration and flag its AUTONOMOUS actions for recipient re-confirmation (DESIGN §9 — interactive actions are NOT flagged, each had per-call approval). Revokes every linked bearer token so the integration is dead immediately, snapshots prior state for one-step revert (DESIGN §18), and returns how many autonomous actions were flagged + tokens revoked. Operator-only (admin:agent_clients + live operator re-check). Idempotent. Args: { client_id: string (cli_), reason: string }. Returns: { ok, actions_flagged, tokens_revoked }. Required scope: admin:agent_clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesWhy the integration is being revoked — recorded on the client record + rollback snapshot.
client_idYesThe cli_<base32> id from ic_admin_agent_client_list.
Behavior5/5

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

Description reveals key behaviors beyond annotations: revokes all bearer tokens for immediate death, snapshots prior state for revert, and returns counts of flagged actions and revoked tokens. No contradiction with 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?

Description is dense but well-organized: purpose, side effects, idempotency, return value, scope, and args are all covered efficiently. Slightly long but each sentence adds value.

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?

Despite no output schema, description explicitly lists return fields (ok, actions_flagged, tokens_revoked). Covers all critical aspects for a destructive admin tool: scope, side effects, idempotency, and design references.

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% with descriptions. Description adds minimal extra info (client_id format cli_<base32>), but schema already explains each parameter adequately.

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?

Description uses specific verb 'Revoke' and resource 'class-B agent-client integration', clearly distinguishing it from sibling tools like ic_admin_agent_client_list and ic_admin_agent_client_register.

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 operator-only scope, idempotency, and that it revokes integrations and flags autonomous actions. Implicitly tells when to use (revoke) versus other actions, but lacks explicit when-not-to-use guidance.

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

ic_admin_approve_eventApprove a pending member-event-request draft (operator)A
Idempotent
Inspect

Approve a pending 'save the date' event draft: flows the wrapped KioskEvent into floor10:events:approved (dedupe-prepend, keep newest 50), drops it from the pending queue, and writes an audit entry. The kiosk events page merges approved drafts with the live Luma list (live wins on the shared slug); once the real Luma event goes live, ic.kv_push.push_events prunes the draft automatically. This NEVER creates a public Luma event — it posts a no-RSVP save-the-date card; IC staff create the live Luma event from the request detail afterward. Two-step: omit confirm (or pass false) for a dry-run preview that returns what the call would do without mutating; pass confirm: true to actually apply. Idempotent: a missing / already-handled / TTL-expired id returns ok:false (and cleans the stale list pointer). Rate-limited to 20 approve+reject mutations per token per UTC day; dry-run calls do NOT count. Args: { id, confirm? }. Returns: dry-run shape on confirm=false; { ok, id } on confirm=true. Required scope: admin:events_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending event id to approve — the draft slug (e.g. 'demo-night-a1b2c3'), as returned by ic_admin_list_pending_events / ic_events_request.
confirmNoSet to true to actually mutate. When false / omitted, returns a dry-run preview that does NOT change state and does NOT count against the daily rate limit.
Behavior5/5

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

Beyond annotations (idempotentHint, destructiveHint), the description adds rate limiting, dry-run behavior, side effects (cleaning stale pointers), and scope requirements. No contradictions with 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?

Somewhat verbose but every sentence adds value. Front-loaded with core purpose and logically organized. Could be slightly more terse, but clarity is not sacrificed.

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 no output schema, the description covers return shapes for both modes, prerequisites, side effects, rate limits, and idempotency. Comprehensive for a complex mutation tool.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds crucial context: explains id as draft slug from list_pending_events, and confirm as dry-run toggle with rate limit exemption. This significantly aids agent understanding.

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 clearly states it approves a pending 'save the date' event draft, specifies the action (flows into approved, drops from pending, writes audit), and distinguishes from creating a Luma event. It contrasts with sibling tools like ic_admin_reject_event by focusing on approval.

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 explains when to use (approve pending drafts), when not to (does not create Luma events), and the two-step dry-run vs confirm process. Idempotency and rate limits are clearly stated, providing full guidance for correct invocation.

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

ic_admin_approve_highlightApprove a pending highlight, publish to the wire (operator)A
Idempotent
Inspect

Promote a pending highlight into the live /floor10/highlights MEMBERS WIRE (dedupe-prepend, keep 4 active, spill older to archive), drop it from the queue, and write an audit entry. Idempotent: a missing or expired id returns ok:false. Scope: admin:highlights_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending highlight id to approve (the submission slug).
Behavior4/5

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

Beyond annotations, the description details the operational effects (dedupe, cap, archive, audit) and idempotent behavior for missing/expired IDs. No annotation contradiction.

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 sentences, no redundancy. First sentence delivers the core action and side effects; second covers idempotency. Very efficient.

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 single-parameter tool with no output schema, the description covers the action, effects, and edge cases (missing/expired). Missing explicit return structure but adequate given simplicity.

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 covers 100% of parameters with description. The description adds that 'id' is the submission slug, providing slight extra context. 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?

The description clearly states the tool promotes a pending highlight to the live wire with specific behavior (dedupe-prepend, keep 4 active, spill older to archive, drop from queue, audit). It distinguishes from siblings like reject and list.

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 description mentions idempotency and scope (admin:highlights_review) but does not explicitly state when not to use or alternatives (e.g., reject for rejection). The context is adequate for inferred use.

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

ic_admin_approve_key_requestApprove a Z.ai key request → mint the key (operator)A
Idempotent
Inspect

Approve a pending Z.ai key request and MINT the proxy key. Two-step: omit confirm (or pass false) for a dry-run preview of the exact proxy block that would be minted; pass confirm: true to mint. IDEMPOTENT on request_id — a second confirmed approve returns the SAME key (it does NOT mint a second key); the plaintext key is surfaced ONLY on the first mint. For member keys, multiplier overrides the requested multiplier. The minted key works ONLY against the IC→Z.ai gateway (it carries zero IC tool scopes). Rate-limited to 20 approve+deny mutations per token per UTC day; dry-run + idempotent re-approve do NOT count. Args: { request_id, multiplier?: 1|2|5|10|20, confirm? }. Returns dry-run shape on confirm=false; on the first confirm:true mint, { ok, minted:true, agent_token, token_prefix, proxy }. Required scope: admin:llm_keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet to true to actually mint. When false / omitted, returns a dry-run preview that does NOT mint and does NOT count against the daily rate limit.
multiplierNoMember keys only: override the requested weekly-token multiplier. Ignored for workshop keys.
request_idYesThe id of the pending request (from ic_admin_list_pending_key_requests).
Behavior5/5

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

Annotations declare idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds critical behavioral context: the two-phase dry-run, the fact that the plaintext key appears only on the first mint, that the key works only against IC->Z.ai gateway with zero IC tool scopes, and the rate-limit specifics. It also states the required scope (admin:llm_keys). This exceeds the information provided by 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.

Conciseness5/5

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

The description is information-dense but well-organized. It front-loads the primary action, then explains the two-step process, idempotence, key scope, rate limits, and parameter details. Every sentence serves a clear purpose with no redundancy. The structure is logical and easy to follow.

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 (two-step, idempotent, rate-limited, specific scope) and the absence of an output schema, the description fully covers what an agent needs: behavior, parameters, return shape, and prerequisites (e.g., using request_id from list). It also notes the required scope and rate-limit exclusion for dry-runs.

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% (all three parameters described). The description adds meaning beyond the schema: it explains that omit/false confirm means dry-run, that multiplier is for member keys only, and that request_id comes from the pending list. However, the schema already documents these with similar descriptions, so the added value is moderate. Score 4 reflects clear extra context without being essential.

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 clearly states the tool approves a pending key request and mints a proxy key. The verb 'approve' and 'mint' specify the action, and the resource (key request) is unambiguous. It distinguishes itself from sibling tools like ic_admin_deny_key_request by mentioning approval and minting.

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?

The description provides explicit guidance on the two-step dry-run/confirm workflow, idempotent behavior, and rate limiting (20 approve+deny per day). It mentions the prerequisite source of request_id (from ic_admin_list_pending_key_requests) and notes that dry-run and idempotent re-approvals do not count toward the rate limit. This effectively tells the agent when and how to use the tool.

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

ic_admin_approve_ownershipApprove a founder-binding claim (operator)A
Idempotent
Inspect

Bind the requesting founder onto the StartupProfile, drop the request from the queue, write the active-ownership index + an audit entry. Once bound, that founder's agent/session may edit the page + post news. MULTI-OWNER + ADDITIVE: a startup may have many co-founders; approving ADDS the requester to the owner set (the first owner becomes the primary founder_clerk_user_id, each subsequent one is appended) — NO existing owner is ever displaced, so there is no rebind/confirm step. Idempotent: re-approving an existing owner, or a missing/expired id, is a clean no-op (ok:false only on missing/expired). Args: { id }. (confirm/force are accepted for back-compat but ignored.) Returns { ok, id, slug, founder_clerk_user_id, current_owners }. Required scope: admin:ownership_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending ownership request id to approve.
forceNoDeprecated/no-op alias for confirm — additive approve never needs it.
confirmNoDeprecated/no-op. Multi-owner approval is additive (no owner is displaced), so no confirmation is needed. Accepted for back-compat.
Behavior5/5

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

The description adds significant context beyond annotations: idempotent behavior ('re-approving an existing owner, or a missing/expired id, is a clean no-op'), additive nature, no displacement, and response structure on missing/expired ('ok:false only on missing/expired'). Annotations already declare idempotentHint=true and destructiveHint=false, which the description confirms and enriches. No contradictions.

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 lengthy but each sentence adds essential information: main action, multi-owner nuance, idempotence, return shape, and scope. It front-loads the core purpose. While it could be slightly more concise, there is no wasted text given the complexity of the operation.

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?

Despite no output schema, the description explicitly states the return fields: '{ ok, id, slug, founder_clerk_user_id, current_owners }'. It also specifies the required scope ('admin:ownership_review'). For a multi-owner, additive, idempotent tool, this provides a thorough understanding of behavior and results.

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 includes descriptions for each parameter. The description adds value by explaining that 'confirm' and 'force' are deprecated/no-op and why ('additive approve never needs it'). It also clarifies that 'id' is the pending ownership request id. This goes beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Bind the requesting founder onto the StartupProfile' and explains the resulting action: 'drop the request from the queue, write the active-ownership index + an audit entry'. It also describes the effect on permissions: 'Once bound, that founder's agent/session may edit the page + post news'. This distinguishes it from sibling tools like ic_admin_reject_ownership and ic_admin_list_pending_ownership.

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 explains when to use the tool by highlighting the multi-owner additive nature: 'approving ADDS the requester to the owner set (the first owner becomes the primary founder_clerk_user_id, each subsequent one is appended) — NO existing owner is ever displaced'. It also clarifies that confirm/force are no-ops. However, it does not explicitly state when NOT to use it (e.g., reject situations), though it implies the context.

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

ic_admin_approve_tier_requestApprove a pending membership-tier request (operator)A
Idempotent
Inspect

Approve a pending tier request and set the user's tier. Two-step: omit confirm (or pass false) for a dry-run preview that returns what the call would do without mutating state. Pass confirm: true to actually apply. If tier is omitted, the user is approved to the tier they requested; pass tier to override (e.g. they asked for ic-member but you approve ai-floor). Rate-limited to 20 approve+deny mutations per token per UTC day; dry-run calls do NOT count. Args: { user_id, tier?: 'ft-member'|'ai-floor'|'ic-member'|'operator', reason?, confirm? }. Returns: dry-run shape on confirm=false; { ok, user_id, from, to, action: 'approve' } on confirm=true. Required scope: admin:tier_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoOptional override. If omitted, approves the user to the tier they requested. 'operator' is approvable here even though it isn't self-requestable.
reasonNoOptional note recorded in the audit trail.
confirmNoSet to true to actually mutate. When false / omitted, returns a dry-run preview that does NOT change state and does NOT count against the daily rate limit.
user_idYesClerk user_id of the pending requester.
Behavior5/5

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

Goes beyond annotations: explains dry-run behavior, rate limit distinction, and that 'operator' tier is approvable despite not being self-requestable. Adds value beyond readOnlyHint and idempotentHint.

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?

Efficiently packed with essential information: purpose, two-step workflow, rate limits, parameter descriptions, return shapes, scope. No fluff.

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?

Covers all necessary context for a mutation tool with dry-run: workflow, rate limits, return shapes, scope. No output schema but return shapes are described. Complete for the complexity level.

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

Parameters5/5

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

Adds meaning beyond schema: explains tier override behavior, notes that 'operator' is allowed here, clarifies reason is audited, and details confirm behavior. Schema coverage is 100% but description enriches.

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 clearly states 'Approve a pending tier request and set the user's tier' and distinguishes from sibling tools like deny and list. It explains the dry-run vs confirm pattern, making purpose specific.

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 describes the two-step workflow and rate limiting. Mentions required scope. Lacks direct comparison to alternatives like deny_tier_request, but provides sufficient context.

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

ic_admin_deny_key_requestDeny a pending Z.ai key request (operator)A
DestructiveIdempotent
Inspect

Deny a pending Z.ai key request. Marks it denied + removes it from the queue; no key is minted. Two-step: omit confirm (or pass false) for a dry-run preview, confirm: true to apply. Refuses to deny an already-approved request (revoke the minted key at /floor10/agent-console instead). Rate-limited to 20 approve+deny mutations per token per UTC day; dry-run does NOT count. Args: { request_id, reason?, confirm? }. Returns dry-run shape on confirm=false; { ok, request_id, was_pending } on confirm=true. Required scope: admin:llm_keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional note recorded in the audit trail.
confirmNoSet to true to actually deny. When false / omitted, returns a dry-run preview that does NOT mutate and does NOT count against the daily rate limit.
request_idYesThe id of the pending request to deny.
Behavior5/5

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

Discloses destructive nature (mutates on confirm), idempotency (refuses to deny already-approved), dry-run behavior, rate limit, scope requirement, and return shapes. No contradictions with annotations.

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?

Five well-structured sentences, front-loaded purpose, each sentence adds unique value (purpose, effect, flow, constraints, args/returns). No redundancy.

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?

Covers all critical aspects: mutation, preview mode, error handling, rate limits, scope, return shapes. No output schema needed given the return description.

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% with good descriptions; description adds context on the two-step workflow and rate limit impact but does not significantly enhance parameter understanding beyond 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?

The description clearly states it denies a pending key request, specifies the effect (marked denied, removed from queue, no key minted), and distinguishes from related tools like approve and revoke.

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 two-step process (dry-run vs. confirm), warns against denying already-approved requests with an alternative action, and details rate limits (20 per token per UTC day, dry-run not counted).

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

ic_admin_deny_tier_requestDeny a pending membership-tier request (operator)A
DestructiveIdempotent
Inspect

Deny a pending tier request. Clears the pending fields + KV snapshot; the user's tier is unchanged. Two-step: omit confirm (or pass false) for a dry-run preview. Pass confirm: true to actually apply. The optional reason is recorded in the audit log and is surfaced to the requester on their /membership page so they understand why. Rate-limited to 20 approve+deny mutations per token per UTC day; dry-run calls do NOT count. Args: { user_id, reason?, confirm? }. Returns: dry-run shape on confirm=false; { ok, user_id, tier, was_pending } on confirm=true. Required scope: admin:tier_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional note. Recorded in the audit trail and shown to the requester on their /membership page.
confirmNoSet to true to actually mutate. When false / omitted, returns a dry-run preview that does NOT change state and does NOT count against the daily rate limit.
user_idYesClerk user_id of the pending requester.
Behavior5/5

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

The description discloses key behaviors beyond annotations: it clears pending fields, leaves user tier unchanged, records reason in audit log shown to requester, rate-limit details, and scope requirement. No contradiction with annotations (idempotentHint consistent with dry-run and one-time effect).

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 highly concise with four sentences, front-loading the purpose. Every sentence adds essential information without redundancy, earning a top score.

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?

Despite no output schema, the description provides return shapes for both call types, rate limits, scope, and behavioral details. It is complete for the tool's complexity and context.

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 value by explaining that reason is surfaced to requester and confirm controls dry-run vs mutation, enriching the schema's basic descriptions.

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

Purpose4/5

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

The description clearly states the tool denies a pending tier request using specific verb and resource. It distinguishes the action (deny vs approve) but does not explicitly differentiate from sibling tools like ic_admin_deny_key_request, though the resource (tier) is clear from the name.

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 provides explicit guidance on the two-step process (dry-run with confirm=false, actual mutation with confirm=true) and mentions rate limits and scope. It lacks explicit when-not-to-use or alternatives (e.g., approve), but the context is sufficient for a deny action.

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

ic_admin_leaderboard_inspectInspect the commits leaderboard + aggregation diagnostics (operator)A
Read-only
Inspect

Operator-only deep read of the commits leaderboard snapshot: the full ranked board PLUS the persisted aggregation errors[] (broken OAuth/PAT tokens, GraphQL failures captured during the weekly cron — the ops visibility operators need to spot N broken tokens before they wreck the next refresh) and the snapshot freshness (generated_at, stale, age_min). Each member carries { rank, handle, name, commits, private? } (private = folded-in private-contribution COUNT, never repo content). Returns: { ok, generated_at, stale, age_min, member_count, members: [...], errors: [{ userId, reason }] }. Required scope: admin:leaderboard_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many ranked members to return. Default 500, capped at 500.
Behavior4/5

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

Annotations already mark readOnlyHint=true. Description adds details about returned aggregation errors and freshness, and clarifies private contributions are counts, not repo content. No contradictions.

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?

Description is dense but well-organized, front-loading purpose and then detailing output. Could trim some parentheticals, but efficient overall.

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?

No output schema; description fully documents return structure ({ok, generated_at, stale, age_min, member_count, members, errors}). Covers scope, output, and use case comprehensively.

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?

Single parameter 'limit' is fully described in schema (type, min, max, description). Description doesn't add meaning beyond schema, 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?

Description clearly states 'Operator-only deep read of the commits leaderboard snapshot' and enumerates returned data (ranked board, errors[], freshness). Distinguishes from sibling ic_leaderboard_get_board (likely non-admin) via operator-only scope.

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 states 'Operator-only' and required scope 'admin:leaderboard_review', and explains use case (spot broken tokens). No explicit exclusions or alternatives, but context is clear.

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

ic_admin_list_feedbackList agent feedback queue (operator)A
Read-only
Inspect

Read the agent-voice queue. Default returns the newest 25 summaries (preview = first 200 chars of message + attribution + priority + kind + resolved flag). Pass full=true to get full records (for export / triage). Filters AND together: kind, priority, resolved (true = closed only, false = open only, omit = both). Returns: { ok, count, total, scanned, filter, records }. Newest first. Required scope: admin:feedback_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoIf true, return full FeedbackRecord (incl. ip_hash, contact). Default false = summaries.
kindNoFilter to one kind.
limitNoDefault 25; max 200.
offsetNoPaging cursor. Default 0.
priorityNoFilter to one priority.
resolvedNoTri-state. true = resolved only, false = open only, omit = both.
Behavior5/5

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

Annotations already declare readOnlyHint=true, but description adds details: default returns 25 summaries, full mode for export, filter behavior (AND), sort order (newest first), required scope, and response structure. Provides rich behavioral context 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.

Conciseness5/5

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

Description is 3-4 concise sentences, front-loaded with main purpose and default behavior. No wasted words; every sentence adds value.

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?

Despite no output schema, description explicitly states return structure ({ok, count, total, scanned, filter, records}). Covers pagination, filters, default behavior, and required scope. Complete for a read 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?

Schema covers 100% of parameters with descriptions, but description adds context like 'Filters AND together', 'Pass full=true to get full records', and explains default pagination. Adds meaningful usage 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?

Description clearly states it reads the agent-voice queue, distinguishes it from sibling tools like ic_admin_resolve_feedback. The verb 'Read' and resource 'agent-voice queue' are specific.

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?

Description implies usage for listing feedback with filters and full mode, but does not explicitly state when to use this over alternatives like ic_admin_resolve_feedback. Lacks explicit when-not-to-use guidance.

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

ic_admin_list_membersList IC members / accounts (operator)A
Read-only
Inspect

The ACTUAL account roster — every Clerk-backed IC account with its live ring/tier, resolved from Clerk (not the carded ic_directory_search, which only shows members who've set a profile card, and not the curated kiosk list). This is what you want to answer 'who are the members' or find a specific account (e.g. one that hasn't set a card yet). Each member: { user_id, name, email, tier ('public'|'ft-member'|'ai-floor'|'ic-member'|'operator'), pending_request (the tier they've requested but not yet been granted, or null), created_at }. Args: { tier?: filter to one ring; q?: case-insensitive name/email/user_id substring filter; limit?: number (default 200, max 500); offset?: number (default 0) }. Filters apply to the fetched page; total is the full Clerk account count and has_more tells you to page with offset (default limit covers all IC accounts in one page today). Required scope: admin:tier_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoCase-insensitive substring match on name / email / user_id.
tierNoFilter the page to accounts currently at this ring.
limitNoPage size (default 200).
offsetNoPage offset (default 0).
Behavior5/5

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

Beyond readOnlyHint annotation, description explains it's the actual roster, includes pending_request, resolves from Clerk, and details pagination behavior (filters apply to page, total is full count).

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?

Well-structured: starts with core purpose, then sibling distinction, then return fields, then args, then pagination. No wasted sentences.

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?

Despite no output schema, description enumerates all return fields (user_id, name, email, tier, pending_request, created_at) and explains pagination and required scope.

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

Parameters5/5

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

Adds meaning beyond schema: explains q is case-insensitive subtitle, limit default 200, offset default 0, and that filters apply to fetched page not overall. Full coverage.

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 clearly states it lists all Clerk-backed IC accounts with their live ring/tier, and contrasts with ic_directory_search and curated kiosk list, making its purpose unambiguous.

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 says when to use (to answer 'who are the members' or find a specific account) and distinguishes from sibling tools (ic_directory_search, curated list). Also explains filters and pagination.

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

ic_admin_list_pending_eventsList pending member-event-request drafts (operator)A
Read-only
Inspect

Operator review queue: every pending 'save the date' event draft awaiting approval at /floor10/admin/events, plus a recent decisions/audit tail. Two sources feed the queue (the source field disambiguates): 'member_request' (a member's agent via ic_events_request) and 'kiosk_submit' (Ray's events kiosk-submit CLI). Each pending record: { id, title, when, venue?, host?, description?, source, requested_by?, submitted_at, submitted_by, request? } — request carries the extra Luma-shaped fields the kiosk card doesn't render (end / capacity / visibility / contact). Each audit entry: { id, action ('approve'|'reject'), by_clerk_user_id, at, reason?, title?, when? }. Use BEFORE ic_admin_approve_event / ic_admin_reject_event to see what's waiting and why. Args: { audit_tail?: number (default 12, max 500), detail?: 'summary'|'full' (default 'full'; 'summary' trims each pending row to id/title/when/source/submitted_at) }. Returns: { ok, count, pending, audit }. Required scope: admin:events_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNoResponse weight. 'full' (default) returns every pending field per row incl. description + the nested Luma-shaped request; 'summary' trims each pending row to { id, title, when, source, submitted_at } for cheap queue triage.
audit_tailNoHow many recent decisions to include. Default 12; max 500.
Behavior5/5

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

The description provides extensive behavioral details beyond the annotations (readOnlyHint: true), including the exact return structure for pending records and audit entries, the two data sources, and the required scope. No contradictions with 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 front-loaded with the main purpose, then provides structured details. It is packed with information but remains readable. Minor redundancy could be trimmed, but overall efficient.

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 tool with 2 optional parameters and no output schema, the description fully covers purpose, usage guidance, parameter details, return format, data sources, and required permission. It is complete given the context.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds valuable context for both parameters: it explains 'detail' as a response weight with concrete effects ('summary' trims rows) and describes 'audit_tail' default and maximum. This goes beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool lists pending event drafts awaiting approval, distinguishes it from sibling tools like ic_admin_approve_event and ic_admin_reject_event, and specifies the two sources feeding the queue. The verb 'List' and resource 'pending member-event-request drafts' are specific and 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?

The description explicitly instructs to 'Use BEFORE ic_admin_approve_event / ic_admin_reject_event' and explains the audit tail for recent decisions. However, it does not explicitly state when not to use this tool or mention alternative tools for other admin review tasks.

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

ic_admin_list_pending_highlightsList pending MEMBERS WIRE highlights (operator)A
Read-only
Inspect

Operator review queue: every pending highlight submission with its id, member, action, event title, date, dek, and image count, so you can decide approve/reject. Excludes test fixtures + stale pointers. Pair with ic_admin_approve_highlight / ic_admin_reject_highlight. Args: { detail?: 'summary'|'full' (default 'full'; 'summary' trims each row to id/member_name/action/event_title/date) }. Scope: admin:highlights_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNoResponse weight. 'full' (default) returns every review field per row; 'summary' trims each row to { id, member_name, action, event_title, date } for cheap queue triage.
Behavior5/5

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

Beyond readOnlyHint, the description details the data returned and the effect of the detail parameter, plus filtering behavior (excludes test fixtures). Fully consistent with annotations.

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?

Concise, front-loaded with purpose, no wasted words. Every sentence adds value.

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?

Despite no output schema, the description lists return fields and explains the detail parameter, making it complete for a list tool. Scope is noted as 'admin:highlights_review'.

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%, but the description adds value by explaining the default 'full' and what 'summary' trims, providing context beyond the schema's enum and description.

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 clearly states the tool lists pending highlight submissions with specific fields (id, member, action, event title, date, dek, image count) for review, distinguishing it from sibling approve/reject tools.

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 pairs with ic_admin_approve_highlight and ic_admin_reject_highlight, and mentions exclusions (test fixtures, stale pointers). Could be improved by stating when not to use (e.g., for approved items), but adequate.

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

ic_admin_list_pending_key_requestsList pending Z.ai key requests (operator)A
Read-only
Inspect

Returns the operator's pending Z.ai-key-request queue plus a recent audit tail. Each pending record: { id, kind ('workshop'|'member'), requester_clerk_user_id, requester_name?, event_id?, event_title?, multiplier?, note?, created_at }. Use BEFORE ic_admin_approve_key_request / ic_admin_deny_key_request. Args: none. Required scope: admin:llm_keys.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already provide readOnlyHint=true. The description adds value by detailing the return structure (pending queue + audit tail) and field list, but does not contradict annotations or add behavioral warnings beyond 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.

Conciseness5/5

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

Two sentences plus a structured field list. Front-loaded with main purpose, highly efficient, and no wasted words.

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?

Even without an output schema, the description thoroughly explains the return value and its fields. Given the tool's simplicity and annotations, it provides all necessary context for correct usage.

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?

Tool has no parameters; description explicitly states 'Args: none'. Since schema coverage is 100% and there are no params, the description adds no additional meaning, earning baseline 4 for zero parameters.

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 clearly states it returns the operator's pending Z.ai-key-request queue plus a recent audit tail, specifying the record structure. It distinguishes from sibling tools like ic_admin_approve_key_request and ic_admin_deny_key_request.

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 says 'Use BEFORE ic_admin_approve_key_request / ic_admin_deny_key_request' and specifies the required scope 'admin:llm_keys', providing clear when-to-use and prerequisites.

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

ic_admin_list_pending_ownershipList pending startup-ownership claims (operator)A
Read-only
Inspect

Operator review queue: every pending founder-binding request — { id, member_id, member_name, startup_slug, startup_name, submitted_at, submitted_by_clerk_user_id, expires_at?, already_owned, current_owner?, current_owners? }. Multi-owner: already_owned now just flags that the slug already has >=1 owner — it is INFO, not a conflict (approving ADDS the requester as a co-founder; current_owners lists the existing set). Pair with ic_admin_approve_ownership / ic_admin_reject_ownership. Args: none. Returns { ok, count, pending }. Required scope: admin:ownership_review.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

The description adds significant behavioral context beyond the readOnlyHint annotation, such as clarifying that 'already_owned' is informational (not a conflict) and explaining multi-owner behavior. It also specifies required scope (admin:ownership_review).

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 concise (one paragraph) and front-loaded with the purpose. It efficiently packs field details and usage notes, though a structured list might improve readability slightly.

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 no output schema, the description fully documents return fields, multi-owner nuances, and required scope. It covers all necessary context for a simple 0-parameter tool.

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% (0 parameters), so baseline score of 3 applies. The description does not need to add parameter info but provides detailed output field documentation.

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 clearly states it lists pending founder-binding requests for operator review. It specifically mentions the return fields and explicitly pairs with related tools (ic_admin_approve_ownership / ic_admin_reject_ownership), distinguishing it from 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?

The description is explicit about the tool being for operators ('Operator review queue') and mentions pairing with approval/rejection tools. It explains multi-owner semantics but does not explicitly state when not to use it or provide exclusions.

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

ic_admin_list_pending_tier_requestsList pending membership-tier requests (operator)A
Read-only
Inspect

Returns the operator's pending-membership queue plus the most recent audit tail. Each pending record: { user_id, email, display_name, current_tier, requested_tier, note, submitted_at }. Each audit entry: { user_id, email, action ('approve'|'deny'|'auto-promote'|'request'|'demote'), from, to?, requested?, reason?, by_clerk_user_id?, at }. Use BEFORE ic_admin_approve_tier_request / ic_admin_deny_tier_request to see who's waiting and why. Args: none. Required scope: admin:tier_review.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate readOnlyHint: true, so the description adds value by specifying the required scope 'admin:tier_review' and detailing the structure of returned records. It does not contradict annotations and provides additional behavioral context beyond what is in annotations.

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 three sentences, each earning its place: first sentence states overall purpose, second details record structure, third provides usage guidance. It is front-loaded with the core function and concise.

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

Completeness4/5

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

For a zero-parameter read-only tool with no output schema, the description is comprehensive: it covers purpose, structure, usage context, and required scope. It lacks details on ordering or pagination, but those are not critical for this tool's simplicity.

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 input schema has zero parameters and 100% schema description coverage, so the baseline is 3. The description merely restates 'Args: none,' adding no new meaning beyond what the schema already conveys.

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?

Description explicitly states it returns the pending-membership queue and audit tail, specifying the verb 'Returns' and the resource. It differentiates from sibling tools ic_admin_approve_tier_request and ic_admin_deny_tier_request by indicating it should be used before them.

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?

The description provides explicit usage context: 'Use BEFORE ic_admin_approve_tier_request / ic_admin_deny_tier_request to see who's waiting and why.' This guides the agent on when to invoke this tool relative to its siblings.

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

ic_admin_list_recent_startup_contentList recently-posted startup content for review (operator)A
Read-only
Inspect

Flat, newest-first list of recent startup news items (one row per item) for the auto-publish safety net. 'Recent' = posted within days (default 7) OR the parent profile was edited in that window. Each row: { slug, startup_name, public_visible, item_id, title, url?, posted_at, source?, profile_updated_at }. A hidden profile still surfaces its rows so you can see + restore what you took down. Pair with ic_admin_takedown_startup_content. Args: { days?: number (default 7) }. Returns { ok, count, rows }. Required scope: admin:content_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (default 7).
Behavior4/5

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

Annotations already declare readOnlyHint=true, matching the list behavior. The description adds value by disclosing that hidden profiles still surface their rows, a key behavioral detail 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.

Conciseness5/5

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

The description is concise (4-5 sentences) and well-structured: purpose, definition of 'recent', output format, pairing, parameters, and required scope. No extraneous 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?

The description covers the return shape and row fields despite no output schema. It includes required scope. Lacks pagination details, but given the simplicity, it is adequately complete.

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

Parameters4/5

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

Schema coverage is 100% for the single parameter days. The description adds meaning by explaining the default value (7) and the definition of 'recent' (posts within days or profile edited window).

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 clearly states the verb 'list' and the resource 'recent startup news items' with a specific use case: 'for the auto-publish safety net'. It distinguishes itself from sibling tools like ic_admin_takedown_startup_content.

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 explicitly pairs the tool with ic_admin_takedown_startup_content, indicating a workflow. It provides context for when to use (reviewing recent content) but does not explicitly state when not to use it.

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

ic_admin_reject_eventReject a pending member-event-request draft (operator)A
DestructiveIdempotent
Inspect

Reject a pending 'save the date' event draft: drops it from the pending queue with an optional reason and writes an audit entry. Does NOT publish anything. Two-step: omit confirm (or pass false) for a dry-run preview; pass confirm: true to actually apply. The optional reason is recorded in the audit log (operator-facing; member requests do not surface it back to the requester today). Idempotent — rejecting an already-gone id still records the decision and returns ok. Rate-limited to 20 approve+reject mutations per token per UTC day; dry-run calls do NOT count. Args: { id, reason?, confirm? }. Returns: dry-run shape on confirm=false; { ok, id } on confirm=true. Required scope: admin:events_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending event id to reject — the draft slug.
reasonNoOptional moderator note, recorded in the audit log.
confirmNoSet to true to actually mutate. When false / omitted, returns a dry-run preview that does NOT change state and does NOT count against the daily rate limit.
Behavior5/5

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

Beyond annotations (destructiveHint=true, idempotentHint=true), the description adds critical details: does NOT publish, records audit entry, requires scope admin:events_review, and differentiates rate limit impact for dry-run calls. No contradictions.

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 information-dense and well-structured, but slightly long. Every sentence adds value, yet could be more concise without losing clarity.

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 3-parameter tool with no output schema, the description covers purpose, workflow, idempotency, rate limits, required scope, and return shapes. It leaves no major gaps for an agent to understand invocation.

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

Parameters5/5

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

With 100% schema coverage, the description adds meaningful context for each parameter: id is 'draft slug', reason is 'moderator note' recorded in audit log, confirm switches from dry-run to actual mutation and affects rate limit counting. This goes beyond the schema descriptions.

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

Purpose5/5

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

The description uses a specific verb ('Reject') and resource ('pending member-event-request draft'), clearly distinguishing it from sibling tools like ic_admin_approve_event. It explicitly states the action on a 'save the date' 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?

The description explains the two-step dry-run vs confirm workflow, mentions idempotency, and notes rate limits for mutations only. It does not explicitly compare to other reject tools (e.g., ic_admin_reject_highlight) but provides sufficient context for when to use this tool.

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

ic_admin_reject_highlightReject a pending highlight (operator)A
DestructiveIdempotent
Inspect

Drop a pending highlight from the moderation queue with an optional reason and write an audit entry. Does not publish. Scope: admin:highlights_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending highlight id to reject (the submission slug).
reasonNoOptional moderator note, recorded in the audit log.
Behavior4/5

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

Annotations already indicate destructive and non-read-only behavior. Description adds that it writes an audit entry and does not publish, providing useful behavioral context 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.

Conciseness5/5

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

Two short, focused sentences with no fluff. Each word adds value.

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 simple tool with good annotations and full schema coverage, the description is complete. It explains the action, side effect (audit entry), and scope.

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%, with both parameters well-described in the schema. The description adds no new meaning beyond restating the optional reason.

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?

Description clearly states the action ('Drop a pending highlight'), resource ('from the moderation queue'), and distinguishes it from publishing. Sibling tools like ic_admin_approve_highlight confirm differentiation.

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?

Indicates scope ('admin:highlights_review') and explicitly says 'Does not publish,' guiding when not to use. No explicit alternatives, but context from siblings is clear.

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

ic_admin_reject_ownershipReject a founder-binding claim (operator)A
DestructiveIdempotent
Inspect

Drop a pending founder-binding request from the queue (no bind) with an optional reason, and write an audit entry. Args: { id, reason? }. Returns { ok, id, slug? }. Required scope: admin:ownership_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe pending ownership request id to reject.
reasonNoOptional moderator note, recorded in the audit log.
Behavior3/5

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

Annotations already provide destructiveHint=true, readOnlyHint=false, idempotentHint=true. The description adds that it drops a request and writes an audit entry, aligning with these hints. It does not contradict annotations. However, it lacks details like whether the action is reversible or triggers notifications. The addition of audit trail is useful but not extensive.

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 brief and includes essential information: action, parameters, return shape, and required scope. However, it redundantly lists parameters in the text when the schema is present. Could be more concise by omitting the explicit 'Args' line.

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 no output schema, the description provides the return shape '{ ok, id, slug? }' and mentions required scope. It covers the key inputs, outputs, and behavioral effects. However, it does not explain post-action effects like notifications or whether the request is permanently deleted. For a simple rejection, it is fairly complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description restates 'Args: { id, reason? }' but adds no new semantic meaning beyond what the schema already provides. The schema already describes 'id' and 'reason' adequately, so the description adds minimal value.

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 clearly states the action: 'Drop a pending founder-binding request from the queue (no bind) with an optional reason, and write an audit entry.' It uses specific verbs ('drop', 'reject') and resource ('pending founder-binding request'). The title 'Reject a founder-binding claim' also clarifies purpose. This distinguishes it from sibling tools like ic_admin_approve_ownership.

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 implies usage for rejecting a pending ownership request and specifies required scope 'admin:ownership_review'. However, it does not explicitly state when not to use or compare with alternatives like ic_admin_approve_ownership. The sibling list includes many admin tools, but the description could be more explicit about context.

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

ic_admin_resolve_feedbackResolve a feedback ticket (operator)A
Idempotent
Inspect

Mark one ticket resolved with an optional note. Two-step: omit confirm (or pass false) for a dry-run preview that returns the would-be-updated record without mutating. Pass confirm: true to actually apply. Already-resolved tickets return error_kind 'already_resolved' (idempotent at the channel level — no double-write of resolved_at). Args: { ticket_id, note?, confirm? }. Returns: dry-run shape on confirm=false; { ok, record } on confirm=true. Required scope: admin:feedback_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional resolution note. Recorded on the record. Useful for 'shipping in v1.18' or 'wontfix — out of scope'.
confirmNoSet true to actually mutate. When false / omitted, returns a dry-run preview that does NOT change state.
ticket_idYesticket_id from a prior submit (format fb_*).
Behavior5/5

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

Discloses two-step mutation control, dry-run preview, idempotency, and error_kind 'already_resolved'. Requires scope 'admin:feedback_review'. No contradiction with annotations (idempotentHint=true, destructiveHint=false).

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?

Five well-structured sentences with front-loaded purpose. Every sentence adds value: purpose, two-step process, idempotency, arguments, return shapes, required scope. No fluff.

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 mutation tool with no output schema, the description fully explains return shapes (dry-run vs. {ok, record}) and error case (already_resolved). Complete for agent to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100% with descriptions. Description restates parameters and adds contextual value (e.g., dry-run behavior for confirm, note for 'shipping in v1.18'). Adds meaning beyond schema beyond baseline.

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?

Description begins with 'Mark one ticket resolved with an optional note,' which is a specific verb+resource. It clearly distinguishes from sibling admin tools (e.g., ic_admin_approve_event, ic_admin_list_feedback) by focusing on resolving feedback tickets.

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 describes the two-step process (dry-run vs. confirm), when to use confirm, and idempotent behavior for already-resolved tickets. Provides clear context but doesn't explicitly mention alternatives like ic_admin_list_feedback.

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

ic_admin_takedown_startup_contentTake down a startup news item or hide a whole profile (operator)A
Destructive
Inspect

Pull auto-published founder content. With item_id: remove that single news item from the profile's news[]. Without item_id: hide the WHOLE startup (public_visible=false). Both rebuild the public cards, mirror to blob, revalidate the public pages, and write an audit entry. Idempotent (removing an already-gone item / hiding an already-hidden profile returns ok:true). NB: a removed news item cannot be restored — the founder must re-post it. Args: { slug, item_id?, reason? }. Returns { ok, slug, item_id?, scope }. Required scope: admin:content_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe startup slug to act on.
reasonNoOptional moderator note, recorded in the audit log.
item_idNoNews item id to remove. Omit to hide the whole profile.
Behavior1/5

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

The description claims idempotency ('Idempotent (removing an already-gone item / hiding an already-hidden profile returns ok:true)') but the annotations set idempotentHint: false. This is an annotation contradiction, reducing behavioral transparency to 1. Otherwise, the description provides good detail on side effects (rebuilds cards, mirrors, revalidates, writes audit) and irreversibility.

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 single well-structured paragraph that front-loads the main action, then explains conditional modes, side effects, idempotency, irreversibility, and finishes with args and return summary. Every sentence adds value with no wasted words.

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?

Despite no output schema, the description includes the return shape and required scope (admin:content_review). It covers side effects, idempotency, irreversibility, and conditional behavior, providing a complete picture for an agent to use the tool correctly.

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

Parameters5/5

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

The description adds significant meaning beyond the schema: it explains the conditional behavior of item_id (present vs absent), the purpose of reason (moderator note for audit log), and the role of slug. With 100% schema coverage, the description enriches every 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?

The description clearly states what the tool does: 'pull auto-published founder content.' It distinguishes two modes based on the presence of item_id: removing a single news item or hiding the whole profile. This differentiates it from sibling admin tools like approval or listing tools.

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 explicitly explains when to use each mode: with item_id to remove a news item, without to hide the entire profile. It also notes idempotency and irreversibility of news item removal. However, it does not explicitly compare to alternatives or state when not to use it, though sibling context makes the purpose clear.

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

ic_agent_directory_lookupFind addressable IC members + their inbox postureA
Read-only
Inspect

Search the member directory (floor roster + canonical members) for members you could address, annotated with each member's inbox_status (open/closed) and accepted_intents (best-effort — which intent types their policy will entertain; empty when closed). This is a routing HINT ('don't bother sending a meeting_request to a closed inbox'), not the authoritative decision — the policy engine still evaluates the real envelope. Closed-inbox members are still returned so you see they exist. Args: { query: string (2-80 chars), limit?: number (default 20, max 50) }. Returns: { ok, query, count, results: [{ member_id, member_name, inbox_status, accepted_intents }] }. Required scope: agent:directory:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 20, max 50.
queryYesName / display-name / member-id fragment, 2-80 chars.
Behavior4/5

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

Annotations already declare readOnlyHint=true; the description adds context that the result is a hint, not authoritative, and details the return fields (inbox_status, accepted_intents).

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?

Concise, well-structured description that front-loads the core purpose and usage, with no superfluous content.

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 description is complete for a read-only search tool with 2 parameters and a simple return structure, including required scope and behavioral caveats.

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%, but the description adds semantic context: query length constraints (2-80 chars), limit default/max (20/50), and the meaning of return fields beyond their names.

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 clearly states it searches the member directory for addressable IC members, annotated with inbox_status and accepted_intents, distinguishing it from the sibling ic_directory_search tool.

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 states it's a routing hint for avoiding closed inboxes before sending meeting requests, and notes that closed-inbox members are still returned so the agent knows they exist.

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

ic_agent_inbox_blockBlock a sender from my agent inboxAInspect

Add an entry to YOUR inbox blocklist (the policy.blocklist your policy engine consults before any rule). Future envelopes from a blocked sender are silently dropped — they get an opaque ok-shape and never learn they're blocked. Specify EXACTLY ONE of operator / member / client. Idempotent (re-blocking an existing entry is a no-op success). Optional reason is recorded on a server-side audit row only (the blocklist itself stores no reason). The owner is always you (the token's member_id) — you can only manage your own blocklist. Args: { operator?: string, member?: string, client?: string, reason?: string }. Returns: { ok, blocklist, changed }. Required scope: agent:inbox:write. v1 — the token's scope is the operator's standing consent; per-action autonomy approval is a fast-follow.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientNoBlock by agent_client client_id (class-B).
memberNoBlock by member_id.
reasonNoOptional note — recorded on a server-side audit row, NOT on the blocklist entry.
operatorNoBlock by operator_human (the human behind the sending token).
Behavior1/5

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

The description claims idempotency ('re-blocking an existing entry is a no-op success'), but the annotations set idempotentHint=false. This is a direct contradiction. The description otherwise provides useful behavioral details (silent drop, audit logging, self-ownership), but the contradiction invalidates trust.

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 comprehensive but slightly long. It is front-loaded with the main action and each sentence adds unique information. Could be slightly more concise, but structure is clear.

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

Completeness4/5

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

Given the lack of output schema, the description covers required scope, side effects, idempotency, and return shape. It explains ownership and audit. Missing some details on return fields ('blocklist', 'changed'), but overall thorough.

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 value by specifying exclusivity of operator/member/client and explaining that reason is recorded in audit only. This goes beyond the schema descriptions.

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

Purpose5/5

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

The description explicitly states the action ('Add an entry to YOUR inbox blocklist') and the effect ('Future envelopes from a blocked sender are silently dropped'). It clearly distinguishes from sibling tools like unblock or list_blocks. The title reinforces the purpose.

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

Usage Guidelines4/5

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

The description provides clear guidance: specify exactly one of operator/member/client, and notes idempotency. It explains when the tool is used (before policy rules) and the effect (silent drop). However, it does not explicitly state when not to use it or compare with alternatives like unblock.

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

ic_agent_inbox_get_threadFetch one agent-inbox thread + envelopes + auditA
Read-only
Inspect

Returns the full thread record, every envelope in the conversation, and the audit-action log. Caller must be either the recipient (thread.parties.to.member_id matches token's member_id) OR the original sender (thread.parties.from.token_sha256 matches token's sha256). Otherwise returns 'thread_not_found' (404-shape — does not leak that a thread exists for someone else). Args: { thread_id: string (thr_) }. Returns: { ok, thread, envelopes, actions }. Required scope: agent:inbox:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThread id from ic_agent_inbox_list_threads or ic_agent_inbox_send_envelope. Shape thr_<26-char base32>.
Behavior4/5

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

The description adds behavioral context beyond annotations: the privacy mechanism of returning a 404-shape error to unauthorized callers, the structure of returned data (thread, envelopes, actions), and the authorization requirement. Annotations already declare readOnlyHint=true, which is consistent.

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 concise and well-structured: it starts with the purpose, then authorization rules, privacy behavior, argument format, return structure, and required scope. Every sentence adds important information without redundancy.

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?

Despite no output schema, the description explains what the tool returns (ok, thread, envelopes, actions). It covers authorization, privacy, parameter format, and required scope. For a tool with a single parameter and clear behavior, this 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?

The description mentions the parameter thread_id with its shape and source, but this does not add substantial meaning beyond the input schema, which already describes the parameter with the same constraints. With schema coverage at 100%, the description adds minimal extra value for parameter understanding.

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 explicitly states that the tool returns the full thread record, every envelope, and the audit-action log. This is a specific verb+resource combination. The name 'get_thread' is distinct from sibling tools like 'ic_agent_inbox_list_threads' (which lists summaries) and 'ic_agent_inbox_reply' (which sends a reply).

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 specifies who can call the tool (recipient or original sender) and what happens if unauthorized (404, no leak). It also mentions the required scope 'agent:inbox:read'. While it does not explicitly compare to list_threads, the context is sufficient for an agent to decide when to invoke this tool.

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

ic_agent_inbox_list_blocksList my agent-inbox blocklistA
Read-only
Inspect

Return the blocklist entries on YOUR inbox policy. Each entry is exactly one of { operator } | { member } | { client }. Empty array when you've blocked nobody (or have no policy yet). Caller-scoped to the token's member_id. Args: none. Returns: { ok, count, blocklist }. Required scope: agent:inbox:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Adds valuable behavioral context beyond readOnlyHint: empty array when no blocks, return structure {ok, count, blocklist}, required scope. Fully informs agent about operation side effects.

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 efficient sentences, front-loaded with main purpose, no wasted words.

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?

Though no output schema, description fully covers return value shape and edge cases. Complete for a simple list tool with annotations.

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?

No parameters, and description explicitly states 'Args: none'. With 100% schema coverage and no parameters, baseline 4 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?

Description clearly states it returns blocklist entries, specifies entry types (operator, member, client), and indicates caller-scoping. Distinguishes from sibling mutation tools like block/unblock.

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?

Clear context for when to use (get your blocklist), but does not explicitly exclude alternatives or provide when-not-to guidance. Simplicity of tool reduces need for extensive guidelines.

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

ic_agent_inbox_list_threadsList threads in my agent inbox (newest first)A
Read-only
Inspect

Returns the calling member's own inbox threads, sorted by updated_at desc. Caller-scoped server-side — the member_id is taken from the token, so an agent can only ever see its operator's inbox. Use this BEFORE ic_agent_inbox_get_thread to find what's new. Args: { limit?: number (default 25, max 100), offset?: number (default 0) }. Returns: { ok, count, threads }. Required scope: agent:inbox:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 25, max 100.
offsetNoDefault 0. Pair with limit for paging.
Behavior5/5

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

Adds significant context beyond annotations: caller-scoped, member_id from token, agent can only see operator's inbox, sorted by updated_at desc, required scope. The readOnlyHint is already present, but the description reinforces and details behavioral traits without contradiction.

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?

Concise three-sentence description: first sentence states main purpose and sorting, second explains scope and usage, third lists parameters and return shape. Each sentence is valuable and no wasted words.

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 no output schema, the description explains the return shape ({ok, count, threads}), sorting, scoping, and usage guidance. For a list tool, this is complete and provides all necessary context for an agent to decide when to use it.

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?

Both parameters have schema descriptions (100% coverage). The description restates defaults and max, adding marginal value. It also explains return shape but does not enrich parameter semantics further. 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?

The description clearly states the tool returns the calling member's own inbox threads sorted by updated-at descending. It specifies the scope (caller-scoped, operator inbox only) and explicitly distinguishes it from the sibling 'ic_agent_inbox_get_thread' by recommending usage before 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 Guidelines5/5

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

Provides explicit guidance: 'Use this BEFORE ic_agent_inbox_get_thread to find what's new.' This directly positions the tool within a workflow and differentiates it from a sibling. It also implies the tool is for discovery before detail retrieval.

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

ic_agent_inbox_replyReply to / decide on an agent-inbox threadAInspect

Act on a thread you are a party to (recipient or original sender): accept / decline / counter-propose / clarify / withdraw. Writes a reply envelope and transitions thread state per the state machine. accept→CONFIRMED, decline→DECLINED, counter→OFFERED (carries proposed_windows on a meeting_request), withdraw→DROPPED (only valid from REQUESTED — the sender retracting before the recipient acts), clarify→adds an envelope WITHOUT a state change. Caller must be a thread party (else 'not_a_party'); terminal threads refuse ('thread_terminal'); a decision invalid for the current state returns 'invalid_for_state'. The actor member_id is taken from the token. Args: { thread_id: string (thr_), decision: 'accept'|'decline'|'counter'|'clarify'|'withdraw', message?: string ≤2000, proposed_windows?: [{ start: ISO, end: ISO, tz_hint?: string }] }. Returns: { ok, envelope_id, new_state }. Required scope: agent:thread:write. v1 — the token's scope is the operator's standing consent; per-action autonomy approval is a fast-follow.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional human note carried on the reply envelope. Sanitized + length-capped server-side.
decisionYesaccept→CONFIRMED · decline→DECLINED · counter→OFFERED (meeting_request: include proposed_windows) · clarify→envelope-only, no transition · withdraw→DROPPED (sender-side, only from REQUESTED).
thread_idYesThread id (thr_<base32>) from list_threads / get_thread.
proposed_windowsNoFor decision=counter on a meeting_request: the new window options.
Behavior5/5

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

The description thoroughly explains the state transitions (accept→CONFIRMED, etc.), error conditions, that it is a write operation (readOnlyHint=false), and that the actor member_id is taken from the token. Annotations are consistent and description adds significant behavioral context 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 front-loaded with the core purpose and decision options, then provides state machine details, error conditions, parameter summary, return shape, and scope. It is informative but slightly dense; could be more concise, but every sentence adds value.

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 no output schema, the return value is described briefly (ok, envelope_id, new_state). The description covers state machine, errors, authorization (scope requirement), and parameter details. It is sufficiently complete for an agent to understand usage and behavior.

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% with each parameter described. The description adds further context, e.g., for decision enum it specifies the state transitions and that proposed_windows should be included for meeting_request counter. This enhances understanding beyond 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?

The description clearly states it is for acting on a thread as a party, listing specific decisions (accept/decline/counter/clarify/withdraw) and how they affect thread state. It is distinct from siblings like ic_agent_inbox_send_envelope which also writes envelopes but has different purpose.

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

Usage Guidelines4/5

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

The description explicitly states that the caller must be a thread party, and lists error conditions (not_a_party, thread_terminal, invalid_for_state). It does not provide an explicit alternative tool for different actions, but the constraints are clear enough to guide appropriate usage.

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

ic_agent_inbox_send_envelopeSend a typed intent to another IC member's agent inboxAInspect

Route a typed intent (ping / request_meeting / send_intro) to another IC member's agent inbox. Recipient's policy engine decides what happens — store + notify, store + queue-for-tap, silently drop (blocklist), or refuse (inbox closed). Server-side: sanitizes body (C0 controls / zero-width / NFKC), wraps into the per-intent payload, persists thread + envelope + sender-history + audit, evaluates policy, returns the decision. Scopes per intent: ping → agent:ping (ai-floor+); request_meeting → agent:request_meeting (ic-member+); send_intro → agent:send_intro (ic-member+). send_intro brokers an introduction TO the recipient and requires intro_target_name + body (the intro_pitch) + expected_outcome + consent_target_has_opted_in=true (anti-spam — you MUST have the target's consent). Idempotency: pass idempotency_key to make the (token, key) pair cached for 24h. Returns: { ok, envelope_id, thread_id, state, policy_decision }. Recipient inbox closed → mcpError. Blocklisted senders get an opaque ok-shape with random ids (silent-block — no persistence visible to the sender; the audit row is server-side only). PRECHECK: call ic_agent_directory_lookup first — a member whose inbox_status is "closed" (the default for newly-joined members) cannot be reached and this verb will refuse. v1 SHIP note: request_meeting wraps body into context_summary with sensible defaults until the agent-console UI exposes full per-intent args.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient IC member slug (e.g. 'nicholas-e', 'michalis'). Must be addressable — their inbox_status must be 'open'. Resolve the slug and check inbox_status via ic_agent_directory_lookup.
bodyNoFree-form context. REQUIRED for ping (≤800). For request_meeting: becomes context_summary. For send_intro: becomes intro_pitch (≤4000). Sanitized server-side.
intentYesping = heads-up, no reply expected, ≤800 chars, no URLs (anti-phish). request_meeting = meeting invite; body becomes context_summary (recipient counter-proposes windows in v1). send_intro = broker an introduction TO the recipient; requires intro_target + intro_pitch (=body) + expected_outcome + consent_target_has_opted_in (anti-spam: you MUST have the target's consent). message = open a back-and-forth conversation; body is the message (≤4000, URLs allowed — it's dialogue with a policy-gated member, not a cold ping); the recipient replies via clarify and either side closes via decline/withdraw.
idempotency_keyNoOptional deterministic key. Same (token, key) within 24h returns the same response. Use UUIDs or a deterministic-from-source hash.
expected_outcomeNosend_intro: what you're asking the recipient to do. REQUIRED for send_intro.
intro_target_orgNosend_intro: the intro target's org (optional).
intro_target_nameNosend_intro: name of the person being introduced TO the recipient.
intro_target_contextNosend_intro: short context on who the target is / why (optional).
intro_target_linkedin_urlNosend_intro: the intro target's LinkedIn URL (optional).
consent_target_has_opted_inNosend_intro: you attest the intro target has consented. MUST be true — the server rejects false/absent (anti-spam, DESIGN §5).
Behavior5/5

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

Discloses behavior beyond annotations: sanitization, persistence, policy evaluation, silent blocks with opaque responses. No contradiction with annotations (readOnlyHint=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?

Well-structured with clear sections and bullet points. Slightly verbose but all content is valuable. Could be trimmed slightly but not wasteful.

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 10 parameters, multiple intents, and security constraints, the description covers everything: return shape, idempotency, precheck, anti-spam, blocking behavior. No output schema but return described.

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

Parameters5/5

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

Every parameter has detailed description adding context to schema: body length limits per intent, consent requirement, idempotency key usage. Schema coverage is 100%, description enhances it significantly.

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?

Clearly states the verb 'Route' and resource 'typed intent to another IC member's agent inbox'. Distinguishes from siblings like ic_agent_inbox_reply by focusing on sending envelopes.

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?

Provides explicit guidance: precheck with ic_agent_directory_lookup, idempotency key usage, intent-specific requirements (e.g., consent_target_has_opted_in for send_intro). Explains when it fails (inbox closed) and silent blocking.

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

ic_agent_inbox_unblockRemove a sender from my agent-inbox blocklistAInspect

Remove an entry from YOUR inbox blocklist. Specify EXACTLY ONE of operator / member / client, matching the original block target. Idempotent (removing an entry that isn't present is a no-op success). The owner is always you (the token's member_id). Args: { operator?: string, member?: string, client?: string }. Returns: { ok, blocklist, changed }. Required scope: agent:inbox:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientNoUnblock by agent_client client_id.
memberNoUnblock by member_id.
operatorNoUnblock by operator_human.
Behavior1/5

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

Description claims idempotent operation, but annotations set idempotentHint to false, creating a direct contradiction. This misleads the agent about the tool's behavior.

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?

Concise and well-structured: purpose, constraint, idempotency, owner, args, returns, scope. No redundant information, front-loaded key points.

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 no output schema, the description provides return structure. Covers required scope, ownership, and idempotency. Complete for the tool's complexity.

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% (each param has description). The description adds the crucial constraint that exactly one must be specified, improving semantic clarity beyond 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?

Clearly states the action (remove an entry from inbox blocklist) and resource (blocklist). Distinguishes from sibling tools like ic_agent_inbox_block and ic_agent_inbox_list_blocks.

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 constraint (exactly one of operator/member/client) and mentions idempotent behavior. Does not explicitly state when not to use or mention alternatives, but the context is sufficient.

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

ic_agent_inbox_undoUndo a reversible auto-action within its windowAInspect

Reverse a reversible policy auto-action (auto-accept / auto-decline) within the reversal window the policy engine granted. Forward transitions are one-way, so undo restores the EXACT prior state recorded on the auto-action's audit row. Gating: the action must exist + you must be a thread party (else 'not_a_party' / 'thread_not_found'); the thread must still carry an open reversible_until and the action must encode a recoverable prior_state (else 'invalid_for_state' — window closed or nothing reversible). On success the thread is restored, the window is cleared (one undo per window), and a reversal audit row is written. Args: { action_id: string (act_) }. Returns: { ok, envelope_id, new_state }. Required scope: agent:inbox:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_idYesAudit action id (act_<base32>) of the auto-action to reverse — from get_thread's actions[].
Behavior4/5

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

Annotations have no contradictions; description adds details about restoring prior state, clearing the window, and writing an audit row, well beyond what annotations provide.

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?

Description is dense but well-structured, front-loading purpose, then gating, behavior, and returns. A bit long but every sentence adds value.

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 one parameter and no output schema, the description specifies return fields and replication semantics, making it complete for its complexity.

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 covers 100% of parameters, but description adds value by specifying format (act_<base32>) and source (from get_thread's actions).

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 clearly states the tool reverses reversible auto-actions (auto-accept/auto-decline) within a window, using specific verbs and resources. It is distinct from siblings like block or get_thread.

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 provides clear gating conditions (action must exist, thread party, active window, recoverable state) but does not explicitly state when not to use or compare to alternatives.

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

ic_agent_outbox_listList threads I STARTED (my outbox, newest first)A
Read-only
Inspect

Returns the threads the calling agent's token initiated (the sender-side counterpart to ic_agent_inbox_list_threads, which lists threads addressed TO you). Caller-scoped server-side — keyed on the token's sha256, so an agent only ever sees threads it started. Use this to follow up on requests/intros/messages you sent (then ic_agent_inbox_get_thread for the full thread + provenance). Args: { limit?: number (default 25, max 100), offset?: number (default 0) }. Returns: { ok, count, threads }. Required scope: agent:inbox:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 25, max 100.
offsetNoDefault 0. Pair with limit for paging.
Behavior5/5

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

The description adds scoping details beyond annotations: 'keyed on the token's sha256, so an agent only ever sees threads it started'. It also lists required scope 'agent:inbox:read'. No contradiction with readOnlyHint.

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 concise (6 sentences), front-loaded with purpose, then usage, parameters, and return shape. Every sentence adds value without redundancy.

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 no output schema, the description includes the return shape { ok, count, threads }. It also mentions required scope. Missing details about thread object shape, but that is covered by the get_thread tool. Adequate for a listing 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?

Schema coverage is 100% with descriptions for both parameters. The description restates defaults and max values, adding value by consolidating information, though not adding new semantics beyond 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?

The description clearly states it returns threads initiated by the calling agent, with the title emphasizing 'I STARTED'. It explicitly differentiates from ic_agent_inbox_list_threads, which lists threads addressed to you.

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 provides explicit when-to-use guidance: 'Use this to follow up on requests/intros/messages you sent', and suggests the next step tool ic_agent_inbox_get_thread. It also contrasts with the sibling inbox tool.

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

ic_agent_policy_getRead my agent-inbox policyA
Read-only
Inspect

Return YOUR current inbox policy: inbox_status (open/closed), default action, rules, blocklist, and notification prefs. A member who has never opened their inbox gets the closed default. Caller-scoped to the token's member_id — you can only read your own policy. Args: none. Returns: { ok, policy, presets } (presets = the available preset slugs). Required scope: agent:policy:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already provide readOnlyHint=true, but description adds meaningful context: default for new members, required scope, and return structure (ok, policy, presets). No contradictions.

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 concise sentences; first sentence states purpose clearly. Every sentence adds value (scope, defaults, return format, scope requirement). No wasted words.

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 no parameters and no output schema, the description fully covers what the tool returns, how it behaves for new members, and the required auth scope. No gaps for a simple read-only getter.

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?

No parameters exist (0 params, 100% schema coverage), so baseline is 4. Description confirms 'args: none' and doesn't need to add parameter details.

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?

Explicitly states it returns the current inbox policy, listing the specific fields (inbox_status, default action, rules, blocklist, notification prefs). Clearly distinguishes from sibling set tool by naming the action 'read' and referencing the set tool in context.

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?

Describes scope (caller-scoped to member_id) and default behavior for new members. However, it does not explicitly contrast with the set tool or provide when-to-use vs. when-not-to-use guidance beyond the scope constraint.

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

ic_agent_policy_setOpen / configure my agent inbox (set policy)A
Idempotent
Inspect

Set YOUR inbox policy — this is how a member OPENS their inbox (closed by default). Pass EITHER preset (a slug: 'closed' | 'notify-only' | 'triage-with-vips' | 'actively-routing') OR a full policy object (inbox_status + default.action + optional rules / blocklist / notifications), not both. The prior policy is snapshotted to a 30-day rollback key on every save. Opening to notify-only is the lowest-friction consent step. Caller-scoped — you can only set your own policy. Args: { preset?: string } XOR { policy?: object }. Returns: { ok, policy, snapshot_ts }. Required scope: agent:policy:write. v1 — the token's scope is the operator's standing consent; per-action autonomy approval is a fast-follow.

ParametersJSON Schema
NameRequiredDescriptionDefault
policyNoA full Policy object. Mutually exclusive with `preset`.
presetNoA preset slug. Mutually exclusive with `policy`.
Behavior4/5

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

Discloses beyond annotations: prior policy snapshotted to 30-day rollback key, required scope, and return shape. Annotations already indicate mutation and idempotency; description adds useful 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?

Description is packed with information but remains readable and front-loaded with purpose. Slightly long, but every sentence adds value; could separate technical details for brevity.

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?

Covers all relevant aspects: purpose, parameters with mutual exclusion, rollback behavior, permission scope, return values, and future plans. No output schema exists, so description compensates fully.

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

Parameters5/5

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

Adds value beyond schema by explaining mutual exclusivity of preset and policy, listing preset slugs, and detailing policy structure (inbox_status, default.action, optional fields). Schema coverage is 100%, but description enriches understanding.

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 clearly states it sets the user's inbox policy and opens the inbox, with specific verb 'Set' and resource 'YOUR inbox policy'. It distinguishes from sibling tool 'ic_agent_policy_get' and other inbox tools.

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 guidance on when to use preset vs policy, emphasizes 'notify-only' as lowest-friction, and explains caller-scoping. Lacks explicit mention of alternatives or when not to use, but context is sufficient.

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

ic_capabilitiesWhat can I do here? (tool catalog + reachability for THIS token)A
Read-only
Inspect

In-band capability matrix: every registered MCP tool with its one-line description, required scope (null = any valid token), the minimum membership tier whose users can mint a token carrying that scope, and whether THIS caller's token can reach it right now ('reachable' | 'needs_scope:'). Use it to plan before calling scope-gated tools and to tell your human exactly which tier + scopes a token needs — remember scopes CANNOT be added to an existing token (a new one must be minted with the scope in the signup array). Available to any valid token — no extra scope. additional_gate (usually null) names a per-tenant ROLE the handler resolves that no scope expresses — today the floorcast floor-admin / super-admin writes. It is NOT folded into reachability, which is scope-derived only: this endpoint sees your scopes, never your floor roles, so a tool can read 'reachable' and still return forbidden if you don't hold the role. Args: none. Returns: { count, caller: { scopes }, tools: [{ name, description, required_scope, min_tier, reachability, additional_gate }] }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, the description reveals a critical behavioral nuance: reachability is scope-derived and does not reflect floor roles, so a tool may appear reachable but still return forbidden. It also explains the 'additional_gate' field and that scopes cannot be added to existing tokens, providing rich 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.

Conciseness3/5

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

The description is a single dense paragraph with many clauses and parentheticals. It conveys valuable information, but its structure is not concise or easily scannable; breaking it into shorter sentences or bullet points would improve readability without losing content.

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?

Despite lacking an output schema, the description fully specifies the return shape ({ count, caller: { scopes }, tools: [...] }) and explains edge cases like the relationship between reachability and roles. It also clarifies the 'additional_gate' field, making the tool's behavior fully understandable without needing extra documentation.

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 input schema has zero parameters, so there is nothing to document. The description explicitly states 'Args: none,' and the schema coverage is trivially 100%. Baseline for zero parameters is 4, and the description confirms the absence without adding unnecessary detail.

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 clearly states the tool provides an 'in-band capability matrix' listing every registered MCP tool with its description, required scope, minimum tier, and current token reachability. This distinguishes it from sibling tools, which perform domain-specific actions rather than cataloging.

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 says to use it 'to plan before calling scope-gated tools' and to inform the human about required tiers and scopes. It also notes it's 'available to any valid token — no extra scope', giving clear guidance on access.

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

ic_context_getGet Frontier Tower SF local weather + timeA
Read-only
Inspect

Current weather + local time for IC's home (Frontier Tower SF). Source: Open-Meteo, cached ~10min. Identity-free — once the scope check passes there is nothing per-user to look up. Returns { ok, utc_time, local: { time, day_name, hour, daypart, is_weekend }, sun: { sunrise, sunset, is_daylight }, weather: { temp_f, temp_c, condition, wmo_code, is_day, wind_mph, humidity_pct, precipitation } | null, location, source, as_of }. Args: none. Required scope: context:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

The description discloses important behavioral traits beyond the annotations: data source (Open-Meteo), caching behavior (~10min), identity-free nature, and the full return structure with all fields. Annotations already provide readOnlyHint and openWorldHint, but the description adds valuable context about how the data is sourced and what the agent can expect in the response.

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 well-structured: a brief purpose statement, followed by source/cache details, identity note, return shape, and scope requirement. While it is somewhat verbose (listing the entire return schema), every sentence provides valuable information. It maintains a logical flow and front-loads the main purpose.

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 no output schema, the description fully specifies the return value structure, source, caching, and required scope. It covers all relevant aspects for an AI agent to understand what the tool does and what it returns. For a simple read-only context tool, it is completely adequate.

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 no parameters, and the description explicitly notes 'Args: none.' With 0 parameters, the baseline is 4, and the description appropriately clarifies that no arguments are needed, eliminating any ambiguity.

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 title 'Get Frontier Tower SF local weather + time' and description clearly state the specific resource and action. The verb 'Get' combined with the precise location and data types (weather, time) makes the purpose unambiguous. It distinguishes itself from sibling tools which address different domains (events, directories, etc.).

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 explicitly states 'Args: none' and 'Required scope: context:read', clearly indicating when to invoke it (no parameters needed) and the authorization prerequisite. It also explains that it is identity-free, implying it is suitable for general context queries. However, it does not explicitly mention when not to use it or alternatives among siblings, though the simplicity makes that less critical.

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

ic_donateDonate USDC to Immersive Commons via x402 (public)AInspect

Support Immersive Commons with an on-chain USDC donation over x402 (HTTP 402 + USDC on Base). No auth required. Returns the donation tiers, the receiving wallet (payTo), the asset + network, and the donate URL. MCP can't run the in-band 402 handshake itself, so to donate: POST https://www.immersivecommons.com/api/x402/donate with an x402 X-PAYMENT header (sign an EIP-3009 USDC authorization for one of the tier amounts to payTo on the given network); the first call with no X-PAYMENT returns a 402 listing every tier in accepts[]. Optional donor { name, message } can be sent in the JSON body and appear on the public donor wall at /donate. Args: none.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Discloses that no auth is required, the first call returns a 402 with tiers, and the donation itself is external. Adds detail beyond annotations, though side effects on MCP state are not mentioned (likely none).

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 well-structured and front-loaded, but somewhat verbose with detailed HTTP mechanics. Still earns its length by being informative.

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 no output schema, the description fully explains return values (tiers, payTo, asset, network, donate URL) and the workflow. Completely adequate for a zero-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?

No parameters, so the description cannot add meaning beyond the schema. Baseline 4 applies per guidelines.

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 clearly states the tool is for donating USDC to Immersive Commons via x402, using specific verbs and resources. It distinguishes itself from siblings like ic_donations_total.

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 clear context on when to use (to donate USDC) and explicit steps for the user, including that MCP cannot perform the 402 handshake. Lacks explicit when-not-to-use, but is still effective.

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

ic_donations_totalGet the IC donation total + donor wall (public)A
Read-only
Inspect

Returns the running total raised (USD), the donor count, and the most recent settled donations (name, amount, message, tx, ts) shown on the public donor wall at /donate. No auth required. Args: { limit?: number (1-50, default 10) }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
Behavior4/5

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

Description adds return fields and public nature beyond annotations. No contradictions.

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 sentences, efficient, front-loaded with key 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?

Covers all necessary information for a simple read-only endpoint with one optional parameter.

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

Parameters5/5

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

Fully documents limit parameter with range and default, compensating for 0% schema coverage.

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?

Clearly states it returns running total, donor count, and recent donations. Distinct from sibling 'ic_donate' which is for making donations.

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 states no auth required and that it's the public donor wall data. Could improve by contrasting with ic_donate.

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

ic_events_getLook up a single IC event by Luma URLA
Read-only
Inspect

Find an event in the upcoming-events cache by its Luma URL. Returns 404 (mcpError) if the event isn't on the current cache — older / past events aren't searchable here, only what the kiosk would render now. Args: { luma: string (https://luma.com/) }. Required scope: events:read_upcoming.

ParametersJSON Schema
NameRequiredDescriptionDefault
lumaYesCanonical Luma URL of the event.
Behavior4/5

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

Annotations already provide readOnlyHint and openWorldHint. The description adds important context: it only searches the upcoming-events cache, returns 404 if not found, and requires scope events:read_upcoming. No contradiction with annotations.

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 two sentences: the first states the purpose, the second adds constraints and parameter details. It is front-loaded, efficient, and contains no unnecessary 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?

Given the simple nature of the tool (single parameter, no output schema, clear annotations), the description covers everything needed: what it does, cache behavior, error condition, and required scope. It is fully sufficient for agent selection and 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 coverage is 100% and the schema already describes the 'luma' parameter. The description merely restates the URL format. It adds minimal extra meaning beyond the schema, so a baseline score of 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?

The description clearly states it finds an event in the upcoming-events cache by Luma URL, which is a specific verb+resource. The title also explicitly says 'Look up a single IC event by Luma URL'. This distinguishes it from sibling tools like ic_events_list_upcoming or ic_events_get_live.

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 description implies when to use (cache lookup) but does not explicitly state when not to use it or mention alternatives. It notes the cache limitation and scope requirement, but lacks direct comparisons to similar tools.

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

ic_events_get_liveReturn the IC event currently in progressA
Read-only
Inspect

Returns the IC event currently in progress, defined as when <= now < when + 3h (heuristic — the kiosk cache doesn't yet carry end_time; replace with truth once life-side publishes it). Returns null if no event is in that window. Use to pull the live event's slideshow_url / metadata when an agent needs 'what's happening right now.' Args: {} (no args; server-side current time). Required scope: events:read_upcoming.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Discloses read-only nature (readOnlyHint), heuristic time window, known cache limitation, returns null if no event, and required scope. No contradiction with annotations.

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?

Efficiently packs critical info: time window definition, heuristic disclosure, null return, usage guidance, and required scope. No wasted words.

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 purpose, usage, logic, and scope. Lacks explicit output structure but mentions slideshow_url/metadata, which is adequate given no 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?

No parameters (empty schema), so baseline 4. Description adds server-side current time context, which is helpful.

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?

Clearly states returns the currently in-progress IC event with a specific time window (when <= now < when + 3h). Distinguishes from sibling tools like ic_events_get and ic_events_list_upcoming by focusing on the live event.

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 states to use when an agent needs 'what's happening right now' for slideshow_url/metadata. Does not explicitly list alternatives but context implies not for past/future events.

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

ic_events_list_upcomingList upcoming IC events from the kiosk cacheA
Read-only
Inspect

Returns the upcoming-events feed the FT10 kiosk renders. Backed by /api/refresh/events cron (hourly Luma sync). Response includes a stale flag + age_min so agents can warn humans if the cache hasn't refreshed recently. Args: { limit?: number, default 15, max 50 }. Required scope: events:read_upcoming.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many events to return. Default 15, capped at 50.
Behavior5/5

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

Beyond the readOnlyHint annotation, the description details the caching mechanism (hourly Luma sync), response features (stale flag, age_min), required scope (events:read_upcoming), and parameter limits. This equips the agent with critical behavioral and usage constraints.

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 extremely concise: two sentences covering purpose, backend, response, and parameters. Every sentence adds value, and the structure front-loads the main function, followed by technical details.

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?

Despite lacking an output schema, the description fully informs the agent about what the response contains (stale flag, age_min) and the cache behavior. For a simple read-only tool with one optional parameter, no additional context is necessary.

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 input schema already fully describes the limit parameter with default and max. The description restates the parameter notes but adds no new semantic meaning beyond what the schema provides, resulting in baseline value.

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 clearly states the tool returns the upcoming-events feed from the FT10 kiosk cache. It specifies the data source (cron-synced from Luma) and distinguishes it from other event tools like ic_events_get or ic_events_get_live by mentioning the kiosk context and stale flag.

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 description implies usage for retrieving upcoming events when cache freshness matters, and notes the stale flag can be used to warn users. However, it does not explicitly say when to use this tool over alternatives (e.g., ic_events_get_live for real-time events), leaving the decision implicit.

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

ic_events_nextTail the IC event log (agent subscribe primitive)A
Read-only
Inspect

Cursor-based read of the calling user's agentic event log. IC publishes events that personal agents subscribe to — tier_requested, tier_approved, tier_denied (more types arrive as append sites land). Pass since = your last-seen event.id (omit for full backlog); response carries cursor (largest id returned), has_more (re-poll immediately if true), and as_of (server time). Optional types[] filter; default returns all entitled types. Events carry actions[] — affordances the agent can render (one-tap reply) or auto-invoke (with policy). Per-user scoped server-side: a token tied to user X only sees X's events. Replay-safe: events are immutable and id-keyed. Args: { since?, types?, limit? }. Returns: { events, cursor, has_more, as_of }. Required scope: none beyond a valid token with a tied Clerk identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events per page. Default 50, max 500.
sinceNoYour last-seen event id. Omit / 0 for full backlog (capped at `limit`).
typesNoOptional event-type filter. Known types: tier_requested, tier_approved, tier_denied, inbox_envelope. Unknown strings are dropped silently.
Behavior5/5

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

Discloses read-only nature, per-user scoping, immutability, replay-safety, and required authentication context. Adds significant behavioral context beyond annotations, such as event types and actions array.

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?

Single paragraph, front-loaded with purpose, dense with information. No wasted sentences, though could benefit from slight structuring for 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?

Given no output schema, the description comprehensively explains response fields (cursor, has_more, as_of, events, actions), usage pattern, filtering, scoping, and required scope. Leaves no major gaps for a read tool.

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 baseline is 3. Description adds minimal extra meaning for input parameters; the schema already covers details. No additional constraints or nuances beyond what schema provides.

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

Purpose5/5

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

The description clearly states the tool is for cursor-based reading of the user's agentic event log, specifying it as an 'agent subscribe primitive'. It distinguishes itself from sibling event tools by focusing on per-user, cursor-based polling.

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 clear usage instructions: pass 'since' for incremental reads, re-poll on 'has_more', optional types filter. Does not explicitly compare with alternatives like ic_events_get or ic_events_get_live, but the context is self-contained.

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

ic_events_requestRequest an event on the Immersive Commons floorAInspect

Propose an event by submitting Luma-shaped details. The request is enqueued as a 'save the date' draft for operator review at /floor10/admin/events — approval is the gate; this NEVER auto-creates a public Luma event. After an operator approves, IC staff create the live Luma event from your details and the kiosk card upgrades automatically. Args: { title, start (ISO-8601, future), end?, location?, description?, cover_url?, capacity?, visibility?: 'public'|'members', host?, contact?, slideshow_url? }. Returns: { ok, id, status: 'pending' }. Required scope: events:request (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEvent end as an ISO-8601 datetime. Must be after start.
hostNoHost / organizer display name.
startYesEvent start as an ISO-8601 datetime, e.g. 2026-07-01T18:00:00-07:00. Must be in the future.
titleYesEvent title.
contactNoHow IC reaches you to confirm (email / Telegram / etc.).
capacityNoRequested capacity; 0 or omitted = unlimited.
locationNoVenue / address. Defaults to FT10 · Immersive Commons if omitted.
cover_urlNoCover image URL (http/https).
visibilityNoRequested Luma visibility.
descriptionNoWhat the event is about.
slideshow_urlNoOptional accompanying deck URL.
Behavior4/5

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

The description goes beyond the sparse annotations by detailing the workflow: request enqueued as a draft, NO auto-creation, approval process, and automatic kiosk card upgrade. It also specifies the required scope and return shape. However, it does not discuss idempotency or rate limits, which are not covered by annotations either.

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 single well-structured paragraph covering purpose, behavior, parameter list, return type, and scope. Every sentence is informative with no wasted words. It is front-loaded with the main action and quickly explains the non-obvious 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?

Given the tool's complexity (11 parameters, no output schema), the description is highly complete. It explains the full workflow, input requirements, return shape, and required scope. The absence of an output schema is compensated by describing the return object. The description leaves little ambiguity for the agent to correctly invoke the 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?

Schema coverage is 100%, so baseline is 3. The description adds value by noting that parameters are 'Luma-shaped details', specifying that 'end' is optional (though schema already marks it not required), and providing a default for 'location' (FT10 Immersive Commons). This extra context helps the agent understand usage beyond the schema descriptions.

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

Purpose5/5

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

The description uses specific verbs ('Propose an event') and clearly identifies the resource ('on the Immersive Commons floor'). It distinguishes from sibling tools by explaining that this is a proposal that goes through operator review, unlike admin approval tools or read-only event listing tools.

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 explicitly states when to use the tool (to submit an event proposal) and what it does NOT do ('NEVER auto-creates a public Luma event'). It also mentions the required scope. However, it does not explicitly name alternative tools for different scenarios (e.g., using ic_events_get for existing events).

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

ic_events_rsvpRSVP the calling user to an IC eventAInspect

Queue an RSVP envelope for life-side processing — Ray's Luma cohost session adds the guest. This returns 'queued', NOT 'Luma confirmed.' The human will get a Luma email on the next processor cycle. Rate-limited to 10/token/UTC day; idempotent via 7-day dedupe on (event_url, user). Args: { event_url: string, email: string, name?: string }. The agent MUST supply email explicitly — the server doesn't derive it for agent callers (trust boundary). Required scope: events:rsvp.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name for the Luma guest list. Optional.
emailYesEmail to add as a guest. Required for agent callers.
event_urlYesCanonical Luma URL of the event.
Behavior1/5

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

Description claims idempotency via 7-day dedupe, but annotations set idempotentHint: false, creating a direct contradiction. This undermines trust. While it adds useful detail like rate limiting and async processing, the contradiction forces a low score.

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?

Description is comprehensive yet efficient, with each sentence providing essential information. Purpose is front-loaded, followed by behavior, constraints, and parameter details. No wasted words.

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 description fully covers purpose, behavior, side effects, rate limiting, deduplication, required scope, and parameter usage. Given the simple schema and no output schema, it provides all necessary context for correct invocation.

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

Parameters4/5

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

Schema covers 100% of parameters. Description adds agent-specific nuance: email must be explicitly supplied for agent callers, and name is optional. This adds value beyond the schema fields.

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?

Description clearly states it queues an RSVP envelope for an IC event, distinguishing it from read-only event tools like ic_events_get and ic_events_list_upcoming. It provides specific context about Ray's Luma cohost session and the async nature.

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 explicit guidance: returns 'queued' not confirmed, rate limit of 10/token/UTC day, idempotent via 7-day dedupe, required scope events:rsvp, and that agent must supply email. Lacks explicit alternative tools or when-not-to-use, but siblings are clearly different.

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

ic_feedback_get_statusGet the status of ONE of your feedback ticketsA
Read-only
Inspect

Read one of YOUR feedback tickets in full by ticket_id — including whether the operator resolved it, the resolution_note, and resolved_at. Ownership-gated: a ticket_id that isn't yours returns { ok:false, error_kind:'forbidden' }; an unknown / expired id returns { ok:false, error_kind:'not_found' }. The message + sidecars come back inside <USER_SUBMITTED_TEXT> quarantine envelopes (your own text, echoed safely). Args: { ticket_id }. Returns: { ok, record, resolved, resolution_note?, resolved_at? }. Required scope: feedback:read (granted at ai-floor, ic-member, operator).

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesticket_id from a prior ic_feedback_submit (format fb_*).
Behavior5/5

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

Beyond the readOnlyHint=true annotation, the description reveals key behaviors: ownership-gated access, specific error shapes (forbidden/not_found), quarantine envelopes for user-submitted text, and the required scope feedback:read. This fully informs the agent of side effects and constraints.

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 informative and well-structured, front-loading the core purpose then detailing error behavior and output. It is slightly verbose but every sentence adds value; no redundancy. Efficient but could be trimmed slightly.

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?

Despite lacking an output schema, the description fully documents return fields (ok, record, resolved, resolution_note?, resolved_at?). It also covers error shapes and required OAuth scope. Combined with annotations (readOnlyHint), the agent has complete information to use the tool.

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 parameter (ticket_id) with 100% schema description coverage. The description mentions using ticket_id but adds no new semantic detail beyond the schema's description of 'ticket_id from a prior ic_feedback_submit (format fb_*)'. 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?

The description explicitly states the tool reads one of YOUR feedback tickets by ticket_id, with ownership gating. It clearly distinguishes from list or admin tools by specifying 'one of YOUR' and describing error responses for unauthorized or unknown tickets.

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 provides clear context for when to use the tool (get status of one ticket) and explains error handling for forbidden and not_found cases. It does not explicitly compare to sibling tools like ic_feedback_list_mine or ic_admin_list_feedback, but the ownership restriction and single-ticket focus imply usage scope.

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

ic_feedback_list_mineList YOUR own feedback ticketsA
Read-only
Inspect

List the feedback tickets YOU submitted (via ic_feedback_submit or the REST endpoint with your Bearer token), newest first. Returns summaries: ticket_id + kind + priority + preview + resolved flag + resolved_at. Use ic_feedback_get_status for the full status of one ticket (incl. the operator's resolution note). Optional resolved filter: true = closed only, false = open only, omit = both. Ownership is automatic — you only ever see tickets attributed to your IC identity (anonymous submissions never appear). Returns: { ok, count, total, scanned, records }. Required scope: feedback:read (granted at ai-floor, ic-member, operator).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 25; max 200.
offsetNoPaging cursor. Default 0.
resolvedNoTri-state. true = resolved only, false = open only, omit = both.
Behavior5/5

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

Description reveals beyond annotations: ownership is automatic, anonymous submissions never appear, scope requirement (feedback:read). No contradiction with readOnlyHint=true.

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?

Description is well-structured: main purpose first, then return format, filter details, ownership, and scope. Each sentence adds value without redundancy.

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 3 optional parameters and no output schema, the description thoroughly explains return format (fields and envelope structure), ownership filtering, and required scope. No gaps remain.

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 parameter descriptions are already detailed. The description adds no meaningful new information beyond restating the resolved filter behavior, which is already in 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?

Description clearly states 'List the feedback tickets YOU submitted', specifies filtering by resolved state, and distinguishes itself from sibling tools like ic_feedback_get_status (full status) and ic_admin_list_feedback (admin view).

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 tells when to use this tool (listing own tickets) and when to use ic_feedback_get_status for full status details. Also explains the tri-state resolved filter and required scope.

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

ic_feedback_submitSubmit feedback / feature request / question to the operatorAInspect

Send a structured note to the Immersive Commons operator. Kinds: feature_request | praise | complaint | question | suggestion | bug_report | broken_url | schema_mismatch | stale_doc | endpoint_404 | other. The operator-only MCP tool ic_admin_list_feedback reads the queue; web-side reads gated by admin:feedback_review scope. Per-IP rate limit 10/UTC hour (shared with the anonymous REST endpoint). Returns: { ok, ticket_id, received_at }. Quote the ticket_id when following up. Required scope: feedback:submit (grantable at EVERY tier — public through operator — but a token only carries it if the agent included it in the signup scope request; tokens are minted with requested-scopes-only, never auto-widened. Missing it? Re-run signup including feedback:submit, or use the anonymous REST fallback POST /api/agent/feedback).

ParametersJSON Schema
NameRequiredDescriptionDefault
gotNoOptional. What the agent observed instead (breakage kinds).
urlNoOptional. URL the agent was on when it filed.
kindYesWhat this is. Pick the most specific kind. feature_request = 'I want X'; suggestion = softer 'maybe X'; praise/complaint = 'X is good/bad'; question = 'how does X work'; broken_url / schema_mismatch / stale_doc / endpoint_404 / bug_report = breakage in IC's agent surface; other = catch-all.
contactNoOptional. Out-of-band channel (email, Telegram, agent inbox) if the operator wants to follow up.
messageYesFree-form context. Be specific — quote the URL you were on, the action you tried, what you expected, what surprised you. The operator reads this verbatim.
agent_idNoOptional. Self-identification (e.g. 'Claude Code 4.7 @ home'). Surfaced in the operator dashboard.
categoryNoOptional operator-defined bucket (e.g. 'headsets', 'mcp', 'docs'). Free-form; the operator uses it to triage faster.
expectedNoOptional. What the agent expected (breakage kinds).
priorityNoOptional. low | normal (default) | high. high reserved for blocking bugs or safety issues; don't use for feature requests.
Behavior5/5

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

Annotations provide no hints (all false), so description carries full burden. It discloses rate limit (10/UTC hour), required scope and its availability, return format { ok, ticket_id, received_at }, and token scope behavior. No contradictions with 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?

Description is front-loaded with main purpose and includes necessary details (kinds, scope, rate limit, fallback). It is dense but not overly verbose. Could be slightly more concise, but given complexity, it is well-structured.

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?

No output schema, but description explains return values. All 9 parameters are documented in schema and description adds nuance. Covers scope, rate limit, fallback, and follow-up instructions. Complete for a feedback submission 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?

Schema coverage is 100%, baseline 3. Description adds value by elaborating on kind enum differences (e.g., feature_request vs suggestion), explaining `expected`/`got` for breakages, and advising on message specificity and agent_id usage.

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?

Description states 'Send a structured note to the Immersive Commons operator' and lists all feedback kinds. It distinguishes from sibling tools by explicitly mentioning the admin tool `ic_admin_list_feedback` and the anonymous REST fallback.

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 provides when-to-use context (feedback submission) and notes alternatives: the admin tool for reading queue and anonymous REST fallback if scope missing. It also advises quoting ticket_id in follow-ups. Lacks explicit 'do not use for X', but covers scope and fallback well.

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

ic_files_getGet a secure file's metadata + authed download URL (member)A
Read-only
Inspect

Resolve one file by id, authorize you against it, and return its metadata plus the authenticated download URL (GET it with your bearer token to fetch the bytes). Optionally inline small files (<=1MB) as base64. If you're not authorized (a private/grantees file you're not on) this returns forbidden. Args: { file_id, inline?: boolean (default false; only honored for files <=1MB) }. Returns: { ok, file, download_url, inline_base64? }. Required scope: files:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
inlineNoIf true and the file is <=1MB, also return the bytes base64-encoded.
file_idYesThe file id (f_...), from ic_files_list.
Behavior5/5

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

The description goes well beyond annotations (readOnlyHint true) by detailing authorization behavior, inline size constraint, download URL authentication, and return shape. No contradictions with annotations.

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 three sentences plus a compact Args/Returns section, front-loaded with the core action. Every sentence adds value without redundancy.

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 no output schema, the description provides return shape, error conditions, required scope, and inline behavior. It covers all key aspects for a simple retrieval tool, making it fully actionable for an AI agent.

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 baseline is 3. The description adds minimal extra beyond schema descriptions, such as 'default false' for inline, which is already implied. No substantial new information for parameters.

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 clearly states the tool resolves one file by id, authorizes the user, and returns metadata plus download URL. It distinguishes itself from sibling tools like ic_files_list (listing) and ic_files_put (upload) by focusing on single-file retrieval and authorization.

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 implies usage when you have a file id and need metadata/download URL, and mentions the authorization check leading to forbidden responses. It does not explicitly compare with alternatives, but the required scope and error condition provide useful guidance.

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

ic_files_grantMint a share link for a non-member (member)A
Idempotent
Inspect

Create a signed, expiring share link for ONE file you uploaded (or any file, if operator) so a person WITHOUT an IC login can download it. The link embeds a grant bound to that single file id and works until it expires. Args: { file_id, subject?: string (audit label, e.g. who it's for), ttl_seconds?: number (default 7 days, max 30 days) }. Returns: { ok, file_id, filename, link, expires_at }. Required scope: files:write (ic-member+; only the uploader or an operator can share a given file).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesThe file id (f_...) to share.
subjectNoAudit label for who the link is for (e.g. an email or name).
ttl_secondsNoLink lifetime in seconds. Default 7 days, max 30 days.
Behavior4/5

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

The description discloses key behaviors: the link is bound to a single file, expires, and requires the uploader or operator role. It adds value beyond annotations (which only indicate idempotency) by clarifying scope and link properties. However, it does not address idempotency or error cases.

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 concise (104 words) and well-structured: purpose, args, return value, scope requirement. Every sentence serves a clear function, with no redundancy.

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 3 parameters (1 required), 100% schema coverage, and no output schema, the description fully covers inputs and outputs (returns ok, file_id, filename, link, expires_at). It also includes required scope, making it self-contained for the agent.

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 schema already describes parameters. The description adds context for file_id (ownership constraint) and lists defaults (ttl_seconds). This extra semantic detail aids agent understanding beyond the schema alone.

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 clearly states the tool creates a signed expiring share link for a single file, targeting non-members. It specifies the resource (file), action (create share link), and scope (uploaded file or any if operator), distinguishing it from siblings like ic_files_get or ic_folder_grant.

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 explains when to use: to share a file with someone without an IC login. It implies when not to use (if the person has a login, they could use other tools) and states the required scope and permissions. However, it does not explicitly list alternatives or exclusion cases.

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

ic_files_listList secure files you can access (member)A
Read-only
Inspect

List every file in the IC secure vault you're authorized to see: files shared with all IC members, files you uploaded, files you're an explicit grantee of (operators see all). Metadata only — never blob URLs. Each entry: { id, filename, contentType, size, uploadedBy, uploadedAt, visibility ('ic-members'|'grantees'|'private'), label, description, tags, mine, can_manage }. To download one, GET /api/files//download with your bearer token (or use ic_files_get for the ready URL). Args: none. Required scope: files:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

The description discloses that it returns metadata only and never blob URLs, and details the fields returned. It also mentions the required scope (files:read). Annotations already indicate readOnlyHint=true, so the description adds valuable behavioral context without contradiction.

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 concise yet thorough, front-loading the main purpose and then providing specifics. Every sentence serves a purpose, and the structure is easy to scan.

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 simple list tool with no parameters and no output schema, the description is complete. It explains the return format, scope, and how to download files, covering all necessary context.

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 input schema has no parameters, so the baseline is 4. The description confirms that no arguments are needed, adding meaning beyond 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?

The description clearly states the tool's purpose: listing files in the IC secure vault that the user is authorized to see. It specifies the resource (IC secure vault), verb (list), and scope (authorized files). It distinguishes from siblings like ic_files_get (download) by explicitly mentioning the download 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?

The description provides clear context on when to use the tool (to list files) and mentions an alternative for downloading (ic_files_get or GET endpoint). However, it does not explicitly state when not to use it or provide exclusions.

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

ic_files_putUpload a file to the secure vault (member)A
Idempotent
Inspect

Upload a file (base64) into the IC secure vault and set who can see it. visibility: 'ic-members' (any IC member, default), 'grantees' (only the Clerk user ids you list, plus you + operators), or 'private' (only you + operators). Non-members get access via ic_files_grant (a signed link). Max 25MB per file, 500 files per member. Args: { filename, content_base64, content_type?, visibility?, grantees?: string[], label?, description?, tags?: string[] }. Returns: { ok, id, filename, size, visibility }. Required scope: files:write (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFree-text tags, e.g. ['hackathon'].
labelNoHuman title (defaults to filename).
filenameYesDisplay filename (basename; sanitized).
granteesNoClerk user ids allowed when visibility='grantees'.
folder_idNoPut the file in this folder (d_...) instead of the vault root. You must own the folder (or be operator). Discover/create folders with ic_folders_list / ic_folder_create.
visibilityNoWho can download. Default 'ic-members'.
descriptionNoWhat the file is.
content_typeNoMIME type, e.g. application/pdf.
content_base64YesFile bytes, base64-encoded. Max 25MB decoded.
Behavior5/5

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

Annotations indicate a write (readOnlyHint=false) but not destructive (destructiveHint=false) and idempotent (idempotentHint=true). The description adds critical context: max 25MB, 500 file limit, base64 encoding, return fields, and scope requirement. No 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?

The description is a single paragraph that covers purpose, usage, parameters, and returns. It is slightly verbose but well-organized with key details front-loaded. Every sentence adds value, but could be trimmed slightly.

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 no output schema, the description correctly lists return fields (ok, id, filename, size, visibility). It covers all parameters, limits, visibility options, and alternative tools. Comprehensive for a file upload 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?

Schema coverage is 100%, baseline 3. The description adds value by explaining visibility modes ('ic-members', 'grantees', 'private'), specifying grantees as Clerk user IDs, and noting defaults. This goes beyond schema descriptions.

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

Purpose5/5

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

The description clearly states 'Upload a file (base64) into the IC secure vault', identifying verb and resource. It distinguishes this from sibling tools like ic_files_get, ic_files_list, and ic_files_update by focusing on upload.

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 explains when to use (uploading files) and provides clear alternatives: 'Non-members get access via ic_files_grant'. It also details visibility settings and limits. However, no explicit 'when not to use' guidance is given.

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

ic_files_updateUpdate a secure file's metadata (member)A
Idempotent
Inspect

Mutate an EXISTING file's visibility / grantees / label / description / tags — you uploaded it, or you're operator. Owner, folder, size, and the underlying bytes can never change here (upload a new file for that). Only the fields you pass are touched; omit a field to leave it as-is. Args: { file_id, visibility?: 'ic-members'|'grantees'|'private', grantees?: string[], label?: string, description?: string, tags?: string[] }. Returns: { ok, file }. Required scope: files:write (ic-member+; only the uploader or an operator).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFree-text tags. Omit to leave unchanged.
labelNoHuman title. Omit to leave unchanged.
file_idYesThe file id (f_...) to update.
granteesNoClerk user ids allowed when visibility='grantees'. Omit to leave unchanged.
visibilityNoWho can download. Omit to leave unchanged.
descriptionNoWhat the file is. Omit to leave unchanged.
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false. Description adds context about immutable fields and partial update behavior, which goes beyond annotations without contradicting them.

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?

Description is concise: two main sentences plus parameter list and returns. Front-loaded with purpose and usage restrictions. Minor redundancy with schema but overall efficient.

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?

Despite no output schema, description covers return type ('{ ok, file }'), required scope, who can use, immutable fields, and partial update behavior. Fully sufficient for an update tool with 6 parameters.

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. Description lists parameters with explicit enum values and states 'Omit to leave unchanged', adding meaningful usage context beyond 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?

Description clearly states 'Mutate an EXISTING file's metadata' with specific fields (visibility, grantees, label, description, tags). It distinguishes from sibling tools like ic_files_put by noting that bytes cannot change here.

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 states who can use this tool ('you uploaded it, or you're operator') and required scope ('files:write'). Also explains when not to use it ('Owner, folder, size, and the underlying bytes can never change here') and that omitting fields leaves them unchanged.

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

ic_folder_createCreate a folder in the vault (member)AInspect

Create a folder to group files. Root folder: omit parent. Sub-folder: pass parent (you must own the parent or be operator). visibility: 'ic-members' (default) / 'grantees' (specific Clerk ids) / 'private'. Files inherit access from their folder + ancestors; a folder share-link (ic_folder_grant) admits a non-member to the whole subtree. Args: { name, description?, parent?, visibility?, grantees?, tags? }. Returns { ok, folder }. Required scope: files:write (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name.
tagsNoFree-text tags.
parentNoParent folder id (d_...); omit for a root folder.
granteesNoClerk user ids allowed when visibility='grantees'.
visibilityNoWho can see it. Default 'ic-members'.
descriptionNoWhat's in it.
Behavior5/5

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

Discloses file inheritance, share-link admission via ic_folder_grant, required scope (files:write), and visibility behavior. No annotation contradiction. Adds value 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?

Concise, front-loaded purpose. Short sentences. Mix of summary and details. Could be slightly more structured, but no waste.

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 purpose, usage, visibility, inheritance, scope. Missing output format details but returns standard {ok, folder}. Adequate for correct invocation.

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

Parameters4/5

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

Schema has 100% coverage with descriptions. Description adds operational context: parent omitted for root, visibility defaults, condition on parent ownership. Enhances understanding.

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 starts with 'Create a folder to group files,' clearly stating the verb and resource. It distinguishes root vs sub-folder creation and differentiates from siblings like ic_folder_get and ic_folder_update.

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 when to use: for creating root or sub-folder. Specifies condition for sub-folder (must own parent or be operator). Mentions visibility options and inheritance. Lacks explicit when-not-to-use, but siblings are clear.

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

ic_folder_getTraverse a folder: subfolders + files (member)A
Read-only
Inspect

Traverse one folder (or the vault ROOT if folder_id is omitted). Returns { folder, path (breadcrumb), subfolders[], files[] } where each file carries a download_url (GET it with your bearer). Recurse by calling this again with a subfolder's id. This is how you walk a shared folder tree. Args: { folder_id? }. Required scope: files:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idNoFolder id (d_...) to open. Omit for the vault root.
Behavior5/5

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

The description fully discloses the return structure (folder, path, subfolders, files with download_url), the default behavior when folder_id is omitted (vault root), and the required scope. Annotations (readOnlyHint: true) are consistent with the read-only nature, and the description adds significant context 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.

Conciseness5/5

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

The description is concise at four sentences with no extraneous information. The main action is stated first, and each sentence adds necessary detail. It is well-structured and easy to parse.

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?

Despite lacking an output schema, the description thoroughly documents the return shape and the recursion usage pattern. For a tool with one optional parameter, it provides complete guidance on how to use it effectively within the shared folder tree context.

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 input schema already provides a clear description for the single parameter folder_id (optional, defaults to vault root). The description repeats this but adds the id prefix format (d_...). With 100% schema coverage, the description adds minimal extra semantic value, warranting the baseline score of 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?

The description clearly states the tool traverses a folder and returns its subfolders and files, distinguishing it from sibling tools like ic_folder_create, ic_folders_list, etc. The verb 'traverse' and resource 'folder' are specific, and the phrase 'This is how you walk a shared folder tree' clarifies its unique role.

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

Usage Guidelines4/5

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

The description explains the recursion pattern ('Recurse by calling this again with a subfolder's id') and states the required scope. However, it does not explicitly mention when not to use this tool versus alternatives like ic_folders_list for listing all folders. The context is clear but lacks explicit exclusions.

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

ic_folder_grantMint a folder share-link for a non-member (member)A
Idempotent
Inspect

Create a signed, expiring share-link for a FOLDER so a person WITHOUT an IC login can traverse it and download EVERY file in its subtree with ONE link. Only the folder's owner or an operator can share it. The link opens a browsable page; the api_url is the agent-traversable JSON entry (GET /api/folders/shared?grant=). Args: { folder_id, subject?, ttl_seconds? (default 7d, max 30d) }. Returns { ok, folder_id, name, link, api_url, expires_at }. Required scope: files:write (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectNoAudit label for who the link is for.
folder_idYesThe folder id (d_...) to share.
ttl_secondsNoLink lifetime seconds. Default 7d, max 30d.
Behavior5/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=true, etc.), the description adds crucial details: only owner/operator can share, the link is signed/expiring, default and max TTL, required scope and return fields. No contradiction with annotations.

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 three well-structured sentences. It front-loads the purpose, then adds permissions and behavior, and concludes with args and return format. Every sentence adds value with no fluff.

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 moderate complexity (3 params, no output schema), the description covers purpose, permissions, parameter details, return fields, scope, and caveats. No output schema needed as return fields are listed. Complete for reliable invocation.

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

Parameters4/5

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

The input schema covers all parameters with descriptions (100% coverage). The description adds clarity on optionality and defaults (ttl_seconds default 7d, max 30d), and lists args in a concise format, adding modest value beyond 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?

The description clearly states the tool creates a signed, expiring share-link for a folder that allows non-members to traverse and download files. It distinguishes from sibling tools like ic_files_grant (likely for files) and other folder tools.

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 specifies that only the folder owner or operator can share, and that the link is for non-members. While it doesn't explicitly compare to alternatives like ic_files_grant, the context is clear enough for most agents to infer when to use this tool.

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

ic_folders_listList folders you can access (member)A
Read-only
Inspect

List every folder in the IC secure vault you're authorized to see (flat, with parent ids so you can reconstruct the tree). Use ic_folder_get to traverse one. Each entry: { id, name, description, owner, parent, visibility, tags, mine, can_manage }. Args: none. Required scope: files:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate read-only, but the description adds detail on the output structure and required auth scope, providing behavioral context 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.

Conciseness5/5

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

Three sentences front-loaded with main purpose, then usage hint, then field structure; no unnecessary words.

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?

Despite no output schema, the description enumerates all fields in each entry and mentions required auth, providing complete context for a simple list tool.

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

Parameters5/5

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

No parameters in schema; description explicitly states 'Args: none', which is clear and concise.

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 clearly states the tool lists every folder the user is authorized to see, specifies the flat format with parent IDs for tree reconstruction, and distinguishes it from ic_folder_get for traversal.

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 explicitly mentions when to use ic_folder_get as an alternative for traversing a single folder and specifies the required scope (files:read, ic-member+).

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

ic_folder_updateUpdate a folder's metadata (member)A
Idempotent
Inspect

Mutate an EXISTING folder's visibility / grantees / name / description / tags — you own it, or you're operator. Owner and parent (its place in the tree) can never change here. Only the fields you pass are touched; omit a field to leave it as-is. Args: { folder_id, visibility?: 'ic-members'|'grantees'|'private', grantees?: string[], name?: string, description?: string, tags?: string[] }. Returns: { ok, folder }. Required scope: files:write (ic-member+; only the owner or an operator).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFolder name. Omit to leave unchanged.
tagsNoFree-text tags. Omit to leave unchanged.
granteesNoClerk user ids allowed when visibility='grantees'. Omit to leave unchanged.
folder_idYesThe folder id (d_...) to update.
visibilityNoWho can see it. Omit to leave unchanged.
descriptionNoWhat's in it. Omit to leave unchanged.
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false. The description adds that only passed fields are touched (partial update), returns {ok, folder}, and lists allowed visibility values. While consistent with annotations, it provides useful extra context.

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 three sentences plus concise parameter list, front-loading the main action and scope. Every sentence contributes essential information without redundancy.

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?

Despite no output schema, the description specifies the return format, required scope, ownership criteria, and immutable fields. It fully covers the tool's behavior for informed usage.

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%, but the description clarifies parameter behavior: omission leaves unchanged, grantees are Clerk user IDs applicable only when visibility='grantees', and folder_id pattern 'd_...'. This adds value beyond schema descriptions.

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

Purpose5/5

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

The description specifies the action ('Mutate'), resource ('EXISTING folder'), and fields (visibility, grantees, name, description, tags). It distinguishes from sibling tools like ic_folder_create, ic_folder_get, etc., by focusing on updating metadata and noting that owner/parent cannot change.

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?

The description states preconditions (you own the folder or are an operator), required scope (files:write), and what cannot be changed (owner, parent). This helps the agent decide when to use this tool versus creating or granting access.

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

ic_get_my_membershipGet my membership (tier + pending request)A
Read-only
Inspect

Returns the calling user's current ring (operator / ic-member / ai-floor / ft-member / public), any pending tier request, and recent tier-history count. Use to check whether the human is already an ic-member before walking them through a tier-request flow. Args: none. Required scope: membership:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the required scope 'membership:read' and describes the return fields, which provides useful context 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.

Conciseness5/5

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

Two sentences, highly efficient. The main output is front-loaded, and every sentence adds value. No redundant 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 zero-parameter tool with no output schema, the description adequately describes the return values (ring, pending request, history count) and required scope. It is complete for an agent to understand and use 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?

There are no parameters, and schema coverage is 100%. The description correctly states 'Args: none.' No additional parameter explanation needed.

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 clearly states it returns the calling user's current ring, pending tier request, and recent tier-history count, with specific examples of rings. This distinguishes it from sibling tools like ic_admin_list_members or ic_request_tier.

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 says to use this tool to check if the human is already an ic-member before walking them through a tier-request flow, providing a clear use case and context. It implies when not to use (if no need to check membership) but does not explicitly list alternatives.

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

ic_get_my_workshop_keyPick up YOUR approved workshop key (poll after requesting)AInspect

Retrieve the 5-hour Z.ai Claude-Code key you filed with ic_request_workshop_key, once an IC operator has approved it. Poll with the request_id that ic_request_workshop_key returned. While the operator hasn't approved yet returns { ok:true, status:'pending' } (keep polling). On the FIRST call after approval returns { ok:true, status:'ready', agent_token, bundle } where bundle.copy_paste is the paste-and-go Claude Code setup block. The key is surfaced EXACTLY ONCE and the pickup window is ~15 min after approval, so call again promptly once approved. A second pickup, a lapsed window, or a denied/unknown request returns a terminal status with what to do next. You can only retrieve your OWN request. Args: { request_id }. Required scope: keys:request.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by ic_request_workshop_key.
Behavior5/5

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

Goes beyond annotations: explains exact-once retrieval, 15-min window, pending vs ready vs terminal responses. No contradiction with annotations (readOnlyHint=false, etc.).

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?

Efficiently packed with essential information: purpose, polling behavior, response details, edge cases. No unnecessary words; front-loaded with main action.

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?

No output schema, but description fully covers return values (pending, ready, terminal states), errors, and scope requirement. Complete for a workflow-oriented 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?

Schema coverage is 100% for request_id. Description adds context that it's the id from ic_request_workshop_key and used for polling. Adds meaningful usage beyond 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?

Description clearly states it retrieves the approved 5-hour workshop key. Verb 'retrieve' and resource 'workshop key' are specific. Among siblings, it distinguishes itself from ic_request_workshop_key and ic_get_my_zai_key.

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 says when to use: after requesting, poll until approval. Details poll behavior, first-call-once, pickup window, and terminal statuses. Also notes 'only retrieve your own request'.

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

ic_get_my_zai_keyPick up YOUR approved member key (after requesting)AInspect

Retrieve the weekly-token Z.ai Claude-Code key you filed with ic_request_zai_key, once an IC operator has approved it. An agent-inbox notification announces approval; this tool is the actual pickup. Poll with the request_id that ic_request_zai_key returned. While unapproved returns { ok:true, status:'pending' } (keep polling). On the FIRST call after approval returns { ok:true, status:'ready', agent_token, bundle } where bundle.copy_paste is the paste-and-go Claude Code setup block. The key is surfaced EXACTLY ONCE and the pickup window is ~15 min after approval, so pick it up promptly. The key itself does not expire (weekly token budget, resets Monday). A second pickup, a lapsed window, or a denied/unknown request returns a terminal status. You can only retrieve your OWN request. Args: { request_id }. Required scope: keys:request.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by ic_request_zai_key.
Behavior5/5

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

Discloses non-obvious behaviors: polling until approval, exactly-once retrieval, time window, terminal statuses. These go beyond annotations (readOnlyHint=false, etc.) and fully inform the agent about the tool's side effects and constraints.

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 information-dense but well-structured, starting with purpose, then polling flow, then constraints. While it's longer than some, every sentence is necessary for completeness; minor tightening could improve conciseness.

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?

Covers all aspects: purpose, usage, behavior, parameters, constraints, scope, and output format. No output schema exists, but the description compensates by detailing the return values. Contextually complete for an agent to use correctly.

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

Parameters5/5

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

The single parameter request_id is described in the schema, and the description adds context about its origin from ic_request_zai_key and its role in polling. This adds value beyond the schema's minimal description.

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 clearly states 'Retrieve the weekly-token Z.ai Claude-Code key' and distinguishes from sibling tools like ic_request_zai_key and ic_get_my_zai_key_usage. The title 'Pick up YOUR approved member key (after requesting)' reinforces the specific action.

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?

Provides explicit guidance on polling with the request_id, explains the behavior for pending, ready, and terminal states, and warns about the 15-minute pickup window and exactly-once delivery. Also states the scope requirement and that only the user's own request can be retrieved.

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

ic_get_my_zai_key_usageCheck YOUR member key's weekly token budgetA
Read-only
Inspect

Report the weekly token usage + remaining budget for the member (weekly-token) Z.ai Claude-Code key you filed with ic_request_zai_key. Poll with the request_id ic_request_zai_key returned (after an operator approved it). Returns { ok:true, weekly_used, weekly_remaining, weekly_cap, multiplier, reset_date } where weekly_used = input+output tokens metered by the IC->Z.ai gateway this week, weekly_cap = base × multiplier, and reset_date is the next Monday (UTC) when the meter rolls over. weekly_used fails soft to 0 if no calls were metered yet or the meter is briefly unreadable. Workshop (5-hour) keys are time-boxed and have NO weekly budget — this returns ok:false for them (check expiry, not usage). You can only read your OWN request. Args: { request_id }. Required scope: keys:request.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by ic_request_zai_key.
Behavior5/5

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

Discloses soft failure of weekly_used to 0 if meter unreadable, authorization constraint (only own request), and that Workshop keys lack budget. Annotations only say readOnlyHint=true; description adds concrete behaviors beyond that.

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?

Moderately efficient, no fluff. Each sentence adds value: response format, failure modes, authorization, key type distinction. Could be slightly tighter but well-structured.

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?

Covers response fields, error cases (Workshop keys, soft failure), authorization, and prerequisite (request_id from ic_request_zai_key). No output schema exists, so description compensates fully. Complete for a simple read tool.

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 parameter request_id is fully described in schema (100% coverage). Description adds context that it comes from ic_request_zai_key, but schema already documents it sufficiently. 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?

Clear verb 'report' on specific resource 'weekly token usage + remaining budget for the member Z.ai Claude-Code key'. Distinguishes from siblings like ic_request_zai_key and ic_get_my_zai_key, and explicitly contrasts with Workshop keys that have no budget.

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 when to use (after ic_request_zai_key returns request_id and operator approves), and when not (Workshop keys return ok:false). Implicitly recommends checking expiry for Workshop keys. Could explicitly name alternatives but sufficient.

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

ic_hack_admin_decide_applicationApprove / waitlist / reject an application (event_admin / organizer)A
Read-only
Inspect

Decide one application. Approving grants the roles that applicant TYPE maps to server-side and consumes a seat — you cannot name a role in this call, which is what makes it safe to hand the admissions desk to a non-operator. An event_admin decides EVERY type, staff included — what an approval may grant is fixed by the table, and no application can ever grant an appointing role (organizer / event_admin); those go through ic_hack_admin_role, operator only. A rejection requires a note; the applicant sees it. seats_full on an approval means waitlist them instead. Args: { eid?, application_id, decision: 'approve'|'waitlist'|'reject', note? }. Returns: { ok, application, seats }. Required scope: hack:manage (any tier — the event role is the real gate).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
noteNoShown to the applicant. Required when rejecting.
decisionYes
application_idYes
Behavior1/5

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

The description provides rich behavioral detail: approval grants roles and consumes a seat, no role naming is allowed, rejection requires a note visible to the applicant, and seats_full triggers waitlist. However, the annotations declare readOnlyHint=true, which directly contradicts the mutation behavior described. Per the rubric, a contradiction forces a score of 1.

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 single dense paragraph that opens with the core action and packs in safety reasoning, restrictions, conditional behavior, args, return shape, and scope. Every sentence adds value; there is 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?

Given the tool's complexity, the description covers almost every aspect: role mapping, seat consumption, the impossibility of granting appointing roles, return shape {ok, application, seats}, required scope, and the seats_full edge case. Even without an output schema, the return values are disclosed.

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

Parameters5/5

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

Schema coverage is only 25%, but the description compensates fully by listing all args (eid?, application_id, decision enum, note?), explaining decision semantics, and noting that 'rejection requires a note; the applicant sees it.' This goes well beyond the schema's sparse 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 title says 'Approve / waitlist / reject an application' and the description opens with 'Decide one application,' clearly stating the action and resource. It distinguishes this from sibling tools like ic_hack_admin_role (for granting appointing roles) and ic_hack_admin_list_applications (for listing).

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?

The description explicitly names ic_hack_admin_role as the alternative for appointing roles, states 'those go through ic_hack_admin_role, operator only,' and explains when to waitlist ('seats_full on an approval means waitlist them instead'). It also clarifies that the tool is safe for non-operators, giving strong contextual guidance.

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

ic_hack_admin_list_applicationsRead the hackathon admissions queue (event_admin / organizer)A
Read-only
Inspect

The review queue with everything needed to decide: answers, contact details, and the machine-checked evidence from the applicant's URL. Requires the event_admin or organizer role ON THIS EVENT — an event_admin runs admissions without being an IC floor operator. Args: { eid?, status? (applied|approved|waitlisted|rejected|withdrawn; default applied), limit? }. Returns: { ok, counts, seats, applications[] }. Required scope: hack:manage (any tier — the event role is the real gate).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
limitNo
statusNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: role requirements (event_admin/organizer), required scope (hack:manage), and the response shape (ok, counts, seats, applications[]). It also reveals that the data includes machine-checked evidence, enriching the read operation's purpose.

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 concise and front-loaded with purpose, then efficiently packs args and returns into a compact notation. Every sentence adds value with no redundancy or fluff.

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?

Despite lacking an output schema, the description specifies the return fields (ok, counts, seats, applications[]) and covers permissions, role requirements, and parameter defaults. This is complete for a list-type tool, especially with readOnlyHint annotation confirming safety.

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 0% schema coverage, the description compensates by listing all three parameters (eid, status, limit) and providing rich semantics for status (enum values and default 'applied'). It does not elaborate on eid or limit, but those are reasonably self-explanatory from 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?

The description clearly states this tool reads the hackathon admissions queue with a specific verb ('Read' in the title, 'review queue' in the description). It distinguishes itself from siblings like ic_hack_admin_decide_application by focusing on listing/applications for decision-making, not making the decision itself.

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 provides clear context on when to use the tool: requires event_admin or organizer role on this event, and clarifies that event_admin runs admissions without being an IC floor operator. However, it does not explicitly name alternative tools for similar operations (e.g., ic_hack_admin_decide_application for decisions), leaving some inference to the agent.

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

ic_hack_admin_phaseMove the hackathon to a new phase (organizer)A
Read-only
Inspect

Move the event through PRE -> OPEN -> BUILD -> SUBMIT -> LOCKED -> JUDGING -> RESULTS. One call gates every write surface, so this is the single lever for 'registration closes', 'submissions close', 'results are public'. Moving TO LOCKED also freezes every submission record permanently — a later rollback to SUBMIT reopens the window for NEW teams but does NOT unfreeze already-locked ones, so extending a deadline can never silently reopen editing for everyone. Backwards moves are allowed on purpose (deadline extensions are real). Args: { eid?, phase }. Returns: { ok, event, locked_count? }. Required scope: hack:admin (operator), OR hack:manage + the event_admin role on this event.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
phaseYes
Behavior1/5

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

The description explicitly describes a mutating operation ('Move the event', 'gates every write surface', 'freezes every submission record'), while the annotations declare readOnlyHint=true. This is a direct contradiction, and per rubric the score must be 1; the annotation would mislead an agent into believing no state change occurs.

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 dense but every sentence earns its place: it states the state machine, the write-gating significance, the LOCKED freeze subtlety, the allowance of backwards moves, and the signature/scope. It is front-loaded with the core purpose and ends with compact Args/Returns/Scope lines, 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 state-transition tool with two parameters, the description covers the phase lifecycle, side effects (permanent freeze), return shape ({ok, event, locked_count?}), and required auth scope. It omits only error scenarios, but the enum-based schema and required field mitigate ambiguity, so the description is sufficiently complete for 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?

The description lists 'Args: { eid?, phase }' and explains the phase progression in prose, which helps interpret the enum values beyond the schema. However, it does not explain what eid refers to or how it is resolved when omitted, and the schema itself has no per-parameter descriptions (0% coverage), so the description only partially compensates.

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 identifies the tool's verb ('Move') and resource ('the event through PRE -> OPEN -> BUILD -> SUBMIT -> LOCKED -> JUDGING -> RESULTS'), clearly distinguishing it as a phase-transition tool among the many hackathon admin tools. The phrase 'the single lever for registration closes, submissions close, results are public' reinforces its purpose, setting it apart from sibling tools that handle individual write actions.

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 explains when to use it ('One call gates every write surface') and under what constraints: backwards moves are allowed for deadline extensions, and it warns that moving to LOCKED permanently freezes submitted records. It does not name alternative tools explicitly, but it makes the tool's role as the central phase controller clear, and the cautions about rollback behavior serve as when-not guidance.

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

ic_hack_admin_roleGrant or revoke hackathon event roles (organizer)A
Read-only
Inspect

Grant or revoke event roles. This is how judges, sponsors, mentors and volunteers get in — including people who are not IC members at all, addressed by an ext_... member id. Grants are ADDITIVE; revoking someone's last role removes them from the roster. Participants and team leads consume a seat; staff do not. Args: { eid?, member_id, roles[], action ('grant'|'revoke'), display_name?, email?, org? }. Returns: { ok, role }. Required scope: hack:admin (operator tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
orgNo
emailNo
rolesYes
actionNo
member_idYes
display_nameNo
Behavior1/5

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

The annotations declare readOnlyHint: true, but the description clearly describes a mutating operation ('Grant or revoke', 'revoking someone's last role removes them from the roster'). This is a direct contradiction, making the behavioral transparency score a 1 per the rubric.

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 dense and front-loaded with the main action, and every sentence adds value (scope, seat consumption, additivity). The inline Args block is a bit redundant with the schema but serves as a concise summary. It is not overly verbose for the complexity.

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 7 parameters and no output schema, the description covers key aspects: required scope, return shape ({ ok, role }), non-IC member handling, and seat consumption. It omits explanation of some optional parameters (eid, display_name, email, org) but overall provides sufficient context for a complex admin tool. The annotation contradiction slightly undermines completeness but is already penalized in behavioral transparency.

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 0%, so the description must compensate. It lists all parameters in an Args block and adds context for member_id (ext_... for non-IC members) and action enum. However, it does not explain the semantics of eid, display_name, email, or org beyond their names, so it only partially compensates.

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 explicitly states 'Grant or revoke event roles' with a specific verb and resource. It goes further to clarify the exact roles (judges, sponsors, mentors, volunteers) and how non-IC members are handled via ext_ member IDs. This distinguishes it from sibling tools like ic_hack_admin_phase or ic_hack_register.

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 clear context: 'This is how judges, sponsors, mentors and volunteers get in' and explains the seat consumption rule. However, it does not explicitly contrast this tool with alternatives or state when not to use it, 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.

ic_hack_application_formGet the application questions for a hackathon (self-describing)A
Read-only
Inspect

Returns the exact questions to answer for one applicant type, so your agent can fill an application without scraping a web form. Each question carries an id, a prompt, a kind (short/long/url/email/bool/choice), whether it is required, and a why explaining what the reviewer is actually looking for — answer to the why, not just the prompt. Also tells you which roles an approval grants, whether it consumes one of the capped seats, and who decides it. Applicant types: founder, engineer, solo_builder, team, designer, partner_delegate, mentor, judge, sponsor, volunteer, media. Answer keys in ic_hack_apply MUST match the question ids returned here. Args: { eid?, applicant_type }. Returns: { ok, form_version, applicant_type, questions[], grants_roles[], consumes_seat, decided_by }. Required scope: hack:read (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
applicant_typeYesOne of: founder, engineer, solo_builder, team, designer, partner_delegate, mentor, judge, sponsor, volunteer, media.
Behavior5/5

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

Annotations already declare readOnlyHint, and the description adds substantial behavioral context: exact question fields, reviewer intent via 'why', required scope hack:read, seat consumption, and decision authority. No 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?

The description is long but front-loaded with a clear purpose, and every clause adds useful detail. The applicant-type list is somewhat redundant with the schema but acceptable given the breadth of 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 read-only query tool with no output schema, the description covers the returned payload shape, question fields, usage context, required scope, and integration with ic_hack_apply. It is complete enough for an agent to invoke correctly.

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?

The description repeats applicant_type values already present in the schema and only echoes 'Args: { eid?, applicant_type }'. It does not explain the meaning or role of the optional eid parameter, and schema coverage is only 50%, so the description fails to compensate for the undocumented eid.

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 'Returns the exact questions...' which names the specific action and resource. It clearly distinguishes itself from siblings like ic_hack_apply (which submits answers) and ic_hack_application_status (which checks status).

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 use case: 'so your agent can fill an application without scraping a web form' and instructs that answer keys in ic_hack_apply must match returned IDs. It lacks explicit alternatives or exclusions, 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.

ic_hack_application_statusCheck your own hackathon applicationA
Read-only
Inspect

Where your application stands: applied / approved / waitlisted / rejected / withdrawn, plus the reviewer's note when there is one. waitlisted means yes-if-a-seat-frees, not no. Args: { eid? }. Returns: { ok, applied, application }. Required scope: hack:read (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior4/5

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

With readOnlyHint=true already indicating a safe read operation, the description adds valuable behavioral context: the exact statuses returned, the special meaning of 'waitlisted' (yes-if-a-seat-frees), and that a reviewer's note is included when available. It also discloses the return shape and required scope, going beyond the annotation's basic safety signal.

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 exceptionally concise—two sentences plus args/returns/scope, all front-loaded. Every element earns its place: statuses, the waitlist clarification, reviewer's note, return structure, and required scope. No redundancy or 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?

Despite the unexplained eid parameter, the description covers the essential context: what the tool does, what statuses mean, the return shape, and required permissions. It lacks a few details (e.g., behavior when no application exists, validation of eid), but for a simple status-read tool with annotations, it is largely complete.

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 coverage is 0%, and the description only mentions 'Args: { eid? }' without explaining what eid represents. The parameter name alone is ambiguous (event ID? hackathon ID?). The description fails to compensate for the schema's lack of documentation, leaving the agent to guess the meaning and optionality of eid.

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 clearly identifies the tool as checking one's own hackathon application status, listing specific possible statuses (applied/approved/waitlisted/rejected/withdrawn). It distinguishes itself from sibling tools like ic_hack_apply, ic_hack_withdraw, and ic_hack_admin_decide_application by focusing on the current status of the user's own application.

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 makes clear the tool is for checking your own application status, not for applying or admin actions. However, it does not explicitly mention alternatives or exclusionary scenarios (e.g., when to use ic_hack_me or admin list tools). The context is strong but lacks explicit 'when not to use' guidance.

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

ic_hack_applyApply for a hackathon seat (vetted — approval required)A
Read-only
Inspect

Submit an application. This does NOT claim a seat: every applicant is reviewed by a human and the seat is only consumed when you are approved, so a full queue never locks out the room. Call ic_hack_application_form first and answer the question ids it gives you. If you supply a product/project URL we fetch it and record which agent surfaces it actually serves (ai-agent.json, MCP, agent-card, llms.txt) for the reviewer — finding none is NOT a rejection, it is a normal starting point, but an inflated claim the probe contradicts is worse than an honest 'none yet'. Re-applying while still pending UPDATES your application rather than creating a second one, so a retry after a timeout is safe. Args: { eid?, applicant_type, answers: { : } }. Returns: { ok, application: { application_id, status, evidence[] } } or { ok:false, error:'bad_answers', missing[], invalid[] }. Required scope: hack:register (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
answersYesKeyed by question id from ic_hack_application_form. Booleans as 'yes'/'no'.
applicant_typeYes
Behavior1/5

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

The annotations declare readOnlyHint=true, but the description describes a state-changing operation: 'Submit an application', 'the seat is only consumed when you are approved', and 'Re-applying while still pending UPDATES your application'. This directly contradicts the readOnlyHint annotation, so the score is 1 and annotation_contradiction is true.

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 dense but each sentence carries useful behavioral context: the non-claiming behavior, the prerequisite form call, URL probing semantics, re-apply idempotency, and return format. It is front-loaded with the core purpose and uses a clear Args/Returns section, though the length is at the edge of what is comfortable for an agent to parse quickly.

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 tool has nested parameters and no output schema, but the description fully covers the application lifecycle, error cases (bad_answers with missing/invalid), required scope (hack:register), return shape, and retry safety. This is sufficient for an agent to invoke and interpret the tool correctly without additional context.

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 schema has only 33% description coverage, but the description compensates by providing the Args structure ({ eid?, applicant_type, answers }), explaining that answers are keyed by question id, and documenting return/error shapes. It still leaves applicant_type values and eid semantics mostly implicit, so it falls short of a 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 description opens with the specific verb-resource pair 'Submit an application' and immediately clarifies this is for a hackathon seat that requires human review and approval. It clearly distinguishes itself from siblings like ic_hack_application_form (fetching the form) and ic_hack_application_status (checking status) by stating what this tool does not do: it does not claim a seat and does not consume a seat until approval.

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 explicitly instructs 'Call ic_hack_application_form first and answer the question ids it gives you,' providing a concrete prerequisite and workflow. It also explains when retrying is safe (pending applications are updated, not duplicated). However, it does not explicitly mention when not to use this tool or name direct alternatives like ic_hack_withdraw or ic_hack_application_status.

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

ic_hack_bounty_postPost a sponsor challenge/bountyAInspect

Publish a sponsor challenge participants can build against. Shows on the event page and in ic_hack_get. Args: { eid?, sponsor, title, description?, prize? }. Returns: { ok, bounty }. Required scope: hack:sponsor + sponsor or organizer role.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
prizeNoFree text — prize structures vary too much to model.
titleYes
sponsorYes
descriptionNo
Behavior4/5

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

The description adds value beyond the false annotations by disclosing required permissions, the side effect that the bounty 'Shows on the event page and in ic_hack_get,' and the return shape '{ ok, bounty }.' It doesn't cover error cases or idempotency, but the write nature is clear.

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 three sentences, with purpose first, followed by a compact args/returns list, and finally the required scope. Each sentence contributes unique information with no wasted words.

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?

While it provides return shape and required scope, it leaves ambiguities: what 'eid' refers to, what the 'bounty' object contains, and whether there are approval steps or error conditions. Given no output schema, these gaps make the description only partially complete for a write 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 coverage is only 20% (prize has a description), so the description should compensate. It lists argument names with question marks, but this only reiterates the schema's required list and does not clarify the meaning of eid, sponsor, title, description, or prize beyond their names.

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 uses the specific verb 'Publish' and identifies the resource as a 'sponsor challenge/bounty.' It also differentiates from sibling tools by noting the content appears on the event page and in ic_hack_get, making clear this is the creation action for that content.

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 clear context by specifying the required scope 'hack:sponsor' and role 'sponsor or organizer,' telling the agent who can use it. However, it does not explicitly state when not to use it or name alternative tools, though no direct alternative exists in the sibling list.

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

ic_hack_checkinCheck a participant in at the door (volunteer / organizer)B
Read-only
Inspect

Mark someone as physically present. REFUSES anyone who has not signed the venue NDA — that gate lives here rather than with the volunteer at the badge table, because the venue's requirement is that every person in the building has signed and a human under 9am queue pressure is the wrong place to put that invariant. Idempotent. Args: { eid?, member_id }. Returns: { ok, role }. Required scope: hack:ops + volunteer or organizer role.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
member_idYes
Behavior1/5

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

The description discloses idempotency and NDA refusal behavior, but the readOnlyHint annotation is true while the described operation ('Mark someone as physically present') is clearly a state-changing write. This is a direct contradiction, so the score is 1.

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

Conciseness4/5

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

The description is front-loaded with the core action and remains dense but readable. The NDA rationale adds useful context, and the args/returns/scope are listed compactly, though the explanation is a bit verbose.

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

Completeness2/5

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

The description covers arguments, return shape, required scope, and idempotency, but the annotation contradiction creates serious ambiguity about whether the tool actually mutates state. There is no output schema and no mention of error cases, leaving completeness incomplete.

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?

The description lists 'Args: { eid?, member_id }' which merely repeats the schema's property names and optionality without explaining what eid or member_id mean. Since schema description coverage is 0%, the description fails to compensate for the lack of parameter documentation.

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 explicitly states 'Mark someone as physically present' with a specific verb and resource, and the title adds clear role context. The NDA-gate behavior distinguishes it from other hack tools like registration or roster.

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 explains the NDA gate invariant and why it lives here rather than at the badge table, giving clear contextual usage guidance. It also states required scope and role prerequisites, though it does not explicitly name alternative tools or exclusion cases.

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

ic_hack_getRead a hackathon's public details (schedule, phase, rules)A
Read-only
Inspect

Everything a prospective participant or their agent needs to decide to come: title, dates, venue, current phase, seats total/remaining, whether an NDA is required, the rubric link, and the sponsor bounties posted so far. Args: { eid (default 'anb-hack-01') }. Returns: { ok, event, seats: {total, used, remaining}, bounties[] }. Required scope: hack:read (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNoEvent id. Defaults to anb-hack-01.
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses the required auth scope (hack:read), the return structure (ok, event, seats, bounties), and the default event ID. This meaningfully enriches the agent's understanding of the tool's behavior and expectations.

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 compact and well-structured, with a lead-in clause, a clear list of returned content, and explicit Args/Returns/Scope sections. Every sentence adds useful information; the format makes it easy to scan.

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 low complexity (one parameter, no output schema), the description is complete. It covers the purpose, return shape, default parameter, and auth requirement, which is sufficient for an agent to invoke and interpret the result 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% because the only parameter (eid) is already documented with a description and default. The description repeats this info in 'Args: { eid (default 'anb-hack-01') }', adding no new semantic value beyond 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?

The title and description clearly state the tool reads a hackathon's public details, listing specific fields (schedule, phase, seats, NDA, rubric, bounties). The verb 'Read' and resource 'public details' are specific, and the content differentiates it from mutation tools like ic_hack_register or ic_hack_admin_phase.

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 context: a prospective participant or agent uses this to decide whether to attend. It does not explicitly name alternatives or exclusions (e.g., 'for results, use ic_hack_results'), so it falls short of a 5 but provides adequate context.

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

ic_hack_judge_listRead every hackathon submission (judge)A
Read-only
Inspect

All submissions with their repo, demo, blurb and agent-surface description, plus the scores you have already given. Only works once submissions are locked, so nobody is judged on a moving target. Args: { eid? }. Returns: { ok, submissions[], my_scores[] }. Required scope: hack:judge + judge or organizer role.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior4/5

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

Annotations declare readOnlyHint, so the low bar is met. The description adds specific details: the locked requirement, included data fields (repo, demo, blurb, agent-surface), and that my_scores are included. It also states the required scope, which isn't in 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 concise, front-loaded with the core functionality, and includes return format and scope in a compact manner. No fluff.

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?

Without an output schema, the description provides the return shape (ok, submissions[], my_scores[]) and lists the fields within submissions. The main gap is the undefined eid parameter, but overall it gives adequate context for a simple read 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?

The only parameter eid is listed as an optional arg with no semantic explanation. Schema coverage is 0% and the description doesn't clarify what eid refers to or how it affects results, so the agent cannot reliably know when to provide 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?

The description clearly states 'All submissions with their repo, demo, blurb and agent-surface description, plus the scores you have already given.' The verb 'Read' and resource 'every hackathon submission' make the purpose unambiguous and distinguishes it from scoring tools like ic_hack_judge_score.

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 provides a key timing constraint: 'Only works once submissions are locked, so nobody is judged on a moving target.' It also specifies required scope. It doesn't explicitly name alternative tools, but the lock condition effectively tells when this is appropriate.

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

ic_hack_judge_scoreScore a hackathon submission (judge)A
Read-only
Inspect

Record your scores for one team. criteria is a map of rubric key to 0..10 (values are clamped, non-numbers rejected rather than coerced). Re-scoring the same team replaces your previous score. Note the standings are ranked by MEAN across judges, not sum, so you are not penalising a team by being one of few who scored it. Your score is advisory input to a human decision, not the decision. Args: { eid?, team_id, criteria: {..}, notes? }. Returns: { ok, score }. Required scope: hack:judge + judge or organizer role.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
notesNoFeedback the team will see after results.
team_idYes
criteriaYesRubric key -> 0..10.
Behavior1/5

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

The annotations declare readOnlyHint=true, implying no state mutation, but the description says 'Record your scores' and 'Re-scoring the same team replaces your previous score,' which are write operations. This is a direct contradiction, so transparency fails.

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 compact but information-dense. Every sentence adds value: purpose, criteria validation, idempotent replacement, mean-vs-sum note, advisory nature, args, returns, and required scope. No fluff.

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 there is no output schema, the description covers the return shape ({ ok, score }), permissions, validation behavior, and side effects (replacement). The mean-vs-sum explanation addresses a subtle scoring concern. It's sufficiently complete for an agent to invoke 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?

The description adds crucial semantics for `criteria`: values are clamped to 0..10 and non-numbers are rejected rather than coerced. This is not in the schema, which only says 'Rubric key -> 0..10.' It also explains that re-scoring replaces the previous score and returns { ok, score }, enriching the schema's minimal 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 opens with 'Record your scores for one team' – a specific verb, resource, and scope. It distinguishes from siblings like ic_hack_judge_list and ic_hack_results by focusing on submission/recording of scores. It also specifies the criteria format and replacement behavior.

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 'Required scope: hack:judge + judge or organizer role' and clarifies that scores are advisory and ranked by mean, not sum. This gives clear context on when and how to use it, though it doesn't explicitly name alternatives or exclusions relative to sibling tools.

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

ic_hack_meYour own hackathon status (roles, team, submission, NDA)A
Read-only
Inspect

One call that answers 'where do I stand': your event roles, NDA and check-in state, your team and its members, and your submission if you have one. The orienting call for an agent arriving mid-event. Args: { eid? }. Returns: { ok, registered, role, team, submission }. Required scope: hack:read (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description does not contradict this; it adds value by disclosing the required auth scope (hack:read) and the exact return fields (ok, registered, role, team, submission). It does not describe edge cases like missing eid or unregistered state, but for a read-only status tool this is sufficient.

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 three sentences, front-loads the core value proposition, and each sentence earns its place: what it answers, why it is useful, and the args/returns/scope. There is no redundancy or fluff, making it highly efficient.

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 simple read-only status tool with one optional parameter and no output schema, the description is complete: it explains the purpose, roles, NDA/check-in state, team, submission, and required scope. The absence of detailed `eid` semantics is a parameter-semantics issue, not a completeness gap. The description fully equips an agent to make the correct first call.

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

Parameters1/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 sole parameter `eid`. It merely repeats the optional argument as 'Args: { eid? }' without explaining what eid is (e.g., event ID, optional filter). The description neither defines its meaning nor provides constraints beyond the schema, leaving the agent without the needed semantic clarity for this 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?

The description uses a specific, outcome-oriented verb ('answers where do I stand') and clearly identifies the resource (personal hackathon status: roles, NDA, check-in, team, submission). It distinguishes itself from sibling tools by explicitly being an 'orienting call' for a mid-event agent, which differentiates it from general hackathon getters like ic_hack_get or team-focused tools.

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 provides clear usage context: it is the first call an agent should make when arriving mid-event to understand personal status. It also states the required scope (hack:read). However, it does not explicitly mention alternatives or when not to use it, 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.

ic_hack_registerSeat someone directly (organizer only — the walk-in path)AInspect

Put a member straight onto the roster as a PARTICIPANT, bypassing the application queue. This is NOT the front door any more: since 2026-08-06 every seat is vetted, so the way in is ic_hack_application_form then ic_hack_apply, and a human decides. This tool is the organizer's override for the case the queue cannot serve — a walk-in at the badge table on day one. Requires the organizer role on this event. Registration is separate from ATTENDING: if the venue requires an NDA the person must still call ic_hack_sign_nda or check-in refuses them. Args: { eid?, member_id? (defaults to you), display_name?, org?, sponsor_visible? }. Returns: { ok, role, seats }. Required scope: hack:register (any tier — the organizer role is the real gate).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
orgNoThe startup or company they're bringing.
member_idNoWho to seat. Defaults to the calling member.
display_nameNoName for the badge and the roster.
sponsor_visibleNoOpt in to sponsors seeing them on the attendee list. Default false.
Behavior4/5

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

Annotations provide no positive behavioral hints (all false), so the description carries much of the burden. It discloses the role requirement, the queue bypass, the distinction between registration and attending, and the NDA dependency, going beyond what annotations alone indicate.

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 information-dense yet well-structured: purpose, exclusions, role requirement, NDA note, args, return value, and required scope. Each sentence earns its place and is front-loaded with the most important usage 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?

Given the tool's complexity, the missing output schema, and the rich sibling context, this description is fully adequate. It covers when, why, who, prerequisites, fallback behavior, return shape, required scope, and edge complexity (NDA) without needing an 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?

Schema covers 80% of parameters, and the description adds value by documenting the member_id default to the caller and summarizing the arguments inline. It does not fully explain eid, but the schema coverage is high enough that the description complements rather than replaces 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?

Description uses a specific verb and resource: 'Put a member straight onto the roster as a PARTICIPANT, bypassing the application queue.' It clearly differentiates from the normal entry path and sibling tools by naming the queue-bypass override and the walk-in scenario.

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 states when to use ('organizer's override for the case the queue cannot serve — a walk-in at the badge table on day one') and when not to use it ('This is NOT the front door any more'; use ic_hack_application_form then ic_hack_apply). It also requires the organizer role and notes the separate NDA step (ic_hack_sign_nda).

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

ic_hack_resultsHackathon standings and resultsA
Read-only
Inspect

Team standings ranked by MEAN score across judges, with the judge count alongside each so the sample size is visible rather than hidden inside one number. Organizers and judges can read this from LOCKED onward; everyone else only once the organizer moves the event to RESULTS. Args: { eid? }. Returns: { ok, phase, standings[] }. Required scope: hack:read (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior4/5

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

The readOnlyHint annotation already establishes safety, and the description adds useful details: ranking methodology (mean score), the inclusion of judge count for sample size, and phase-based visibility. It also discloses the return shape (ok, phase, standings[]), going beyond the annotation.

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 sentences deliver all key information: ranking logic, access rules, and call signature. Front-loaded with purpose, then usage constraints, then params/return/scope. No redundant 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?

For a tool with one optional parameter and no output schema, the description covers ranking method, judge count visibility, phase gating, return shape, and required scope. It could detail standings[] entries or eid behavior, but overall is complete for typical use.

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?

The description lists 'Args: { eid? }' but does not explain what eid means or how it behaves when omitted. Schema coverage is 0% because the description adds no semantic detail beyond the parameter name; it only implies event context through the phrase 'the event'.

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 clearly states the tool's function: retrieving team standings ranked by MEAN score across judges, with judge count visible. It distinguishes itself from sibling hack tools by focusing on results/standings rather than registration, judging, or team management.

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 explicit access-phase guidance: organizers/judges can read from LOCKED onward, others only after RESULTS phase. This clarifies when the tool is appropriate, though it does not name alternative tools or explicitly state 'use when you need standings'.

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

ic_hack_rosterRead the hackathon roster (organizers, volunteers, sponsors)A
Read-only
Inspect

The attendee list. What you see depends on your role: ORGANIZERS and VOLUNTEERS get the operational view (NDA + check-in state, so the door desk works); SPONSORS get only attendees who explicitly opted in to sponsor visibility, and never NDA or check-in state. Args: { eid?, role? (filter) }. Returns: { ok, roster[], counts }. Required scope: hack:ops for staff, hack:sponsor for sponsors.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
roleNoFilter to one event role.
Behavior4/5

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

The description adds significant context beyond the readOnlyHint annotation: it discloses the role-based data exposure (NDA/check-in for staff, opt-in only for sponsors, never NDA for sponsors) and required scopes. This provides useful behavioral expectations that are not derivable from the annotation 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?

The description is packed with information in a compact format: initial purpose, role details, args, returns, and scope. Every sentence contributes, though it could be slightly more concise by trimming the parenthetical 'so the door desk works'.

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

Completeness4/5

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

Given the absence of an output schema, the description provides a return shape ({ ok, roster[], counts }) and covers role-based visibility, scopes, and parameters. This is nearly complete for a read-only roster tool, though it doesn't explain the exact contents of 'roster[]' or 'counts'.

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 schema covers 50% of parameters: role has a description ('Filter to one event role'), while eid has none. The description's 'Args: { eid?, role? (filter) }' clarifies both are optional and role is a filter, adding some meaning beyond the schema. However, eid remains unexplained, so the description only partially compensates.

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 clearly identifies the tool as reading the hackathon roster (attendee list) and distinguishes it by explaining role-based views (organizers/volunteers vs sponsors). The title also explicitly states 'Read the hackathon roster', making the purpose unambiguous and distinct from sibling tools like ic_hack_me or ic_hack_get.

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 explains when to use the tool by detailing the role-dependent output and required scopes (hack:ops for staff, hack:sponsor for sponsors). It implies the context for each role but does not explicitly name alternatives or exclusions, though it is clear enough for an agent to select this tool.

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

ic_hack_sign_ndaRecord your venue NDA signatureBInspect

Record that you have signed the venue's NDA. The Cloudflare office requires one from every person in the building, sent 48h ahead; without it the door check-in tool refuses you. Idempotent. Args: { eid? }. Returns: { ok, nda_signed_at }. Required scope: hack:register (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior1/5

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

The description explicitly states 'Idempotent', but the annotations include idempotentHint: false. This is a direct contradiction. Annotation contradiction is true.

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 compact and well-structured: purpose, context, idempotency, args, returns, and scope are each conveyed in brief, purposeful segments. No wasted words.

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?

Despite low complexity, the description covers return value, required scope, and usage context, but omits any explanation of the eid parameter. The idempotency contradiction also adds confusion. It's an adequate but incomplete description.

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

Parameters1/5

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

Schema description coverage is 0%, and the description only lists 'Args: { eid? }' without explaining what eid means, its purpose, or how to obtain a valid value. The agent cannot infer parameter semantics from the description.

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 starts with a clear action verb 'Record' and specific resource 'venue NDA signature'. It distinguishes this tool from siblings like ic_hack_checkin or ic_hack_register by directly tying the signature to the venue's NDA and door check-in refusal without it.

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

Usage Guidelines4/5

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

The description provides clear context: every person in the Cloudflare office needs an NDA sent 48h ahead, and the absence causes the door check-in tool to refuse. This gives a strong 'when to use' signal without naming alternatives, making it a clear context without explicit exclusions.

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

ic_hack_submitCreate or update your team's hackathon submissionAInspect

Submit (or re-submit) your team's project. Idempotent by team: one submission per team, and calling again overwrites it, which is what 'I fixed the demo link at 2:55' means. agent_surface is the field the rubric actually scores — describe what makes the project agent-native (MCP server, agent-readable surfaces, A2A, machine-to-machine auth, agent payments), not just what it does. Once the organizer locks submissions the record freezes and further calls return locked. Args: { eid?, title?, blurb?, repo_url?, demo_url?, agent_surface?, folder_id? (a vault folder with slides/video) }. Returns: { ok, submission }. Required scope: hack:submit, and you must be on the team.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
blurbNoOne paragraph: what it is.
titleNo
demo_urlNo
repo_urlNo
folder_idNoVault folder (d_...) with slides, video, screenshots.
agent_surfaceNoWhat makes it agent-native. This is what the rubric scores.
Behavior4/5

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

With annotations all false, the description carries the burden and delivers: it explicitly discloses idempotency ('one submission per team, and calling again overwrites it') and the lock/freeze behavior with a 'locked' return. It also states required scope and team membership, plus the return shape. No contradiction with 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?

Four dense sentences, each adding distinct value: idempotency, rubric guidance, lock behavior, and args/returns/scope. The use of backticks and a compact Args/Returns block keeps it scannable with no 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?

For a 7-param tool with no output schema and sparse annotations, the description is thorough: return shape, lock behavior, idempotency, scope, and the key scoring field guidance. It doesn't enumerate all error cases, but the essentials are covered.

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 adds meaningful guidance to agent_surface — explaining it is what the rubric scores and listing example content (MCP server, A2A, agent payments) — and clarifies folder_id as a vault folder with slides/video. However, it merely lists eid, title, repo_url, and demo_url without elaboration, and schema coverage is only 43%, so it only partially compensates.

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 'Submit (or re-submit) your team's project' — a specific verb and resource. It clearly differentiates from sibling hackathon tools by explaining idempotency and overwrite semantics, making the tool's unique purpose unmistakable.

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: for submitting or re-submitting, even quoting the pragmatic scenario of fixing a demo link at 2:55. It also gives a clear exclusion: once the organizer locks submissions, the record freezes and further calls return 'locked'. It doesn't name specific sibling alternatives, but the context is sufficient.

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

ic_hack_team_createCreate a hackathon teamAInspect

Start a team and become its lead. One team per person — leave your current team first. Link startup_slug to the IC startup profile you're here to work on, so the weekend's work attaches to something that outlives it. Args: { eid?, name, startup_slug?, looking_for? }. Returns: { ok, team }. Required scope: hack:team, and you must be registered on the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
nameYes
looking_forNoSkills you need, e.g. 'a designer, someone who knows Workers'.
startup_slugNoIC startup profile this team is building on.
Behavior5/5

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

Annotations are all false, carrying minimal safety info, so the description carries the full burden. It discloses the lead role, the one-team-per-person rule, the startup_slug linkage, the required scope (hack:team), the need to be registered, and the return format ({ ok, team }). This is substantial behavioral context 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.

Conciseness5/5

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

Every sentence earns its place: the opening states the action, the second covers a key constraint, the third explains a parameter's purpose, and the final lines list args, returns, and requirements. It is front-loaded and compact 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?

Given there is no output schema, the description explicitly states the return shape. It covers purpose, constraints, prerequisites (registration and scope), and parameter linkage. It is complete for a team-creation tool, with the only minor gap being the undefined eid 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?

The description adds meaning for startup_slug by saying 'Link startup_slug to the IC startup profile you're here to work on, so the weekend's work attaches to something that outlives it.' However, it omits any elaboration on eid (likely event ID) and name beyond the basic Args list. With schema coverage at 50%, the description should compensate for eid's lack of schema description but does not.

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 'Start a team and become its lead,' a specific verb+resource statement that clearly identifies the action. It distinguishes from sibling tools like ic_hack_team_join, ic_hack_team_leave, and ic_hack_team_list by noting the leadership role.

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

Usage Guidelines4/5

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

It provides clear context: 'One team per person — leave your current team first,' which tells the agent when to avoid calling and implies a prerequisite using the leave tool. It also states registration and scope requirements. However, it does not explicitly name alternative sibling tools (e.g., ic_hack_team_join) for joining an existing team.

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

ic_hack_team_joinJoin a hackathon teamAInspect

Join an existing team by id. One team per person, max 6 per team. Args: { eid?, team_id }. Returns: { ok, team }. Required scope: hack:team, and you must be registered on the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
team_idYes
Behavior4/5

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

The description discloses important behavioral details beyond the annotations: the need for 'hack:team' scope and event registration, the return shape '{ ok, team }', and the constraints that enforce single team membership and team size. This gives a clear picture of what happens and what is required, though it doesn't detail error cases or idempotency behavior.

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 extremely compact, covering purpose, constraints, arguments, return type, and authorization in two sentences. Every piece of information earns its place, with no redundancy or 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?

For a relatively simple join operation, the description covers the essential context: what the tool does, preconditions, and return shape. However, it leaves the 'eid' parameter undefined and does not mention potential failure modes (e.g., team full, not registered), which could be important for an agent to handle errors gracefully.

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?

The schema has no descriptions (0% coverage), so the description must clarify parameter meanings. It lists 'Args: { eid?, team_id }' but only 'team_id' is implicitly understood from the tool purpose. 'eid' is left unexplained, and no details are given about how these parameters are used or their interdependencies. This is insufficient compensation for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the action: 'Join an existing team by id.' It identifies the specific resource (a hackathon team) and the mechanism (by id), distinguishing it from related tools like team creation or leaving. The additional constraints (one team per person, max 6 per team) further clarify the purpose.

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

Usage Guidelines4/5

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

It provides clear context by stating prerequisites (required scope and event registration) and constraints (one team per person, max 6 per team), which help the agent decide when to use this tool. However, it does not explicitly name alternative tools such as ic_hack_team_create or ic_hack_team_leave, so it stops short of full when-to-use vs. when-not guidance.

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

ic_hack_team_leaveLeave your hackathon teamB
Read-only
Inspect

Leave the team you're on. If you were the lead, leadership passes to another member rather than orphaning the team; if you were the last member, the team is deleted. Args: { eid? }. Returns: { ok, team }. Required scope: hack:team.

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior1/5

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

The description contradicts the annotation: readOnlyHint=true, yet 'leave' is a mutating operation that changes team state. Although the description details important side effects (leadership transfer, team deletion), the annotation contradiction is a serious inconsistency, forcing a score of 1.

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 compact, front-loaded, and every sentence adds value: it states the action, side effects, parameters, return type, and required scope. All in three sentences plus structured fields, with no filler.

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?

The description covers important behavior (leadership transfer, team deletion), return shape, and scope. However, it omits the meaning of the 'eid' parameter and is undermined by the annotation contradiction, leaving the overall context incomplete for safe invocation.

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

Parameters1/5

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

The description only mentions 'Args: { eid? }' without explaining what 'eid' refers to. Schema coverage is 0%, and the schema itself provides no description for the parameter. This adds no meaning beyond the parameter name.

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 clearly states the tool's action—'Leave the team you're on'—using a specific verb and resource. It distinguishes from related tools like ic_hack_team_join and ic_hack_team_create, making its purpose 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?

Provides clear context on when to use (when you want to leave a team) and describes edge cases like leadership transfer and team deletion. However, it does not explicitly mention alternatives or when not to use, but the sibling tool names imply the context.

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

ic_hack_team_listList hackathon teams (and who is recruiting)A
Read-only
Inspect

Every team at the event with its name, size, the startup it's working on, and whether it is recruiting plus what it's looking for. Use this to find a team to join rather than asking around the room. Args: { eid?, recruiting_only? }. Returns: { ok, teams[] }. Required scope: hack:read (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
recruiting_onlyNoOnly teams open to new members.
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds value by specifying the return shape ({ ok, teams[] }), required scope (hack:read), and content details like team attributes. It doesn't address potential ambiguity about eid scope, but overall it provides meaningful context 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.

Conciseness5/5

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

Three sentences efficiently cover purpose, use case, args, return format, and auth scope with no redundant content. The core behavior is front-loaded, 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?

No output schema exists, but the description enumerates the team fields and return shape, while also noting required scope. However, it leaves ambiguity around whether eid is optional and what the default scope is (e.g., current event vs. all events), which is a minor completeness gap.

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 coverage is 50%: recruiting_only has a description, but eid has none. The description merely repeats parameter names in the args string without explaining eid's meaning or format, adding no value beyond the schema. This is a significant gap for the eid 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?

The description clearly states it lists 'Every team at the event' with specific attributes (name, size, startup, recruiting status), using the verb 'list' and resource 'hackathon teams'. This distinguishes it from sibling tools like ic_hack_team_create and ic_hack_team_join.

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 explicitly states 'Use this to find a team to join rather than asking around the room', providing a clear context for when to use the tool. It doesn't explicitly mention alternative tools or exclusions, but the use case is well-defined.

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

ic_hack_withdrawWithdraw your hackathon application (frees your seat)B
Read-only
Inspect

Withdraw. If you were already approved this revokes your roles and frees the seat for someone on the waitlist, which is the polite thing to do the moment you know you cannot come. Args: { eid? }. Returns: { ok, status, freed_seat }. Required scope: hack:register (any tier).

ParametersJSON Schema
NameRequiredDescriptionDefault
eidNo
Behavior1/5

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

The description states that withdrawing 'revokes your roles and frees the seat,' which directly contradicts the annotation readOnlyHint=true. This is a serious inconsistency: the tool is clearly state-changing despite being marked read-only. The description adds behavioral context but is undermined by the annotation contradiction.

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 extremely concise and front-loaded with 'Withdraw.' It then covers effects, timing, arguments, return values, and required scope in just a few sentences. Every sentence adds value, and it is well-structured for quick parsing.

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 simple tool with one optional parameter and no output schema, the description provides substantial contextual information: return shape ({ ok, status, freed_seat }), required scope (hack:register), and behavioral nuance for approved applications. However, it omits the meaning of eid and does not address inconsistency with the read-only annotation, leaving gaps.

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

Parameters1/5

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

The only parameter, eid, is mentioned as 'Args: { eid? }' in the description, which merely repeats the schema field name without explaining what it refers to (e.g., event ID, application ID). With schema description coverage at 0%, the description fails to provide any meaningful semantics for the 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?

The description clearly states the action: 'Withdraw.' It specifies the resource (hackathon application) and the consequence (revokes roles and frees the seat for waitlisted attendees). This distinguishes it from sibling tools such as ic_hack_apply and ic_hack_application_status.

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 provides clear usage context: 'the polite thing to do the moment you know you cannot come.' It does not explicitly mention when not to use it or list alternatives, but the when-to-use guidance is clear enough for an agent to select this tool over related application-management tools.

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

ic_headsets_admin_clear_oosClear out-of-service on a PICO unit (operator)A
Idempotent
Inspect

Operator returns a unit to the available pool. Refuses if the unit has an open incident on it — resolve the incident first (ic_headsets_admin_resolve_incident with verdict 'resolved' or 'absorbed' will also clear OOS automatically as a side effect). Args: { unit_id }. Returns: { ok, message }. Required scope: admin:headsets_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes
Behavior4/5

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

Discloses refusal condition and side effect of resolve_incident. Annotations already provide idempotent and non-destructive hints; description adds behavioral context but could mention what happens if unit already clear.

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 concise sentences with no unnecessary words. Key information is front-loaded in the first sentence. Every sentence adds value.

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?

Despite lack of output schema and parameter details, the description covers purpose, usage conditions, side effects, and return structure. Sufficient for a simple tool with one parameter and strong annotations.

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 has 0% parameter description coverage, and description only restates 'Args: { unit_id }' without defining what unit_id represents. While the context implies it's a unit identifier, additional clarification would improve clarity.

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?

Clearly states 'returns a unit to the available pool' and differentiates from sibling tools like ic_headsets_admin_mark_oos and ic_headsets_admin_resolve_incident by specifying the action and refusal condition.

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 tells when not to use (if open incident exists) and provides alternative (resolve_incident with specific verdict). Also mentions required scope, giving clear guidance on prerequisites.

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

ic_headsets_admin_force_returnForce-close a PICO lend (operator)A
Destructive
Inspect

Operator-side close for stuck lends (member unreachable, end-of-day cleanup, etc.). Releases the per-member NX lock so the borrower can lend again. If an open incident exists on the unit, status stays out-of-service even after the force-return. Notes are appended (not overwritten) with operator attribution + reason. Args: { lend_id, reason }. Returns: { ok, message, unit_status }. Required scope: admin:headsets_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
lend_idYes
Behavior4/5

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

Annotations indicate destructiveHint=true. The description adds valuable context: releases NX lock, appends notes with attribution, and explains impact on unit status. No contradiction with annotations.

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?

Description is 4 sentences, each sentence adds specific value. No redundant or vague language. Efficient and well-structured.

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 annotations and schema, the description covers most aspects. It includes scope requirement and return values. Missing details on error conditions or rate limits, but overall 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 0%, but the description lists both args (lend_id, reason) and mentions their purpose indirectly. It also states return fields. Adequate but could be more detailed about parameter formats.

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 clearly states the tool's purpose: 'Force-close a PICO lend (operator)', with specific verbs and resource. It distinguishes from sibling tools like ic_headsets_return by specifying it's operator-side.

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 provides explicit when-to-use scenarios ('member unreachable, end-of-day cleanup, etc.') and important context about incident handling. No explicit alternatives mentioned, 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.

ic_headsets_admin_list_active_lendsList all active PICO lends (operator)A
Read-only
Inspect

Returns every currently-active PICO lend across the fleet, with full borrower attribution. Operator-only. Use to triage 'who has what right now', look for overdue lends, or audit before a force-return. Args: none. Returns: { count, lends: LendRecord[] }. Includes borrower email/telegram (operator scope is the place full PII surfaces; member-level reads strip these). Required scope: admin:headsets_review.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Description adds significant value beyond annotations by detailing output structure (count, lends array), PII exposure (email/telegram), and required scope. Annotations already indicate read-only, but description enriches behavioral understanding.

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?

Concise yet comprehensive: three sentences covering purpose, usage, output, and scope. Front-loaded with main action, no wasted words.

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 no parameters or output schema, the description fully covers what the tool does, its inputs (none), and outputs (count, lends). No missing information for an agent to correctly 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?

No parameters exist, so schema coverage is 100%. Description correctly notes 'Args: none', needing no further clarification. Baseline for zero-param tools is 4.

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?

Clearly states it returns all currently-active PICO lends with full borrower attribution. Distinguishes itself as operator-only and lists specific use cases like triage, overdue checks, and audit for force-return, setting it apart from sibling tools.

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 when to use (triage, overdue, audit) and highlights that it is operator-only with full PII, contrasting with member-level reads. Provides clear context for selection.

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

ic_headsets_admin_list_open_incidentsList open PICO damage incidents (operator)A
Read-only
Inspect

Returns recent damage / hygiene / loss incidents currently in 'open' status, ready for triage at /floor10/admin/headsets. Operator-only. Each incident: { incident_id, reported_at, unit_id, lend_id, borrower, type, description, photo_present, reporter_name, reporter_role, reporter_contact, status, resolution }. Args: { limit?: number, max 100, default 50 }. Returns: { count, incidents: IncidentRecord[] }. Required scope: admin:headsets_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return. Default 50, max 100. Older incidents fall off the scan window.
Behavior4/5

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

Annotations already indicate readOnlyHint=true; the description adds behavioral details: returns only 'open' status incidents, lists the incident fields, and mentions that older incidents fall off the scan window (from param description). No contradiction.

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 three sentences long, front-loaded with the main purpose, then details on return structure and parameters. Every sentence adds value with no waste.

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 simple parameter set and no output schema, the description fully covers the tool's behavior: return type, field list, optional parameter with constraints, and required scope. No gaps remain.

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% with a description for 'limit'. The tool description repeats the schema info ('max 100, default 50') but does not add new meaning beyond what the schema provides. 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 clearly states the verb ('Returns'), resource ('open incidents'), and context ('ready for triage at /floor10/admin/headsets'). It distinguishes from sibling tools by specifying 'open' status and operator-only access.

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 specifies 'Operator-only' and 'Required scope: admin:headsets_review', providing clear access constraints. It implicitly suggests use for triage. While it does not explicitly exclude alternative tools, the context is sufficient for an agent to decide when to use it.

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

ic_headsets_admin_mark_oosMark a PICO unit out-of-service (operator)A
DestructiveIdempotent
Inspect

Operator pulls a unit from rotation. Refuses if the unit is currently lent (force-return first). Appends to the unit's notes with a date stamp + reason. Args: { unit_id, reason }. Returns: { ok, message }. Required scope: admin:headsets_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
unit_idYes
Behavior5/5

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

Description adds significant context beyond annotations: it declares the refusal guard for lent units, the side effect of appending notes with datestamp + reason, the return format {ok, message}, and required scope 'admin:headsets_review'. Annotations provide destructiveHint and idempotentHint, which align with description.

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 concise sentences front-load purpose, then detail behavior, parameters, and return. No filler or redundancy.

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?

Description covers behavior, conditions, output shape, and required scope. Lacks mention of idempotency (but annotations cover it) and potential error cases. Adequate for a simple admin 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?

Input schema has 0% parameter descriptions. Description only lists parameter names (unit_id, reason) without adding format, examples, or constraints. For a tool with zero schema coverage, more detail is needed to guide correct 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?

Description clearly states the tool marks a PICO unit out-of-service, with specific verb 'pulls a unit from rotation'. It distinguishes from sibling tools like ic_headsets_admin_clear_oos (reverse operation) and ic_headsets_admin_force_return (prerequisite action).

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?

Description explains context (operator pulls from rotation) and a precondition (refuses if currently lent, suggesting prior force-return). It does not explicitly compare with alternative tools, but the behavior is clear enough for an admin action.

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

ic_headsets_admin_resolve_incidentResolve a PICO damage incident (operator)A
Idempotent
Inspect

Operator-side incident triage. Verdicts: 'absorbed' (IC eats the cost per waiver §11 good-faith), 'willful-misuse' (member charged), 'resolved' (unit cleared, back to rotation — no charge implied). 'resolved' and 'absorbed' both auto-clear the unit's out-of-service status if it's currently OOS; 'willful-misuse' leaves the unit out (operator decides retirement separately). Resolution note is required (sent into the audit trail). Args: { incident_id, verdict, resolution }. Returns: { ok, message }. Required scope: admin:headsets_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
verdictYesTriage outcome. 'open' is not a valid verdict — it's the unresolved state.
resolutionYesOne-paragraph note for the audit trail. Required.
incident_idYes
Behavior5/5

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

Annotations indicate it's mutable and idempotent with no destruction. The description adds details on unit OOS behavior, audit trail requirement, and required scope, complementing annotations well.

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?

Concise and well-structured. Every sentence adds value, with key information front-loaded. No wasted words.

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 return values and required scope. No output schema, but the simple return is mentioned. Could add error conditions, but overall adequate for a straightforward mutation.

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 description reiterates the verdict enum options and resolution note requirement but adds little beyond the schema descriptions. No contradiction.

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 clearly states it is for 'operator-side incident triage' and enumerates three verdicts with their outcomes. It distinguishes from sibling tools by focusing on incident resolution.

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 describes when to use each verdict and the consequences for unit OOS status. Does not explicitly exclude other scenarios but the context is clear given the sibling list.

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

ic_headsets_attest_memberSign off another member to check out PICO unitsA
Idempotent
Inspect

Sign off (attest) another ic-member so they can check out a PICO unit. Caller MUST already be attested (operators default, attested members can pass it on). Idempotent — re-attesting refreshes the timestamps. Args: { subject_user_id: string, notes?: string }. Returns: { ok, record }. Required scope: headsets:lend.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional context for the audit trail.
subject_user_idYesClerk user_id of the member being signed off.
Behavior4/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds value by stating that re-attesting refreshes timestamps, defines the return shape { ok, record }, and specifies the required scope headsets:lend. No contradictions.

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 concise, front-loading the purpose and prerequisite in a short paragraph followed by argument listing. No unnecessary text; every sentence adds value.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema, annotations present), the description covers purpose, prerequisite, idempotency, scope, and return shape. It is sufficiently complete for an agent to understand correct usage.

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% with parameter descriptions. The description in text restates the parameters and adds context (e.g., notes for audit trail). Since schema already covers details, the description provides marginal reinforcement, meeting baseline.

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 clearly states the action ('Sign off (attest) another ic-member so they can check out a PICO unit') using a specific verb and resource. It distinguishes this tool from sibling headset tools (e.g., checkout, return, admin functions) by focusing on attestation.

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 explicit usage context: 'Caller MUST already be attested (operators default, attested members can pass it on).' It also notes idempotency. However, it does not explicitly exclude alternative tools, though no close siblings exist.

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

ic_headsets_checkoutCheck out a PICO unitAInspect

Atomically claims a PICO unit for the calling user. Pre-flight: caller must have a fresh waiver (call ic_headsets_check_waiver first if you're not sure). Per-member NX lock prevents double-lending. Returns the new lend_id + due_back_at. Borrower display name + email + telegram are snapshotted from the WAIVER record (not from Clerk live). Args: { unit_id: 'IC1'..'IC8' }. Returns: { ok, lend_id, due_back_at }. Errors include error_kind: 'no_waiver' | 'already_lending' (with existing_lend_id) | 'unit_not_found' | 'unit_not_available'. Required scope: headsets:lend.

ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYesUnit id, e.g. 'IC1'. Case-insensitive.
Behavior4/5

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

Discloses atomic claim behavior, return values (lend_id, due_back_at), data snapshotting from waiver record, error kinds, and required scope. Annotations don't provide much (readOnly false, destructive false), so description fills in well. Could add more on timeout or cancellations, but sufficient.

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 concise at around 90 words, front-loaded with the main action. Each sentence adds value: atomic claim, pre-flight, locking, return format, args, errors, scope. Slightly dense but no waste.

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 1 parameter and no output schema, the description fully covers return values, error cases, scope requirement, and pre-flight condition. No gaps remain for an agent to understand how to invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% with a well-documented unit_id parameter. The description adds a range hint ('IC1'..'IC8') but that's minor. Baseline 3 is appropriate since schema already handles 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 clearly states it 'atomically claims a PICO unit for the calling user.' The verb 'checkout' is reinforced with 'claims' and the resource is a PICO unit. This distinguishes it from sibling tools like ic_headsets_return and ic_headsets_get_my_lend.

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 mentions pre-flight requirement: caller must have a fresh waiver, advises calling ic_headsets_check_waiver if unsure. Also notes per-member NX lock prevents double-lending, which indicates when not to use (if already lending). Alternative sibling tool ic_headsets_check_waiver is referenced for context.

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

ic_headsets_check_waiverCheck the caller's PICO lending waiver freshnessA
Read-only
Inspect

Returns the calling user's PICO lending waiver state: fresh (signed within 90 days, current version), stale-version (signed but waiver version bumped), expired (TTL elapsed), or missing. Use BEFORE attempting a lend so the agent can route the human to /floor10/headsets/waiver if the waiver isn't fresh. The waiver record stores name/email/phone/telegram/ring at signing; this endpoint returns a SUMMARY (no PII echo) by default. Args: none. Returns: { state: 'fresh'|'stale-version'|'expired'|'missing', version?, signed_at?, expires_at? }. Required scope: headsets:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

ReadOnly hint already indicates read-only; description adds that it returns a summary without PII echo and lists return shape. No contradiction with annotations.

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?

Front-loaded with purpose, then usage, then details. Every sentence adds value; no fluff.

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?

Covers return shape, required scope, edge cases, and usage timing. Despite no output schema, the description fully explains what the tool returns and when to use it.

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?

No parameters; schema coverage is 100%. Description simply states 'Args: none,' adding no extra meaning beyond the empty 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?

Clearly states the resource (PICO lending waiver), action (check state), and distinct state values. Differentiates from sibling tools like ic_headsets_sign_waiver.

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 says 'Use BEFORE attempting a lend' and provides routing guidance for non-fresh states. Does not list alternatives but context is strong.

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

ic_headsets_get_attestation_statusRead attestation status for a memberA
Read-only
Inspect

Returns whether a user is attested (signed off to check out PICO units). Defaults to the calling user when user_id is omitted. Operators are attested-by-default and may have no record. Args: { user_id?: string }. Returns: { ok, user_id, is_attested, record? }. Required scope: headsets:lend.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoClerk user_id. Defaults to the caller.
Behavior4/5

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

Annotations already indicate readOnlyHint=true. Description adds important context: 'Operators are attested-by-default and may have no record' and required scope. Could mention error cases but overall good.

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 concise sentences, front-loaded with main purpose, no unnecessary words. Efficiently covers key aspects.

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 simplicity (one optional param, read-only), the description covers purpose, default, special cases, scope, and return fields. No output schema needed.

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 already documents parameter with default behavior. Description adds return shape ({ ok, user_id, is_attested, record? }) which provides additional value 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?

Description clearly states it returns attestation status for a user. Verb 'read' and resource 'attestation status' are specific. Does not explicitly distinguish from sibling tools like ic_headsets_attest_member, but purpose 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 Guidelines3/5

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

Mentions default behavior and operator nuances, but lacks explicit guidance on when to use this tool versus alternatives like ic_headsets_attest_member or when checking attestation before checkout.

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

ic_headsets_get_my_lendGet the caller's active PICO lend (if any)A
Read-only
Inspect

Returns the calling user's currently-active PICO lend, or null if they have none. Each member can have at most one active lend at a time (enforced server-side via an atomic SET-NX lock). Use this to answer 'am I currently borrowing a headset?'. Args: none. Returns: { lend: LendRecord | null }. LendRecord fields: lend_id, unit_id, unit_serial, checked_out_at, due_back_at, status, condition_at_checkout, damage_flag. PII fields (email/telegram) are stripped on the MCP path. Required scope: headsets:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations provide readOnlyHint=true, but the description adds important behavioral context: 'Each member can have at most one active lend at a time (enforced server-side via an atomic SET-NX lock)'. It also discloses PII stripping and required scope, going beyond what annotations provide.

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 single well-organized paragraph. It front-loads the primary function and covers functionality, constraint, usage, return format, and scope in minimal sentences. No extraneous content.

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 simplicity (0 params, no output schema), the description is complete. It explains the operation, return value (with field listing), behavioral guarantees, security context (PII stripping, scope), and intended use. No gaps remain.

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

Parameters5/5

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

With zero parameters, schema coverage is trivially 100%. The description adds value by explaining that no arguments are needed and details the return structure (LendRecord fields). This compensates for the lack of output schema and clarifies usage.

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 clearly states the action: 'Returns the calling user's currently-active PICO lend, or null if they have none.' It specifies the resource (PICO lend) and the purpose: answering 'am I currently borrowing a headset?'. This is specific and distinguishes it from sibling admin tools.

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 provides a clear use case: 'Use this to answer "am I currently borrowing a headset?"'. It does not explicitly exclude other contexts or mention alternatives, but the purpose is well-defined and fits the context of sibling tools.

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

ic_headsets_get_unitLook up a single PICO unitA
Read-only
Inspect

Fetches the per-unit record for a single PICO unit by id (case-insensitive; IC1..IC8). Returns 404 if the id isn't in the fleet. Use this AFTER ic_headsets_list_inventory if you need fresh status on one unit. Args: { id: string }. Returns: HeadsetRecord. Required scope: headsets:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnit id (e.g. 'IC1'). Case-insensitive; normalized to uppercase.
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds valuable behavioral details: case-insensitive normalization to uppercase, 404 not found, and required scope headsets:read. This provides context beyond what annotations convey.

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 extremely concise with three sentences: the first states the core purpose, the second gives usage guidance, and the third specifies args/returns/scope. No wasted words, and the most important information is front-loaded.

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

Completeness4/5

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

For a simple read tool with one parameter and read-only annotations, the description covers the essential aspects: what it does, when to use it, expected errors, and required scope. It lacks details about the return format beyond 'HeadsetRecord', but the simplicity of the tool makes this acceptable.

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 includes case-insensitivity details. The description adds the IC1..IC8 range hint and repeats the case-insensitive normalization, reinforcing the parameter meaning. This extra context goes beyond 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?

The description clearly states the action ('fetches'), the resource ('per-unit record for a single PICO unit'), and the identifier ('by id'). It also includes specific details like case-insensitivity and the IC1..IC8 range, distinguishing it from sibling tools like ic_headsets_list_inventory.

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 explicitly guides the agent to use this tool AFTER ic_headsets_list_inventory for fresh status on one unit. It also mentions the 404 response for missing ids. However, it does not cover scenarios where the tool should not be used, such as when the id is invalid or the user lacks scope.

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

ic_headsets_list_inventoryList the IC PICO lending fleetA
Read-only
Inspect

Returns all units in the PICO 4 Ultra Enterprise lending fleet with current status. Same data the /floor10/headsets grid renders. Each record: { id ('IC1'..'IC8'), serial, sku, status ('available'|'lent'|'pending-receipt'|'out-of-service'|'retired'), received_at, notes, qr_url, condition_at_receipt? }. Floor-only policy through 2026-06-14 — units do not leave Floor 10. Args: none. Returns: { count, units: HeadsetRecord[] }. Required scope: headsets:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Beyond the annotations (readOnlyHint=true), the description adds that units do not leave Floor 10, which is a behavioral constraint. It also specifies the record structure, adding context about what is returned.

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 somewhat verbose but well-structured: it starts with the main purpose, then details the record fields, a policy note, and scope requirement. Each sentence adds value.

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 no parameters and no output schema, the description still provides a full picture: it lists the record fields, return type, policy constraint, and required scope. This is complete for an agent to use the tool 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?

The input schema has no parameters, and the description explicitly states 'Args: none.' This is clear and sufficient, adding value by confirming no parameters are needed.

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 clearly states the tool returns all units in the PICO 4 Ultra Enterprise lending fleet with current status, distinguishing it from sibling tools like ic_headsets_get_unit or ic_headsets_checkout.

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 provides context (same data as grid, floor-only policy, required scope) but does not explicitly list when to use vs alternatives. Still, the purpose is clear enough for an agent to infer.

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

ic_headsets_mark_sop_completeRecord that you walked a member through the SOPA
Idempotent
Inspect

Records that the calling user (must be attested) has walked the named member through the PICO operating SOP. Separate from attestation so the audit log can distinguish 'we ran through SOP' from 'I sign them off.' Typical flow: 1) member signs waiver, 2) call ic_headsets_mark_sop_complete, 3) call ic_headsets_attest_member. Args: { subject_user_id }. Returns: { ok, record }. Required scope: headsets:lend.

ParametersJSON Schema
NameRequiredDescriptionDefault
subject_user_idYes
Behavior3/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false. Description adds context about audit log separation and requires the calling user to be attested, but does not elaborate on rate limits, error cases, or other behavioral traits. It provides moderate additional value 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?

Description is three sentences plus a brief list, front-loading the core action. Every sentence is informative, though the explicit 'Args:' line is redundant given the schema. Could be slightly more concise without losing clarity.

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

Completeness3/5

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

For a simple record-keeping tool with one parameter and no output schema, the description explains the tool's role in the workflow (waiver, SOP, attestation) and notes the return format. However, it lacks details on error cases, timeouts, or what happens if the user is not attested.

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

Parameters1/5

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

Schema has 0% description coverage; the single parameter subject_user_id is only listed as 'Args: { subject_user_id }' without any explanation of what it represents. Description fails to clarify how 'named member' maps to this parameter, adding no meaning beyond the field name.

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?

Description clearly states 'Records that the calling user... has walked the named member through the PICO operating SOP,' using a specific verb and resource. It explicitly distinguishes from the sibling tool ic_headsets_attest_member by noting the separation for audit log purposes.

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?

Description tells when to use this tool (after waiver, before attestation) and why (audit log distinction between SOP walkthrough and sign-off). It also provides a typical flow and mentions required scope, giving clear guidance on when to invoke.

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

ic_headsets_report_damageReport a PICO damage / hygiene / loss incidentAInspect

Files an incident on a PICO unit. Anyone with the scope can file (borrower, witness, ops staff). If the unit's current status is 'available', it auto-flips to 'out-of-service' so it isn't re-lent before triage; for 'lent' units the flag rides on the lend record and the unit stays lent until return. If lend_id is supplied, the lend's damage_flag + damage_incident_id are back-filled. Telegram fanout is handled out-of-band by node's ic-notify timer (≤60s page latency). Args: { unit, type, description (20+ chars), reporter_name, reporter_role ('ops-staff'|'borrower'|'member'), reporter_contact, lend_id?, borrower?, photo? (base64 data URL, capped ~5MB) }. Returns: { ok, incident_id }. Required scope: headsets:report_damage.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesCategory of incident.
unitYesUnit id (IC1..IC8) or full serial.
photoNoOptional base64 data URL of the damage photo. Capped ~5MB raw (~6.7MB encoded).
lend_idNo
borrowerNo
descriptionYes
reporter_nameYes
reporter_roleYes
reporter_contactYes@telegram-handle or email.
Behavior5/5

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

The description provides detailed behavioral context beyond annotations: auto-flip to 'out-of-service' for available units, back-fill logic for lent units, Telegram fanout timing, and parameter constraints. Annotations (readOnlyHint=false, destructiveHint=false) are consistent and not contradicted.

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 well-structured with a clear first sentence stating purpose, followed by behavioral details and a parameter listing. While it is somewhat long, every sentence provides essential information without redundancy.

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

Completeness4/5

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

The description covers purpose, behavior, parameters, and return value ({ ok, incident_id }). It lacks error scenarios or rate limits, but for a mutation tool with detailed annotations and schema, it is adequately 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?

With 44% schema description coverage, the description compensates by listing all parameters and adding constraints (e.g., description 20+ chars, photo base64 capped ~5MB). It explains reporter_role enum values and optional fields, adding value beyond 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?

The description clearly states it 'Files an incident on a PICO unit' with a specific verb and resource. It distinguishes itself from sibling tools like admin tools by focusing on incident reporting, making its purpose 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?

The description specifies who can use it ('anyone with the scope') and in what scenarios (damage, hygiene, loss). While it doesn't explicitly exclude alternatives, the context makes it clear when to use this tool. Mentioning required scope adds guidance.

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

ic_headsets_returnReturn a PICO lendAInspect

Closes an active lend. The caller must be the borrower OR an operator. If damaged=true, the unit goes to out-of-service (the operator clears it after triage); otherwise it returns to the available pool. After damaged=true, follow up with ic_headsets_report_damage so the incident is filed with description + (optional) photo. Args: { lend_id, damaged: boolean }. Returns: { ok, unit_status: 'available' | 'out-of-service' }. Required scope: headsets:lend.

ParametersJSON Schema
NameRequiredDescriptionDefault
damagedYestrue if there's visible damage or a hygiene incident; false for a clean return.
lend_idYes
Behavior5/5

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

Describes the state changes: closes lend, sets unit to 'available' or 'out-of-service' based on damaged flag. Explains required scope and return object. No contradictions with annotations.

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 sentences that are front-loaded with the primary action. No redundant information; every sentence adds value.

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 simple input schema (2 params, no output schema), the description covers purpose, usage, parameter behavior, and follow-up actions comprehensively.

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 meaning beyond schema for the damaged parameter (explains condition for each value). Schema coverage is 50%; description partially compensates by providing context, though lend_id lacks additional detail.

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 clearly states 'Closes an active lend' with a specific verb and resource. It distinguishes from siblings like ic_headsets_checkout and ic_headsets_admin_force_return by specifying the caller requirements and behavior.

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 states the caller must be the borrower or operator, explains the two cases based on damaged flag, and directs to follow-up tool ic_headsets_report_damage. Also mentions required scope, providing clear when-to-use and when-not-to-use guidance.

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

ic_headsets_sign_waiverSign the PICO lending waiverAInspect

Records a waiver for the calling Clerk user. 90-day TTL; re-sign required after that or after a waiver version bump. The ring field is server-derived from the user's live tier — agents do NOT supply it. Args: { name, email, phone?, telegram?, signature_typed, photo_consent? ('yes'|'no') }. Returns: { ok, record_id, expires_at }. Required scope: headsets:lend.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
emailYes
phoneNo
telegramNo
photo_consentNoOptional. Default 'unset'. §13 of the waiver.
signature_typedYesTyped-name electronic signature. Recorded verbatim alongside name/email; agents should pass the human's actual typed string, not a synthetic placeholder.
Behavior4/5

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

Annotations are minimal (no readOnly, etc.), so description carries the burden. It discloses the mutation behavior ('records'), TTL, version bump reset, and that the ring field is server-derived. No contradictions with 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?

Description is front-loaded with the main purpose and key behavioral info. It is reasonably concise, though the inline arg list is partially redundant with the schema. No wasted 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?

Given 6 param, no output schema, and sibling tools, description covers action, TTL, re-sign conditions, ring field clarification, required scope, and return structure. Lacks error conditions but is adequate.

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 low (33%), but description compensates by explaining signature_typed and photo_consent semantics. However, it redundantly lists all args and includes the confusing mention of a non-input 'ring' field. Overall adds some value beyond 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?

The description clearly states the verb 'records' and the resource 'waiver for the calling Clerk user'. It distinguishes from sibling tools like ic_headsets_check_waiver by specifying it creates a new waiver record.

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 explicit context: 90-day TTL, re-sign requirements, server-derived ring field (do not supply), and required scope 'headsets:lend'. No explicit alternative tool mentioned, but the guidelines are clear for when to use.

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

ic_healthCheap dependency health probe (KV / Blob / RAG / weather)A
Read-only
Inspect

Probe the MCP surface's four upstream dependencies without firing any real (rate-limited) tool: kv (the floor10 Redis), blob (the last-known-good mirror), rag (the research funnel behind ic_research_ask), and context_source (the Open-Meteo weather feed behind ic_context_get). Each probe reports status 'ok' | 'degraded' | 'down' + latency_ms (+ a note on anything non-ok); the response carries as_of (server ISO time). Probes are timeboxed at ~2s each and run in parallel, so the tool is always fast and NEVER throws. Available to any valid token — no extra scope. Args: none. Returns: { kv, blob, rag, context_source, as_of }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

The description adds significant behavioral traits beyond annotations: timeboxed at ~2s per probe, parallel execution, guarantees of no throwing, and available to any token. Annotations already indicate readOnlyHint=true and openWorldHint=false, but description enhances transparency. No contradiction.

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 succinct and well-structured: starts with the overall purpose, then details each dependency, behavior, and return shape. Every sentence provides essential information with no fluff.

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 parameterless tool with no output schema, the description is fully complete. It describes the response structure (status, latency, note for each probe, plus as_of) and the behavior (timeboxing, parallel, no throw). No missing 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?

There are zero parameters, and schema coverage is 100%. With no parameters, the baseline score is 4; the description does not need to add 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 clearly states it probes four specific upstream dependencies (kv, blob, rag, context_source) and explains what each is (e.g., 'the floor10 Redis'). This distinguishes it from all sibling tools, none of which are health probes.

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 explains that the tool is for probing health without firing real (rate-limited) tools, is always fast, and never throws. It implies usage context but does not explicitly state when not to use it or offer alternatives, though the tool is unique among siblings.

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

ic_leaderboard_connect_githubConnect your GitHub account to the commits leaderboardA
Idempotent
Inspect

Verify a GitHub Personal Access Token against api.github.com/user, then store the resulting username on your IC profile. The PAT is DISCARDED after verification — the IC server keeps only your GitHub username + id, then queries commit counts via a server-side PAT during the weekly cron. Use this when the human doesn't want to (or can't) do the Clerk OAuth browser dance. To ALSO count your PRIVATE commits in your total, enable GitHub's private-contributions toggle (web-only — there is no API for it): github.com/ → 'Contribution settings' button (above your contribution graph) → enable 'Private contributions' (docs: https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/publicizing-or-hiding-your-private-contributions-on-your-profile). IC reads only the COUNT of private contributions, never repo names or content, and has no write access to your GitHub. Args: { pat: string }. Returns: { ok, github: { login, id, name?, avatarUrl? }, next_steps: string[] }. Required scope: github:link.

ParametersJSON Schema
NameRequiredDescriptionDefault
patYesGitHub Personal Access Token (classic or fine-grained). Only used in-flight for verification; never persisted.
Behavior5/5

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

Discloses key behaviors beyond annotations: PAT is discarded after verification, only username+id stored, server-side PAT used for cron queries, no write access, private contributions count only (no repo names/content). Aligns with idempotentHint and adds security relevant details.

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?

Well-structured and concise despite length. Opens with core action, then security notes, usage context, private contributions instructions, and return format. Every sentence adds value without redundancy.

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?

Complete for a single-param tool with no output schema. Covers verification flow, data retention, privacy, alternative methods, and required user action for private commits. Returns fields and next_steps described.

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% with single param 'pat'. Description adds value beyond schema by specifying accepted token types (classic or fine-grained) and required scope 'github:link'. Could note that PAT is not persisted, already in schema description.

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 clearly states the tool's purpose: verify a GitHub PAT, store the resulting username on the IC profile, and discard the PAT. It distinguishes itself from sibling leaderboard tools (get_board, get_status, set_optin) by focusing on account linking.

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 states when to use ('when the human doesn't want to or can't do the Clerk OAuth browser dance'), explains what it does not handle (private commits require manual toggle), and mentions required scope. Provides clear context for selection.

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

ic_leaderboard_get_boardGet the full ranked commits leaderboardA
Read-only
Inspect

Returns the FULL ranked commits leaderboard the FT10 kiosk renders, so an agent never has to scrape the /floor10/commits HTML. Each member carries { rank (1-based), handle, name, commits, private? }. commits is the ranking total = public commit contributions PLUS private/restricted contributions folded in (the private count is present only for members who enabled GitHub's 'Include private contributions on my profile' toggle — a COUNT only, never repo names or content). Response includes stale + age_min (vs the ~5min refresh cron) so agents can warn humans if the snapshot is behind. Args: { limit?: number, default 200, max 200 }. Required scope: membership:read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many ranked members to return. Default 200, capped at 200.
Behavior5/5

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

Annotations already mark readOnlyHint: true, so the tool is safe. The description adds valuable behavioral details: that 'commits' includes private contributions only for users who enabled the toggle, that private is a count only without repo names, and that response includes 'stale' and 'age_min' to indicate snapshot freshness. No contradiction with 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 detailed yet efficient, with the core purpose upfront. Each sentence adds value (purpose, field details, staleness, parameter). It is not overly verbose given the complexity, but could be slightly tightened. A solid 4.

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 lack of an output schema, the description thoroughly covers the returned fields, including edge cases (private contributions only when toggled) and staleness indicators. It also specifies the required scope, which is critical for authorization. This makes the tool fully understandable without external docs.

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% for the single 'limit' parameter, with description in schema. The tool description adds context: default 200, max 200, and implies it caps results. This adds meaning beyond the schema's basic description, justifying a score slightly above baseline.

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 clearly states it returns the full ranked commits leaderboard that the FT10 kiosk renders. It specifies the exact data returned (rank, handle, name, commits, private) and contrasts with scraping HTML, making the purpose unambiguous. It also distinguishes itself from sibling leaderboard tools like ic_leaderboard_get_status and ic_leaderboard_connect_github by focusing on the board data.

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 explicitly says agents should use this to avoid scraping, providing clear context. While it does not explicitly state when NOT to use it or list alternatives, the sibling tools suggest different operations (e.g., connecting GitHub, setting opt-in). The required scope 'membership:read' further clarifies intended use. Lacks direct exclusions or alternative mentions, hence a 4.

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

ic_leaderboard_get_statusGet your current leaderboard stateA
Read-only
Inspect

Returns the calling user's opt-in flag, linked GitHub username (if any), how the link was made (oauth or agent_pat), and current rank on the rendered snapshot. this_week is absent if you aren't on the snapshot yet — the cron rebuilds weekly. Also returns private_counting: { status: 'active' | 'not_detected', private_count?, how_to_enable, github_settings_path } — when status is 'not_detected' you can proactively tell the human their private work isn't being counted yet and relay the 10-second fix (it may just mean no private work this week, so don't over-claim the toggle is off). Args: none. Required scope: membership:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations provide readOnlyHint: true. Description adds rich behavioral details: conditional field presence, nested object structure, interpretation of private_counting status, and required scope. No contradictions.

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?

Single, well-structured paragraph. Front-loads key return values, explains conditional logic and nested objects, all without redundancy.

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 no output schema, description fully explains return fields, conditional presence, and nested object semantics. Also includes required scope. Complete for a read-only status 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?

No parameters; baseline 4 per instructions. Description states 'Args: none' which is sufficient.

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?

Description clearly states it returns the calling user's opt-in flag, linked GitHub username, link method, and current rank. Distinguishes from sibling tools like ic_leaderboard_get_board (full board) and ic_leaderboard_set_optin (mutating).

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 guidance on interpreting private_counting status and when this_week is absent. However, no explicit when-not-to-use or alternatives comparison, though it's clear this is for the user's own status.

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

ic_leaderboard_set_optinOpt in or out of the commits leaderboardA
Idempotent
Inspect

Toggle publicMetadata.leaderboardOptIn. Opting IN requires a linked GitHub identity (either Clerk OAuth or our agent-PAT path). Opting OUT is unconditional. Args: { optIn: boolean }. Returns: { ok, optIn, github_username? }. Required scope: leaderboard:manage.

ParametersJSON Schema
NameRequiredDescriptionDefault
optInYestrue to appear on the kiosk leaderboard, false to hide.
Behavior4/5

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

Annotations already indicate idempotentHint=true and not destructive. Description adds important context: requires 'leaderboard:manage' scope, GitHub identity for opt-in, and return shape. No contradictions with annotations.

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 concise sentences with no wasted words. Front-loaded with action, then conditions, then args/returns/scope. Ideal length for a simple toggle 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?

Given simple boolean parameter, no output schema, and good annotations, the description covers all essential: action, prerequisites, required scope, return fields. Could mention that publicMetadata is updated, but not necessary for agent usage.

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?

Input schema covers 100% of parameter with clear description. Description repeats 'Args: { optIn: boolean }' and adds return info, but adds no new parameter-specific meaning beyond 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?

Description clearly states 'Toggle publicMetadata.leaderboardOptIn' and distinguishes opt-in vs opt-out conditions. Differentiates from sibling tools like ic_leaderboard_get_board (read) and ic_leaderboard_connect_github (connect GitHub).

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 states when to use: to opt in or out of leaderboard. Provides prerequisite for opt-in (linked GitHub identity) and that opt-out is unconditional. Lacks explicit when-not-to-use or alternative tools, but context is clear.

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

ic_membership_set_profileUpdate your public Immersive Commons profileA
Idempotent
Inspect

Edit the calling user's public-facing profile fields: first name, opt-in visibility, and company website. Company logo is auto-derived from the website at save time (Clearbit + favicon fallback). Re-posting overwrites. Opt-in members are listed publicly on /members and the kiosk; opted-out members are visible to directory:search callers only at their ring or below. Args: { first_name?: string, company_website?: string, public_visible?: boolean }. Returns: { ok, profile }. Required scope: membership:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
first_nameNoDisplay first name on cards. Up to 32 chars.
public_visibleNoOpt-in for the public /members + kiosk listing. Default false.
company_websiteNohttps://… of your company / project. Bare domains (foo.com) accepted.
Behavior5/5

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

Adds value beyond annotations: explains re-posting overwrites, auto-derivation of company logo from website, and visibility rules for opted-in vs opted-out members. No contradictions.

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 sentences, each providing distinct value: purpose, logo derivation, visibility, and args/returns/scope. No fluff.

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 return shape and required scope. With no output schema, it explains returns. Could mention error cases but not necessary given completeness for a profile update.

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 baseline 3. The description summarizes parameters but adds little new meaning beyond the schema's own 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 clearly states the tool edits the calling user's public-facing profile fields (first name, opt-in visibility, company website). It distinguishes from sibling tools like ic_membership_upload_photo.

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 details when to use (edit own profile) and includes visibility rules. It doesn't explicitly mention when not to use or alternatives, but the scope is clear.

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

ic_membership_upload_photoUpload your member photo (auto-cropped to 256² WebP)AInspect

Accept a base64-encoded image (PNG / JPEG / WebP / HEIC — anything sharp can decode), server-crop to a 256×256 WebP avatar, store on the calling member's profile. Subsequent calls overwrite. Max raw input 12MB. Args: { data_url?: 'data:image/png;base64,...', base64?: '...' } (one of). Returns: { ok, profile, base64_len }. Required scope: membership:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
base64NoBare base64 string (no data: prefix). Mutually exclusive with `data_url`.
data_urlNoStandard data URL form. Mutually exclusive with `base64`.
Behavior4/5

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

Beyond annotations (which indicate write but not destructive), the description adds that subsequent calls overwrite, maximum raw input is 12MB, and the image is cropped to 256x256 WebP. This provides useful context not captured by annotations.

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 compact and well-organized: it starts with the core action, then details constraints, input format, and returns. Every sentence adds necessary information without redundancy.

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?

Despite no output schema, the description specifies the return shape ({ ok, profile, base64_len }). It covers input format, constraints (size, required scope), and behavior (overwrite, cropping). All essential context for an upload tool is present.

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% with clear descriptions for both parameters. The description adds an example format and clarifies the mutual exclusivity, but the schema already mentions this. The added value is marginal, so 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?

The description clearly states the tool accepts a base64 image, crops to 256x256 WebP, and stores on the calling member's profile. It distinguishes itself from siblings like ic_membership_set_profile and floor10_upload_image by specifying the exact operation and resource.

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 description explains when to use (to upload a member photo), notes the required scope (membership:write), and mentions overwrite behavior. However, it does not explicitly contrast with alternative tools or state when not to use it.

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

ic_news_getGet high-velocity AI news (public)A
Read-only
Inspect

Returns newagg's velocity-ranked AI news — each item carries url + velocity + summary (plus dek, beat, date, publishedAt, image, focal). This is the RAW aggregator feed (the same firehose that drives the floor10 news kiosk), a DIFFERENT surface from ic_signal_* (which serves THE SIGNAL, the weekly editorial dispatch). The list is already ranked highest-velocity-first; input order is preserved. No auth required. Args: { limit?: number (1-25, default 20), min_velocity?: number (>=1, default 1 — keep only items corroborated by >= this many sources), q?: string (2-80 chars, case-insensitive substring over title + summary) }.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
limitNo
min_velocityNo
Behavior5/5

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

Annotations indicate readOnlyHint=true, and description adds details about ranking (highest-velocity-first), default values, and no auth. No contradictions.

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?

Concise single paragraph, front-loaded with main output. Each sentence adds value; no fluff.

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?

Despite no output schema, description covers output fields, parameters, authentication, and sibling differentiation. Complete for a read-only tool.

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

Parameters5/5

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

Schema has no descriptions (0% coverage), but description explains each parameter: limit range and default, min_velocity threshold, q substring match. Adds meaning beyond schema types.

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?

Clearly states it returns velocity-ranked AI news from newagg, with specific output fields. Differentiates from ic_signal_* tools, which serve editorial dispatch.

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 says it's the raw aggregator feed, distinguishes from ic_signal_* tools, and states no auth required. Provides parameter constraints and defaults.

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

ic_presentations_getGet one Immersive Commons presentation by session (public)A
Read-only
Inspect

Fetch a single presentation by its session number (optionally disambiguated by series). Session numbers are VCN-only; non-VCN talks (ClawCamp, standalone Talks) have no session_no — discover those via ic_presentations_list (filter series='ClawCamp'). No auth required. Returns the full ingest-friendly record. Args: { session_no: number, series?: string }. Returns: { scaffold, presentation: { session_no, series, title, date, format, public_url, deployed, speaker?, event?, summary?, content? } } where content is the talk's full curated llms.txt distillation (present for decks that ship one — read it instead of fetching the deck). On a miss, an error listing the available { series #session_no } entries. If session_no alone is ambiguous across series, the newest match wins — pass series to target one exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
seriesNoOptional series to disambiguate when the same session_no exists in multiple programs (e.g. a VCN #1 and a ClawCamp #1).
session_noYesThe session number within its series (from ic_presentations_list).
Behavior4/5

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

Annotations already declare readOnlyHint=true (safe read). The description adds useful behavioral context: no auth required, returns full record, includes content field as a distillation, error behavior with listing available entries, and ambiguity resolution (newest wins). This goes 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 information-dense but front-loaded with the main purpose. It includes details on return format, error handling, and related tool usage without being overly verbose. Could be slightly tighter but each sentence adds value.

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?

Despite no output schema, the description fully explains the return object fields, error behavior, and the nature of the content field. It covers all essential aspects for correct invocation and understanding.

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?

Input schema already has 100% coverage with descriptions for both parameters. The description adds semantic context: session_no is VCN-only, series disambiguates across programs, and explains ambiguity resolution. This enhances understanding beyond 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?

The description clearly states the tool fetches a single presentation by session number, with optional series disambiguation. It distinguishes from sibling ic_presentations_list, which is for listing and discovering non-VCN talks. The verb 'fetch' and resource 'single presentation' are specific.

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 states when to use this tool (VCN-only talks with session_no) and when to use ic_presentations_list (non-VCN talks like ClawCamp). Also mentions no auth required, which is helpful for selection.

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

ic_presentations_listList Immersive Commons community presentations (public)A
Read-only
Inspect

List the public archive of presentations given at Immersive Commons events, Vibe Coding Nights (VCN), ClawCamp, and other community talks — newest first, grouped by series. No auth required. NOT to be confused with ic_resources_list (that lists bookable rooms). Use ic_presentations_get for one VCN session's detail. Args: { series?: string (e.g. 'VCN'|'ClawCamp'|'Talk'), format?: 'deck'|'slides'|'video'|'doc'|'link', limit?: number (max 200, default 100) }. Returns: { count, total, series: string[], scaffold, by_series: Array<{ series, presentations: P[] }>, presentations: P[] (flat) } where P = { session_no (number, VCN-only; null for non-VCN talks), series, title, date, format, public_url, deployed, speaker?, event?, summary? }. scaffold:true means placeholder data (real manifest not yet synced). public_url is a direct view/download link, null if unpublished (local-only).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 100; max 200. Applied to the flat newest-first list before grouping.
formatNoOptional filter to one artifact kind.
seriesNoOptional filter to one series/program (case-insensitive), e.g. 'VCN', 'ClawCamp', 'Talk'. See the `series` array in a prior response for the live set.
Behavior5/5

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

Annotations indicate readOnlyHint=true, and the description confirms 'No auth required.' It goes beyond annotations by detailing the return structure, explaining the scaffold flag meaning placeholder data, and noting that public_url may be null for unpublished items. No contradictions with annotations.

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 richly packed but efficiently structured: purpose first, then differentiation, auth, parameters with examples, and expected return format. Every sentence adds unique value without repetition, making it both comprehensive and easy to parse.

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?

Despite having no output schema, the description fully documents the return shape and edge cases (scaffold, unpublished presentations). Combined with the thorough parameter and usage details, the tool is completely understandable without further references.

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

Parameters5/5

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

Schema coverage is 100%, and the description adds context beyond the schema: examples for series values ('VCN'|'ClawCamp'|'Talk'), default/max for limit and its application scope, and an explicit note about case-insensitive filtering. This fully compensates for any lack of deeper 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 clearly states 'List the public archive of presentations given at Immersive Commons events...', specifying the verb and resource. It explicitly differentiates from sibling tools ic_resources_list and ic_presentations_get, making the tool's unique purpose unmistakable.

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?

The description provides explicit guidance: when to use (listing public presentations), when not to (not for rooms, not for detail), and alternatives (ic_resources_list, ic_presentations_get). It also notes that no authentication is required and that results are grouped by series.

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

ic_prints_cancelCancel your print request (member)A
Destructive
Inspect

Cancel YOUR OWN print request while it's still pending or accepted (once it's printing, talk to the farm). Args: { request_id, note? }. Returns: { ok, request }. Required scope: prints:submit (ft-member+; submitter only).

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoWhy you're canceling (helps the farm).
request_idYesThe request id (pj_...) to cancel.
Behavior4/5

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

Adds context beyond annotations: cancellation only works for own requests, only during specific states. The destructiveHint annotation is already present, and the description reinforces it without contradiction. Missing info on reversibility or consequences, but adequate.

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 sentences, highly compact. Front-loads the core action and conditions. Every word adds value, including returns and scope. No redundancy.

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 simple cancellation tool with no output schema, the description covers all essential aspects: what it does, when to use, parameters, return shape, required scope, and caller restrictions. Complete and self-contained.

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 baseline is 3. Description repeats the schema descriptions verbatim, providing no additional meaning. It correctly lists the parameters but adds no new insight.

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 clearly states the verb 'Cancel', the resource 'print request', and specifies the scope 'YOUR OWN' and conditions 'pending or accepted'. It distinguishes itself from sibling tools like ic_prints_submit and ic_prints_update by focusing on cancellation.

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 tells when to use (while pending or accepted) and when not to use (once printing, talk to farm). Also specifies required scope and who can use (submitter only). Clear alternatives provided.

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

ic_prints_getGet one print request + history (member)A
Read-only
Inspect

Fetch one print request by id: status, model file / link, material / color / quantity, and the full status history with manager notes. If a freshly auto-sliced G-code file is ready, the response includes slice_gcode with a download_url (valid 7 days). You must be the submitter (or a farm manager). Args: { request_id }. Returns: { ok, request, slice_gcode? }. Required scope: prints:read (ft-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request id (pj_...) from ic_prints_submit.
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the description adds value by disclosing conditional behavior (slice_gcode download URL with 7-day validity) and auth requirements. No contradictions with annotations.

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 concise, front-loading the main purpose in the first sentence, then covering conditional response, auth, args, returns, and scope in a clear, efficient structure.

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

Completeness4/5

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

For a simple read tool with no output schema, the description explains the return shape and conditional field (slice_gcode). It could detail more about the request object fields, but overall it is fairly complete.

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

Parameters3/5

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

Schema coverage is 100% with a description for request_id. The description reiterates the arg but does not add new details beyond the schema's mention of format. 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?

The description clearly states the tool fetches one print request by id, listing specific fields (status, model file, material, etc.) and history. It distinguishes from siblings like ic_prints_list (list multiple) and ic_prints_submit (create).

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 specifies that the caller must be the submitter or a farm manager, providing a clear usage condition. It does not explicitly exclude scenarios but contextually implies when to use this instead of list or submit tools.

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

ic_prints_listList print requests (member; managers see the farm queue)A
Read-only
Inspect

List YOUR print requests, newest first. Farm managers can pass queue=true for the whole farm queue (open requests only by default; include_closed=true for full history). Args: { queue?, include_closed?, limit? }. Returns: { ok, count, requests }. Required scope: prints:read (ft-member+; queue view needs farm-manager identity).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20 for your list, 100 cap for the queue).
queueNoFarm managers only: list the whole farm queue instead of your own requests.
include_closedNoWith queue=true: include collected/rejected/canceled too.
Behavior4/5

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

Description adds context beyond readOnlyHint: 'newest first' ordering, default to open requests, and scope restrictions for queue. No contradiction with annotations. Provides clear behavioral insights (who sees what, filtering options).

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 sentences with an args summary and return type. Every sentence provides essential information. No redundant or filler content. Front-loaded with the main purpose.

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 no output schema and 3 optional params, the description covers key behaviors: ordering, scoping, defaults, and required permissions. Could mention error handling or pagination, but it's sufficient for correct tool invocation.

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

Parameters4/5

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

Schema has 100% description coverage. The description adds value by explaining queue usage (farm managers only), include_closed (full history), and limit defaults (20 vs 100 cap). This contextualizes the parameters beyond their schema definitions.

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 clearly states the verb 'List' and the resource 'your print requests', and distinguishes between personal list and farm manager queue view. The tool name and title further reinforce this. It differentiates from sibling print tools (submit, cancel, update) by specifying the listing function.

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 states when to use: for personal requests (default) and for farm queue (with queue=true). Mentions optional parameters for closed requests and limit. Covers scope requirements (ft-member+, farm-manager). Lacks explicit exclusions or when not to use, but typical scenarios are well covered.

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

ic_prints_submitRequest a 3D print from the IC print farm (member)AInspect

File a print request with the Floor 10 print farm. Attach the model ONE of three ways: filename + content_base64 (inline upload, .stl/.3mf/.obj/.step/.stp/.amf/.ply/.gcode/.bgcode/.zip, <=25MB), file_id (a vault file you can read), or link_url (https link to a hosted model, e.g. Printables) — link_url may also accompany either file path. A farm manager reviews every request before anything prints; you'll be notified as it moves (pending -> accepted -> printing -> ready -> collected, or rejected with a note). Args: { title, details? (dimensions / tolerances / purpose), material? (default PLA), color? (default any), quantity? (1..20, default 1), file_id?, filename?, content_base64?, content_type?, link_url? }. Returns: { ok, id, status: 'pending', open_ahead, file_id? }. Rate: 10 requests per caller per UTC day. Required scope: prints:submit (ft-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoColor wish. Default 'any'.
titleYesWhat you want printed, in a line.
detailsNoAnything the farm should know: dimensions, tolerances, infill, deadline, what it's for.
file_idNoA vault file id (f_...) you can read. Mutually exclusive with content_base64.
filenameNoModel filename for the inline upload (required with content_base64).
link_urlNohttps link to a hosted model (Printables / Thingiverse / ...).
materialNoMaterial wish, e.g. PLA / PETG / TPU / carbon-fiber. Default PLA.
quantityNoHow many copies (1..20). Default 1.
content_typeNoMIME type of the inline upload (default application/octet-stream).
content_base64NoModel bytes, base64-encoded. Max 25MB decoded. Mutually exclusive with file_id.
Behavior4/5

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

Annotations are neutral (no destructive or idempotent hints). The description adds behavioral context: that the request is reviewed by a farm manager, that it goes through a status flow (pending to collected or rejected), and that a rate limit applies. This supplements the annotations well.

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 paragraph but well-organized, starting with the main action, then attachment options, then workflow, then argument list, then return type. It is efficient but could benefit from bullet points for readability. Nevertheless, every sentence adds value.

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 no output schema, the description provides the return shape. It covers workflow, constraints (rate limit, scope, file size), attachment methods, and parameter defaults. For a tool with 10 parameters and no nested objects, this is fully complete.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaningful context beyond the schema: it explains the three attachment methods (filename+content_base64, file_id, link_url), notes mutual exclusivity, and mentions defaults for material, color, and quantity. It does not detail every parameter like content_type, but the added value is significant.

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?

Description clearly states the action ('File a print request') and the specific resource ('Floor 10 print farm'). The title adds scope '(member)'. It is distinct from sibling tools like ic_prints_cancel, ic_prints_get, ic_prints_list, and ic_prints_update.

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 describes the three ways to attach a model, the review process, and the rate limit of 10 requests per day. It does not explicitly state when not to use this tool or contrast with alternatives, but provides sufficient context for typical use.

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

ic_prints_updateAdvance a print request (farm manager)A
Idempotent
Inspect

Move a print request through the farm lifecycle: pending -> accepted -> printing -> ready -> collected, or reject (from pending/accepted/printing) with a note. Farm managers only — site operators plus the farm crew allowlist; the scope alone is not enough. The requester is notified on every move. Args: { request_id, status: 'accepted'|'printing'|'ready'|'collected'|'rejected', note? }. Returns: { ok, request }. Required scope: prints:manage (ic-member+, farm-manager identity re-checked).

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoManager note (required advice for rejections — say why).
statusYesTarget status. Must be a legal move from the current status.
request_idYesThe request id (pj_...) to move.
Behavior4/5

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

Beyond annotations (readOnlyHint false, idempotentHint true), the description adds details: requester is notified on every move, farm manager authorization details, and the allowed transitions. It does not elaborate on idempotency, but provides useful 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.

Conciseness5/5

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

The description is concise and front-loaded: it states the core purpose first, then details transitions, authorization, arguments, and return. Every sentence adds value with no redundancy.

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 mutation tool with no output schema, the description minimally covers return type { ok, request }. It includes authorization, lifecycle steps, and notification. It lacks error conditions or idempotency behavior, but overall adequate for the complexity.

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 3. The description adds meaning by stating status values and noting that note is for rejections ('required advice for rejections — say why'), which is extra guidance beyond the schema's 'Manager note' description.

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 clearly states the tool moves a print request through a specific lifecycle (pending -> accepted -> printing -> ready -> collected) or rejects it. It uses a specific verb 'Move' and distinguishes from sibling tools like ic_prints_cancel, ic_prints_submit by focusing on status transitions.

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 specifies that only farm managers (with site operator and crew allowlist) can use it, and requires the prints:manage scope. It implies use cases for advancing or rejecting, but does not explicitly contrast with ic_prints_cancel or other alternatives.

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

ic_request_tierRequest a tier (membership ring) upgradeBInspect

Submit a self-declared tier request for the calling user. An IC operator reviews and approves on /floor10/admin/members. Re-posting overwrites the prior pending request. Idempotent. Args: { tier: 'ft-member'|'ai-floor'|'ic-member', note?: string }. Returns: { ok, current_tier, requested_tier, submitted_at }. Required scope: membership:write.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional context for the operator (e.g. why this ring fits).
tierYesThe ring you want to claim. 'operator' is not self-requestable — it's operator-assigned only.
Behavior1/5

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

The description claims the tool is 'Idempotent', but the annotation idempotentHint is false, which is a direct contradiction. The description also discloses other behaviors (overwrite, scope requirement), but the contradiction overrides any positive aspects.

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 four sentences with front-loaded purpose, followed by process and parameter details. It is efficient with no filler, though slightly redundant with the title.

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?

The description covers mutation, overwrite behavior, required scope, and operator review. However, the idempotency contradiction undermines reliability, and no output schema details are given for return values beyond the stated fields.

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 description merely restates the enum values and optional note, adding minimal extra meaning beyond what the schema already provides. Baseline score of 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?

The description clearly states the verb 'Submit' and resource 'tier request' for the calling user, distinguishing it from sibling admin tools like ic_admin_approve_tier_request and ic_admin_deny_tier_request. The title also reinforces the purpose.

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

Usage Guidelines4/5

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

The description mentions that an operator reviews the request and that reposting overwrites prior requests, providing context for usage. However, it does not explicitly exclude scenarios or compare with alternative tools like ic_get_my_membership.

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

ic_request_workshop_keyRequest a 5-hour workshop Claude-Code key (public)AInspect

Walk-in flow: request a 5-hour Z.ai Claude-Code key tied to an upcoming IC event. The tool fetches the upcoming-events list SERVER-SIDE, so you only need the keys:request scope (not events:read_upcoming). Pass event_id = the event's Luma URL (call without it first to see the eligible list). An IC operator approves before the key mints. Args: { event_id?: string, note?: string }. Returns the eligible event list when event_id is omitted or unmatched; otherwise { ok, request_id, status:'pending' }. Required scope: keys:request.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional context for the operator reviewing the request.
event_idNoThe upcoming event you're attending (its Luma URL, e.g. https://luma.com/<slug>). Omit to list eligible events first.
Behavior5/5

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

Discloses server-side event fetch, approval requirement, return behavior (list vs. pending response), and scope requirement. Annotations are minimal and not contradicted; description fully compensates.

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?

Multiple sentences each add distinct value: flow, scope, parameter behavior, returns. No wasted words. Front-loaded with purpose.

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?

Complete for a request tool: explains both modes, approval step, return shapes, and scope. Minor gap on error handling or key delivery details, but not essential for invocation.

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

Parameters4/5

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

Schema covers both parameters with descriptions, but description adds crucial usage context (call without event_id to list, Luma URL format, optional note purpose). Adds meaningful value beyond 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?

Description clearly states the tool requests a 5-hour Z.ai Claude-Code key for an upcoming IC event, using specific verbs and distinguishing the walk-in flow from related tools like ic_request_zai_key or ic_admin_* tools.

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 explains when to omit event_id to list eligible events, that an operator approves, and required scope. Lacks explicit when-not-to-use or comparison to alternatives but still provides clear context.

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

ic_request_zai_keyRequest a weekly-token Z.ai Claude-Code key (member)AInspect

ic-member flow: request a weekly-token Z.ai Claude-Code key. Pick a multiplier (1/2/5/10/20× of the base weekly token allowance); an operator approves (and may adjust the multiplier). The minted key resets its token meter every Monday and never expires. Args: { multiplier?: 1|2|5|10|20 (default 1), note?: string }. Returns { ok, request_id, status:'pending', multiplier }. Required scope: keys:request.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional context for the operator (e.g. what you're building).
multiplierNoWeekly-token multiplier (× the base allowance). Default 1. The operator may approve a different multiplier.
Behavior4/5

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

Description adds key lifecycle details: 'resets its token meter every Monday and never expires', required scope 'keys:request', and return shape. Annotations already signal non-read-only and non-destructive; no contradictions.

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 sentences with no redundancy. Front-loaded with the core action and flow, then parameters, return, and scope. Each sentence contributes essential 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 two-parameter request tool with no output schema, the description covers purpose, parameter guidance, return format, lifecycle, and required scope. Lacks explicit mention of the approval step resulting in key creation, but 'operator approves' implies 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 100%, baseline 3. Description explains multiplier meaning ('× of the base weekly token allowance') and notes operator adjustment, adding value beyond schema descriptions.

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

Purpose5/5

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

The description specifies 'request a weekly-token Z.ai Claude-Code key', identifies the flow as 'ic-member flow', and details the multiplier options and operator approval. It clearly distinguishes from sibling tools like ic_request_workshop_key or ic_get_my_zai_key.

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?

While it mentions 'ic-member flow' implying when to use, it does not explicitly state when not to use or compare with alternatives like ic_get_my_zai_key for existing keys. The context is clear but lacks direct guidance.

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

ic_research_askQuery the Immersive Commons research RAG corpusA
Read-only
Inspect

Query the Immersive Commons research RAG corpus (papers + ingested YouTube). Returns top-k chunks with similarity scores and source links. The query text is forwarded to a server-side RAG proxy (supercommons2 via Tailnet Funnel) and NEVER logged on the IC side — privacy contract. Use this for literature lookups, finding related work, surfacing citations the floor has already ingested. Args: { question: string (<=500 chars), k?: number (1-50, default 10), sources?: ('paper'|'book')[] (default ['paper']) }. Returns the upstream RAG response shape — typically { results: [{ paper_id, title, similarity, snippet, link }, ...] }. Required scope: research:query.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoNumber of chunks to return. Default 10, max 50.
sourcesNoWhich corpora to query. Default ['paper']. Pass ['paper','book'] to span both.
questionYesNatural-language question or keyword query. The proxy embeds and runs top-k retrieval against the corpus.
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), the description adds critical behavioral context: query text is never logged on the IC side (privacy contract), it goes through a server-side RAG proxy, and it mentions the return shape. No contradictions with annotations.

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 four sentences, front-loaded with the core purpose, followed by privacy, usage guidance, and parameter details. No redundant or wasted words; every sentence adds essential 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?

Given the tool has 3 parameters, high schema coverage, and no output schema, the description fully covers purpose, privacy, parameter details, and return shape. It is complete for an agent to understand how and when to invoke the tool.

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

Parameters5/5

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

With 100% schema coverage, the description still adds value by explaining the question field's constraints (<=500 chars, natural language), k defaults (10, max 50), sources default (['paper']) and option to add 'book'. It also describes the return structure, which is absent in 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?

The description clearly states the verb 'Query' and the resource 'Immersive Commons research RAG corpus', and specifies it returns 'top-k chunks with similarity scores and source links'. It distinguishes from siblings by mentioning papers and YouTube ingestion, which is unique among the listed tools.

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 provides explicit use cases: 'literature lookups, finding related work, surfacing citations the floor has already ingested'. It does not explicitly state when not to use or alternative tools, but the context is clear enough for effective selection.

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

ic_research_submitSubmit a URL for ingest into the IC research RAG corpusAInspect

Queue a URL (paper, blog post, YouTube video) for operator-reviewed ingest into the supercommons2 RAG corpus. The submission is queued in KV with status 'pending' — an IC operator triages and the sc2-side ingest worker picks up approved entries. Returns immediately with the submission id; this is queue + ack, NOT live ingest. Subsequent calls with the same URL create a new queue entry (no dedupe at v1; operator dedupes on triage). Args: { url: string, note?: string }. Returns: { ok, id, status: 'pending' }. Required scope: research:submit.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic URL of the resource to ingest. http(s) only. ArXiv, Semantic Scholar, YouTube, blog post, etc.
noteNoOptional context for the operator (e.g. why this is worth ingesting).
Behavior4/5

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

The description adds significant behavioral context beyond annotations: immediate return with submission id, status 'pending', operator triage, no dedupe. Annotations are generic, so description carries the burden well.

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 sentences, front-loaded with purpose, every sentence provides essential info with no fluff.

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?

Even without output schema, the description covers return shape {ok, id, status}, required scope, and the queueing workflow. Complete for the tool's complexity.

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%, baseline 3. The description adds value by explaining the note parameter's purpose (optional context for operator) and listing URL types, going beyond 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?

The description clearly states it queues a URL for operator-reviewed ingest into a RAG corpus, with specific examples (paper, blog post, YouTube video). It distinguishes from siblings like ic_research_ask.

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 explains when to use (submit URLs) and provides important caveats: it's queue+ack, not live ingest, and no dedupe at v1. While it doesn't explicitly list alternatives, the use case is specific enough.

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

ic_resources_bookQueue a booking for an IC resourceAInspect

Queue a booking envelope for life-side processing — Ray's life repo (kernel.frontier_tower for rooms, internal queue for printers) reconciles against the authoritative booking system. Returns 'queued', not 'confirmed.' Rate-limited 10/token/UTC day; 30-day dedupe on (resource_id, user, start_iso). Args: { resource_id: string, start_iso: string, end_iso: string, email: string, purpose?: string }. The agent MUST supply email explicitly — there's no session-derived default on the MCP path (trust boundary, same as ic_events_rsvp). Required scope: resources:book.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail Luma / Frontier Tower should attach to the booking. Required for agent callers.
end_isoYesISO-8601 end timestamp.
purposeNoWhat the booking is for. Optional.
start_isoYesISO-8601 start timestamp.
resource_idYesResource id from ic_resources_list.
Behavior5/5

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

Disclosures beyond annotations include: returns 'queued' not 'confirmed', rate limits, dedupe window, explicit email requirement due to trust boundary, and required scope. Annotations are all false, so description adds significant 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?

The description is relatively concise with 5-6 sentences, covering essential aspects without unnecessary repetition. However, it could be slightly more streamlined.

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-parameter tool with no output schema, the description covers purpose, return behavior, rate limits, dedupe, required arguments, scope, and backend systems. This is comprehensive and leaves few ambiguities.

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?

Input schema covers 100% of parameters with descriptions. Description adds value by explaining why email must be explicit (trust boundary) and noting that resource_id comes from ic_resources_list, which aids correct usage.

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 clearly states the action ('Queue a booking envelope') and the resource ('for life-side processing'), specifying that it covers rooms and printers. This distinguishes it from other tools without needing explicit sibling names.

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 clear context: booking is queued, not confirmed; rate-limited 10/token/UTC day; 30-day dedupe; required scope. However, it does not explicitly state when not to use this tool or list alternatives.

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

ic_resources_listList bookable resources at the floorA
Read-only
Inspect

Returns the IC resources roster (3D printers, conference rooms, etc.) with status flags and bookability. Same data the public kiosk renders, plus a staleness gauge. Args: none. Required scope: resources:read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Description adds specific behavioral details (staleness gauge) beyond annotations; no contradiction.

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 concise sentences; front-loaded key info.

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 return data for a simple list tool with no output schema; sufficient.

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?

No parameters; baseline 4 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?

Clearly states it returns the IC resources roster with status and bookability, and distinguishes from booking sibling tools.

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 context (same as public kiosk plus staleness gauge) and required scope, but no explicit when-not-to-use or alternatives.

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

ic_rooms_add_channelAdd a channel to a live agent-collaboration roomA
Read-only
Inspect

Add one or more NEW channels to a LIVE room at runtime — the channel analog of runtime role-add. Only a SEATED member of the room may add (you can't reshape a room you're not in). Channels are lightweight tags on the room's single committed log: after adding, ic_rooms_send / ic_rooms_read with channel: work IMMEDIATELY. (The richer Cotal native mesh needs a fresh room.py --native attach to mint a cred that includes the new channel — noted in the response's remint_hint; the MCP coordination surface has no such step.) Args: { room_id: string, channel?: string (single add, e.g. 'design'), channels?: string[] (batch add, e.g. ['design','research']) — pass one of the two }. Returns: { ok, reason ('added' | 'already_present'), channel, channels (the room's full channel set after the add), remint_hint } for a single add, or { ok, results, channels } for a batch. Failure reasons: not_a_participant / bad_channel / too_many_channels / not_live. Required scope: rooms:join (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoA single channel name to add, e.g. 'design'. Use this OR channels.
room_idYesFrom ic_rooms_list (must be a room you're seated in).
channelsNoA batch of channel names to add, e.g. ['design','research']. Use this OR channel.
Behavior1/5

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

Description describes a write operation (adds channels), but annotations set readOnlyHint=true, creating a direct contradiction that misleads the agent about the tool's side effects.

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?

Concise paragraph front-loaded with purpose and key constraint, no wasted words, well-structured with clear separation of details.

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?

Covers return values, failure reasons, and scope despite no output schema. However, the contradiction with annotations undermines completeness; the agent cannot trust the description's behavioral claims.

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%, but description adds value by explaining the distinction between channel and channels, noting they are lightweight tags, and describing return fields. Provides examples beyond 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?

The description clearly states the verb (add), resource (channels to a live room), and distinguishes it as the channel analog of runtime role-add, differentiating from sibling tools like ic_rooms_read and ic_rooms_send.

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 states prerequisite ('Only a SEATED member'), explains single vs batch usage via channel/channels, lists failure reasons, and required scope. Lacks direct comparison to alternative sibling tools but provides clear context.

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

ic_rooms_createOpen a new agent-collaboration roomAInspect

Open a LIVE multi-agent room and get its room_id back — the self-service create path (no SSH, no repo). You declare the seats (roles) and who holds them; YOU must hold one (you can't open a room you're not in). Seats assigned to other members are INVITATIONS — a seat map never acts on anyone's behalf; each member still uses their own token to join/post. The room is ready for turns immediately. Args: { roles: string[] (1+ seat names, e.g. ['coder','tester']), role_assignments: Record<role, member_id> (must include your own member_id on some seat), turn_timeout_s?: number (default 7200), channels?: string[] (extra channels beyond the implicit 'general', e.g. ['judges','website'] — one committed log, channel is a tag on each turn) }. Returns: { ok, room_id, roles, role_assignments, created_by, channels }. Other members find it via ic_rooms_list and take an open seat via ic_rooms_join. Required scope: rooms:join (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
rolesYesSeat names to declare, e.g. ['coder','tester'].
channelsNoExtra channels beyond 'general' (multi-channel rooms), e.g. ['judges','website'].
turn_timeout_sNoPer-awaited-turn bound (default 7200).
role_assignmentsYesrole -> member_id. MUST include your own member_id on one seat.
Behavior5/5

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

The description adds behavioral context beyond annotations: room is immediately ready, seat assignments are invitations only, members use their own tokens. No contradiction with annotations (readOnlyHint=false, destructiveHint=false).

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

Conciseness4/5

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

The description is thorough but somewhat lengthy. However, each sentence adds value: purpose, constraints, parameters, returns, follow-up. Well-organized with clear sections.

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?

Despite no output schema, the description lists return fields (ok, room_id, etc.) and required scope. It covers parameter defaults, constraints, and how other members interact. Adequate for a create tool with 4 parameters.

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% but description adds critical semantics: roles as seat names, role_assignments must include caller's own member_id, default turn_timeout_s=7200, channels extra beyond 'general'. This goes beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the tool opens a LIVE multi-agent room and returns a room_id, distinguishing it from sibling tools like ic_rooms_list and ic_rooms_join. The verb 'Open' combined with 'self-service create path' precisely defines the action.

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?

The description explicitly states when to use this tool (self-service create path) and provides alternatives: 'Other members find it via ic_rooms_list and take an open seat via ic_rooms_join'. It also warns that the caller must hold a seat themselves, preventing misuse.

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

ic_rooms_joinClaim a seat in an agent-collaboration roomAInspect

Claim a DECLARED-but-open seat in a live room with your own identity. You must acknowledge the room's plaintext-mesh disclosure (ack_disclosure:true) — #work messages and DMs are plaintext to the IC operator and who-talked-to-whom is observable. Set create:true only to add a brand-new role not yet declared (default false = claim an existing open seat). Args: { room_id: string, role: string (from ic_rooms_list open_seats), ack_disclosure: boolean, create?: boolean }. Returns: { ok, role, member_id, role_assignments } on success; { ok:false, reason } on unknown_role / role_taken / not_live / disclosure_required. Then coordinate with ic_rooms_send / ic_rooms_read. Required scope: rooms:join (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesAn open seat name from ic_rooms_list.
createNoAdd a NEW role not yet declared (default false = claim an existing open seat).
room_idYesFrom ic_rooms_list.
ack_disclosureYesAcknowledge the plaintext-mesh disclosure. Must be true to join.
Behavior5/5

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

Discloses that messages are plaintext to operator and who-talked-to-whom is observable, beyond annotations. Identifies required scope rooms:join. No contradiction with annotations.

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?

Concise, front-loaded with main action, then details, returns, coordination, and scope. Every sentence adds value. No redundancy.

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?

Covers all 4 params, required/optional, return format (partial), error cases, and integration with sibling tools. No output schema, but description compensates well.

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%, but description adds context: ack_disclosure acknowledges plaintext-mesh disclosure, create defaults false, role comes from ic_rooms_list open_seats. Also explains return values with success/error shapes.

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?

Title and description clearly state the tool claims a seat in a room. It specifies 'declared-but-open seat', distinguishes from siblings like ic_rooms_send and ic_rooms_read by mentioning coordination with them.

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

Usage Guidelines4/5

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

Explicitly says when to set create:true vs false, mentions required ack_disclosure, and suggests coordinating with ic_rooms_send/ic_rooms_read. Does not explicitly state when not to use this tool, but context is clear.

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

ic_rooms_listDiscover live agent-collaboration roomsA
Read-only
Inspect

List the live agent-rooms you can see, with each room's seats, which are OPEN (unassigned, claimable), who's in, and whether you're already a member. Use it to find a session to join. Args: none. Returns: { ok, rooms: Array<{ room_id, roles, open_seats, members, mine, created_at, channels }> } (newest first; channels defaults to ['general'] for a single-channel room). Take an open seat with ic_rooms_join. Required scope: rooms:join (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Description adds significant context beyond annotations: specifies return fields, default channel behavior, sorting (newest first), and required scope (rooms:join). No contradiction with readOnlyHint=true.

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 single paragraph covering purpose, return shape, defaults, next steps, and scope. Slightly dense but no wasted words. Could be more structured.

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 no parameters and no output schema, the description fully informs: what's returned (array of room objects with fields), sorting, defaults, and required scope. Complete for a simple listing tool.

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

Parameters5/5

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

States 'Args: none' which matches the empty input schema. No parameters to describe, so minimal value needed; baseline 4 with zero params.

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?

Clearly states the verb 'list', the resource 'live agent-rooms', and the purpose 'find a session to join'. Distinguishes from sibling tools like ic_rooms_join by specifying it as a next step.

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 says 'Use it to find a session to join' and advises to take an open seat with ic_rooms_join. Lacks explicit when-not-to-use statements, but context is clear.

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

ic_rooms_readRead the turn log of an agent-collaboration roomA
Read-only
Inspect

Read a room's committed turns from a cursor — the durable catch-up read, so a late joiner (or any poll) gets the full prior history. Args: { room_id: string, since?: number (stream seq to read from, default 0 = all), channel?: string (filter to one channel tag; next_since still tracks the room's GLOBAL cursor, not a per-channel one) }. Returns: { ok, room_id, state, turns: Array<{ role, member_id, content, at, seq, channel }>, next_since } — pass next_since back to page forward. Readable on live AND torn-down rooms (the log outlives the mesh). Required scope: rooms:join (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoStream seq to read from (default 0 = full history).
channelNoFilter to one multi-channel room's channel tag.
room_idYes
Behavior5/5

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

Adds details beyond readOnlyHint: durable read, global cursor behavior on channel filter, readability on torn-down rooms, required scope. No contradiction.

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?

Concise paragraph with front-loaded purpose, no fluff.

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?

Provides return type and pagination explanation despite no output schema, plus scope requirement. Complete for a read 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?

Explains since default and channel's effect on cursor, adding meaning beyond schema descriptions. Room_id is not described but is self-explanatory.

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?

Clearly states it reads a room's committed turns for catch-up, differentiating from siblings like ic_rooms_send or ic_rooms_list.

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?

Implies usage for late joiners or polling history, mentions it works on torn-down rooms. No explicit when-not-to-use but sufficient context.

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

ic_rooms_sendPost a turn to an agent-collaboration roomAInspect

Commit one turn to a room's durable coordination log, as one of YOUR seats. This is the trust-attributed record every member reads (the broker binds your verified member_id to the turn). Args: { room_id: string, role: string (a seat you hold), content: string, channel?: string (default 'general'; must be one of the room's declared channels) }. Returns: { ok, seq } on 202; { ok:false, reason } on wrong_role / role_unassigned (join first) / unknown_channel / rate_limited. Read peers' turns with ic_rooms_read. Required scope: rooms:join (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesA seat YOU hold in this room.
channelNoMulti-channel room tag (default 'general').
contentYesThe turn text to commit.
room_idYes
Behavior4/5

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

Annotations indicate a write operation (readOnlyHint=false, etc.). The description adds behavioral context: it's a trust-attributed record, broker binds member_id, returns specific status codes, and mentions rate limiting. No contradiction with annotations. Provides good insight beyond basic schema.

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 three sentences: action, parameter explanations, and return info. It is front-loaded with the core purpose and includes essential details without unnecessary words. 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?

With 4 parameters, 3 required, no output schema, the description covers action, inputs, return format, error cases, authentication needs, and a sibling reference. It is mostly complete; minor omission like content format (plain text vs. markdown) is non-critical.

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 75% (3 of 4 params described). The description adds meaning for role ('a seat you hold'), channel (default 'general', must be declared), and error reasons. It does not describe room_id beyond the schema. This adds marginal value, so 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?

The title 'Post a turn to an agent-collaboration room' and description 'Commit one turn to a room's durable coordination log, as one of YOUR seats' clearly specify the action and resource. It distinguishes from siblings like ic_rooms_read (reading) and ic_rooms_create (creating).

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 includes when to use (commit a turn), mentions prerequisite scopes ('rooms:join'), and lists error conditions (wrong_role, role_unassigned, etc.) that imply when not to use. It also suggests an alternative (ic_rooms_read). Lacks explicit 'use this when...' phrasing but still provides solid guidance.

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

ic_signal_get_issueGet a full SIGNAL issue (public)A
Read-only
Inspect

Fetch one issue by slug. Returns the full tree: beats[] (code/label/kicker/storyIds), stories[] (headline/dek/body/image/feature/meta), datespan, classification, published. No auth required. Args: { slug: string (e.g. "issue-05") }.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. Description adds valuable behavioral info: 'No auth required' and explains the return structure (full tree). Does not contradict annotations.

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 sentences with no filler. First sentence defines purpose, second lists return fields, third notes auth and parameter format. Efficiently front-loaded.

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 simple read tool with one parameter and no output schema, the description covers purpose, parameter format, authorization, and return structure. No obvious gaps given the tool's low complexity.

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 0%, so the description carries the full burden. It provides an example argument ('issue-05') and clarifies the parameter's role (slug). Adds meaning beyond the schema's type and constraints.

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?

Description clearly states 'Fetch one issue by slug' with specific verb and resource. It lists the return structure (beats, stories, datespan, etc.) and distinguishes from siblings like ic_signal_get_story and ic_signal_list_issues.

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?

Description implies usage context (fetch one issue), but does not explicitly state when to use vs alternatives or when not to use. No exclusions or alternative tool references are provided.

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

ic_signal_get_latestGet the latest SIGNAL issue summary (public)A
Read-only
Inspect

Convenience tool — returns the most-recent issue summary (same shape as one element of ic_signal_list_issues.issues[]). No auth required. Args: none.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=false. The description adds that it returns the latest issue summary with the same shape as a list element. It does not disclose additional behavioral traits like caching or rate limits, but given the annotations, a score of 3 is appropriate.

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 extremely concise with two sentences that are front-loaded and contain no redundant information. Every word serves a purpose.

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 has no parameters and no output schema, the description fully conveys its purpose and output format. It is complete for its simplicity.

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 no parameters, and the description explicitly states 'Args: none'. Schema coverage is 100% trivially. The description adds no extra meaning beyond what the schema already provides, so a baseline of 4 is correct.

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 clearly states the tool returns the most-recent issue summary and matches the shape of ic_signal_list_issues.issues[]. It distinguishes itself from sibling tools like ic_signal_list_issues and ic_signal_get_issue.

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 mentions 'No auth required' and 'Args: none', providing clear context for when to use it. However, it does not explicitly state when not to use it or suggest alternatives, but the context is sufficient for a simple tool.

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

ic_signal_get_storyGet a single SIGNAL story (public)A
Read-only
Inspect

Fetch one story by (issue slug, story id). The story id is the kebab-case slug stored on each story (e.g. "grok-build", "shai-hulud-2"). Returns the story tree including body paragraphs, feature card, image, and source citations. No auth required. Args: { slug: string, story_id: string }.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
story_idYes
Behavior4/5

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

Annotations already indicate read-only (readOnlyHint=true). The description adds context: no auth required and the return structure (body paragraphs, feature card, image, source citations). No destructive behavior implied, and no contradictions.

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?

Description is brief (4 sentences) and front-loaded with the main action. Could be slightly tighter, but no extraneous 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 simple get operation with two params and no output schema, the description covers purpose, return content, and auth. Lacks details on errors or pagination, but those are not critical here.

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 has 0% description coverage. Description provides an example and format for story_id ('kebab-case slug') but does not explain the slug parameter beyond 'issue slug'. Minimal added value beyond schema constraints.

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 clearly states the action (fetch/get), the resource (a single story), and the identification method (issue slug + story id). It distinguishes from siblings like ic_signal_get_issue and ic_signal_search by specifying it retrieves exactly one story by two keys.

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 notes 'No auth required', which is a usage precondition. It implicitly tells when to use this tool (when you have the exact slug and story_id) but lacks explicit negative guidance or alternatives.

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

ic_signal_list_issuesList THE SIGNAL issues (public)A
Read-only
Inspect

List issue summaries for THE SIGNAL, Immersive Commons' weekly AI intelligence dispatch. Newest first. No auth required. Args: { limit?: number (max 50, default 10) }. Returns: { issues: Array<{ slug, number, label, classification, title, dek, datespan, published, story_count, beat_count, html_url, markdown_url }> }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), it adds ordering behavior, authentication requirements, and the exact return structure, giving full insight into what the tool does.

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?

Efficient two-sentence description plus concise args/returns block, no unnecessary words, and key information is front-loaded.

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?

Covers purpose, ordering, auth, parameters, and return types. Without an output schema, the explicit return structure ensures the agent knows exactly what to expect.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by specifying the parameter's optionality, default value, and min/max constraints, adding meaning beyond the raw 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?

The description clearly states the verb 'list' and the resource 'issue summaries for THE SIGNAL', distinguishing it from sibling tools that get a specific issue, latest, or search.

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 clear context (newest first, no auth required) but does not explicitly mention when to use this tool versus alternatives like ic_signal_get_issue or ic_signal_search.

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

ic_startup_listList seeded startups + which are claimable (member)A
Read-only
Inspect

List every seeded startup with { slug, name, tagline, bound }, name-sorted. Use this to DISCOVER a valid slug for ic_startup_request_ownership: bound: false is UNBOUND; bound: true already has at least one owner. Multi-owner: a startup can have several co-founders, so you CAN still file a claim against a bound: true slug if you are a DIFFERENT co-founder (it queues for additive operator approval) — only a slug you ALREADY own rejects. Mirrors GET /api/startups and the web member's claim dropdown. Required scope: startup:edit (ic-member+). No signature required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations indicate readOnlyHint=true, which aligns with the read-only nature. The description adds behavioral details: scope requirement (startup:edit), no signature needed, and interpretation of bound field (bound: false = unbound, bound: true = at least one owner, still claimable by different co-founders). This exceeds what annotations provide.

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 well-structured and front-loaded with the key purpose. It includes multiple pieces of useful information without unnecessary repetition. Slightly verbose but acceptable given the complexity.

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 simple list tool with no parameters and no output schema, the description is remarkably complete. It covers return fields, sort order, usage context, scope requirements, and even caveats about multi-owner claims. No obvious gaps.

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 baseline is 4. The description adds value by explaining the output fields (slug, name, tagline, bound) and their meanings, which helps an agent understand what to expect.

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 clearly states it lists seeded startups with specific fields (slug, name, tagline, bound) and that it is name-sorted. It explicitly connects to the sibling tool ic_startup_request_ownership for slug discovery, distinguishing its purpose from other tools.

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 explains when to use this tool (to discover valid slugs for ownership requests) and provides context on bound states and multi-owner scenarios. It does not explicitly state when not to use it, but the context is clear enough.

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

ic_startup_post_newsPost one news item to your startup's page (owner or operator)AInspect

Append a SINGLE STRUCTURED PLAIN TEXT news item (title <=100, optional link, optional source) to your startup's profile. Content auto-publishes (no review queue). NO HTML — the title is plain-text defanged, the link is URL-validated. Newest-first; the list is capped at 8 items (the oldest is dropped to make room). Only the BOUND FOUNDER (clerk_user_id ownership) or an operator (admin:ownership_review) may post. AGENT TOKENS MUST BE SIGNATURE-ENFORCED. Returns { ok, item, news_count }. Required scope: startup:edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional link (normalized).
slugYesImmutable startup slug. Must already exist.
titleYesNews headline — STRUCTURED PLAIN TEXT (<=100 chars). No HTML.
sourceNoOptional source label.
Behavior5/5

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

The description provides extensive behavioral context beyond annotations: auto-publishing, no HTML enforcement, URL validation, newest-first ordering, cap of 8 items with oldest dropped, and return structure. This gives the agent a thorough understanding of side effects and invariants.

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 well-structured and front-loaded with the core action. Each sentence adds value, covering constraints, behavior, authorization, and return format. It is slightly long but appropriate for the information density.

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 parameter count, lack of output schema, and sparse annotations, the description provides comprehensive context including authorization, behavior, constraints, and return value. It addresses all necessary aspects 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 coverage is 100% with detailed descriptions in the schema. The description reinforces the plain-text constraint and optional nature, but adds minimal new meaning beyond what the schema already provides. Hence baseline score.

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 clearly states the action (append a news item), the resource (startup's profile), and specific constraints (title <=100 chars, optional link and source). It distinguishes this tool from sibling tools by focusing on news posting, which is unique among the listed 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?

The description specifies who can use the tool (bound founder or operator), required scope (startup:edit), and token handling (signature-enforced). It implicitly tells when to use (to post news) but does not explicitly mention alternatives or when not to use. Overall clear context.

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

ic_startup_request_ownershipRequest to be bound as founder of a startup (member)AInspect

File a PENDING request to be bound as the FOUNDER of a seeded startup slug. This does NOT bind or approve anything — it enqueues an ownership request into the operator review queue at /floor10/admin/ownership; an operator approves it (ic_admin_approve_ownership) and only then is the founder bound (granting edit + news-post rights). Mirrors POST /api/startups/[slug]/claim exactly. You MUST accept content responsibility (agreement_accepted: true) — posted news auto-publishes with no per-post review, you are responsible for it. Discover valid slugs via ic_startup_list (entries with bound: false are claimable). The slug must already exist (seeded from data/startups.ts) AND be unbound — claiming an already-bound slug is rejected with error: "already_bound" (file feedback at /feedback for an operator rebind instead). Re-requesting the same slug coalesces (overwrites your prior pending request). Returns { ok, request_id, slug, startup_name } or a clean rejection (unknown slug / already_bound). Required scope: startup:edit (ic-member+). A signature is NOT required (unlike the founder write tools).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesImmutable startup slug to claim (seeded from data/startups.ts). Must already exist.
agreement_acceptedNoContent-responsibility acceptance. MUST be true — you accept responsibility for the structured-plain-text content you will post (news auto-publishes with no review). A request without it is rejected.
Behavior5/5

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

Beyond annotations, the description explains non-obvious behaviors: it does not bind or approve, it enqueues a request for operator review, re-requesting coalesces, required scope, signature not required, and content responsibility implications for auto-published news. This adds significant value 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.

Conciseness5/5

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

The description is thorough yet concise, with each sentence providing essential information. It is well-structured: purpose first, then behavior, prerequisites, parameter details, return values, and scope. No unnecessary words.

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 no output schema, the description provides complete information: purpose, behavior, error cases, return values, required scope, and references to sibling tools. It covers all aspects an agent needs to correctly invoke the tool.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaning: slug must exist and be unbound, agreement_accepted must be true. It also explains the slug's origin and that it is immutable, and that a request without agreement_accepted is rejected. This enhances schema information.

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 clearly states the tool's purpose: to file a pending ownership request for a startup. It uses specific verbs ('File a PENDING request to be bound as the FOUNDER') and resource ('seeded startup slug'), and distinguishes from sibling tools like ic_admin_approve_ownership and ic_startup_list.

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?

The description explicitly states when to use the tool (to request ownership of an unbound startup slug) and when not to (if slug is already bound, and directs to file feedback for rebind). It also provides prerequisites (use ic_startup_list to discover claimable slugs) and alternatives (ic_admin_approve_ownership for approval).

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

ic_startup_update_profileUpdate your startup's public page (owner or operator)A
Idempotent
Inspect

Read-modify-write your startup's public profile: name (<=100), tagline (<=160), website (URL — refreshes the favicon fallback), public_visible, and/or the full news list (<=8 STRUCTURED PLAIN TEXT items, newest-first; replaces the list). NO HTML anywhere — text is plain-text defanged, not HTML-sanitized. The slug is immutable + must already exist (seeded from data/startups.ts). Only the BOUND FOUNDER (clerk_user_id ownership) may write, or an operator (admin:ownership_review) override. AGENT TOKENS MUST BE SIGNATURE-ENFORCED (a bearer-only token is rejected). Omitted fields are left unchanged. Returns { ok, profile }. Required scope: startup:edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name (<=100 chars, plain text).
newsNoReplacement news list, newest-first (<=8 items). Replaces the existing list. Omit to leave news unchanged.
slugYesImmutable startup slug (seeded from data/startups.ts). Must already exist.
taglineNoOne-line tagline (<=160 chars, plain text). Empty string clears it.
websiteNoHomepage URL (normalized; refreshes the favicon fallback). Empty string clears it.
public_visibleNoWhether the startup is listed on the public /startups surface.
Behavior5/5

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

Adds extensive context beyond annotations: 'read-modify-write' pattern, plain-text defanging (not sanitized), favicon refresh on website change, news list replacement, auth requirements. Annotations indicate idempotentHint=true and destructiveHint=false, and description aligns with these (overwrite is idempotent patch, not destructive). No 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?

Single dense paragraph, front-loaded with main purpose, then constraints. Every sentence adds information, though could be more readable with bullet points. Still concise for the amount of detail.

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 auth, input constraints, side effects, and return format ({ ok, profile }). Lacks detailed response shape, but minimal return info is acceptable. Given complexity (6 params, nested news array), description is thorough.

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 has 100% coverage, so baseline is 3. Description adds value: clarifies 'empty string clears it' for tagline/website, 'Omit to leave news unchanged', 'auto-stamped if absent' for id and posted_at, and formatting constraints (plain text, structured).

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 clearly states the tool updates a startup's public profile, listing specific fields (name, tagline, website, public_visible, news list). It distinguishes itself from siblings like ic_startup_list (list startups) and ic_startup_post_news (post news) by focusing on full profile update.

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 explicit guidelines: no HTML, slug immutability, founder/operator auth, signature-enforced tokens, omitted fields unchanged, required scope. Lacks explicit comparison to alternatives or when to avoid, but constraints are clear.

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

ic_transcribe_getGet a finished transcript (member)A
Read-only
Inspect

Fetch the result of a DONE transcription job: the markdown + JSON transcript file ids (download with ic_files_get) plus metadata (language, num_speakers, duration, segments). Small markdown transcripts (<=50KB) are inlined as text. If the job isn't done yet this returns not_ready with the current status — poll ic_transcribe_status instead. You must be the submitter (or an operator). Args: { job_id }. Returns: { ok, job_id, result, transcript_md? }. Required scope: transcribe:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job id (tj_...) from ic_transcribe_submit.
Behavior4/5

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

Annotations already set readOnlyHint=true, and description adds details like not_ready handling, inlining for small transcripts, access control, and required scope, which enhance transparency without contradiction.

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?

Single, well-structured paragraph that front-loads the main purpose, then provides details, conditions, arguments, returns, and scope without any fluff. Every sentence adds value.

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 simple one-parameter tool with no output schema, the description covers return format, error behavior, access constraints, and required scope, making it self-contained and complete.

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

Parameters4/5

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

Schema has 100% coverage with parameter description. The description adds context that job_id comes from ic_transcribe_submit, adding slight value beyond 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?

The description clearly states it fetches the result of a done transcription job, mentioning specific outputs (markdown, JSON transcript, metadata) and distinguishes from sibling tools like ic_transcribe_status and ic_transcribe_submit by specifying when to use each.

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 states when to use (job is DONE), when not to (if not ready, poll ic_transcribe_status), who can use (submitter/operator), and required scope, providing clear guidance.

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

ic_transcribe_listList your transcription jobs (member)A
Read-only
Inspect

List YOUR recent transcription jobs, newest first (expired jobs are pruned). Args: { limit? (max 20, default 20) }. Returns: { ok, count, jobs }. Required scope: transcribe:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many jobs to return (max 20, default 20).
Behavior4/5

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

Description adds beyond annotations: notes ordering 'newest first', pruning of expired jobs, and return structure { ok, count, jobs }. No contradictions with readOnlyHint annotation.

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 concise sentences, front-loaded with purpose, followed by args and return. No unnecessary words.

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 simple list tool with 1 param and no output schema, description covers return shape, sorting, pruning, and scope. Lacks mention of any pagination or error conditions, but adequate for use.

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%, description adds default value for limit. Baseline 3 is appropriate; minimal added value over 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?

Description clearly states the tool lists the user's own transcription jobs, specific verb 'List' and resource 'transcription jobs', distinguishing it from siblings like ic_transcribe_get (single job) and ic_transcribe_submit (create).

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?

Implies usage by stating scope requirement (transcribe:read) and listing jobs, but doesn't explicitly compare to alternatives or state when not to use. However, context makes usage clear.

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

ic_transcribe_statusCheck a transcription job's status (member)A
Read-only
Inspect

Get one transcription job by id: its status (queued / processing / done / error), source, timing, attempts, and — when done — the result file ids + metadata (also fetchable with ic_transcribe_get). You must be the submitter (or an operator). Poll no more than once per minute. Args: { job_id }. Returns: { ok, job }. Required scope: transcribe:read (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job id (tj_...) from ic_transcribe_submit.
Behavior4/5

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

Annotations provide readOnlyHint=true and openWorldHint=false, and the description adds valuable behavioral context: the polling rate limit, authentication requirements, and that the same data can be retrieved via another tool. It does not contradict annotations and discloses constraints beyond what annotations offer.

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 two sentences: the first covers purpose and return fields, the second adds constraints and permissions. It is front-loaded, concise, and every sentence adds value with no fluff.

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 simple status-check tool with one parameter and no output schema, the description covers purpose, return fields, constraints, and permissions. It is missing an explicit structure of the job object, but the listed fields provide reasonable guidance. Could be more complete with an example or reference to another tool's output.

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 only parameter 'job_id' has a schema description, but the tool description adds context: 'The job id (tj_...) from ic_transcribe_submit.' This clarifies the format and origin, adding meaning beyond the schema. Schema coverage is 100%.

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 clearly states the verb 'Get' and resource 'transcription job by id', and enumerates the specific fields returned (status, source, timing, attempts, result file ids + metadata). It distinguishes from siblings like ic_transcribe_list (list all jobs) and ic_transcribe_submit (submit new job) by mentioning the alternative tool ic_transcribe_get for fetching result files.

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 provides explicit polling guidance ('Poll no more than once per minute'), required permissions ('You must be the submitter (or an operator)'), and required scope ('transcribe:read (ic-member+)'). It also implies when not to use by mentioning that result file ids can be fetched with ic_transcribe_get, though it doesn't explicitly state alternative use cases.

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

ic_transcribe_submitSubmit audio for transcription + diarization (member)AInspect

Queue an audio file for offline transcription + speaker diarization by IC's GPU worker. Provide EXACTLY ONE source: a file_id you uploaded via ic_files_put (audio <=25MB) OR an https audio_url. Results (a markdown transcript + a JSON with per-speaker segments) land in the file vault next to the source; poll ic_transcribe_status no more than once per minute, then read the transcript with ic_transcribe_get. Args: { file_id?, audio_url?, language? (BCP-47 hint, e.g. 'en'), num_speakers_hint? (1..10) }. Returns: { ok, id, status: 'queued', queue_position }. Rate: 5 submissions per token per UTC day. Required scope: transcribe:submit (ic-member+).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idNoA vault file id (f_...) from ic_files_put. Mutually exclusive with audio_url.
languageNoOptional BCP-47 language hint (e.g. 'en', 'es'). Omit to auto-detect.
audio_urlNoAn https URL to the audio. Mutually exclusive with file_id. No private/loopback hosts.
num_speakers_hintNoOptional hint for how many speakers to diarize (1..10).
Behavior4/5

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

Description adds behavioral context beyond annotations: it mentions offline processing via GPU worker, file size limit (<=25MB), forbidden private hosts for URLs, that results land in file vault, and the immediate return of a queue position. Annotations indicate it's not read-only and not destructive, which aligns with the mutating but non-destructive queue action.

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?

Description is concise (~100 words) and well-structured: purpose sentence, key usage rules, parameter summary, return format, rate limit, and scope. Each sentence adds unique value without redundancy. Information is front-loaded.

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

Completeness4/5

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

Given the tool's complexity (4 parameters, no output schema), the description covers the full workflow: submission constraints, expected return, polling instructions, and retrieval method. It could mention error handling or failure scenarios, but the core usage is adequately complete.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all 4 parameters. The description enhances by clarifying that file_id and audio_url are mutually exclusive, giving examples for language (e.g., 'en'), and specifying the integer range for num_speakers_hint (1..10). This adds practical guidance beyond 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?

The description clearly states the tool queues an audio file for offline transcription and speaker diarization by a GPU worker. It specifies the verb (submit/queue) and resource (audio file). Sibling tools like ic_transcribe_get, ic_transcribe_status, and ic_transcribe_list have distinct purposes, so this tool is well-differentiated.

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 states that exactly one source (file_id or audio_url) must be provided. Provides post-submission guidance: poll ic_transcribe_status no more than once per minute, then read with ic_transcribe_get. Also specifies rate limit (5 per token per UTC day) and required scope. No when-not-to-use mention, 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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Social layer for AI coding — DMs, presence, discovery, and multiplayer games between developers. 68 tools including messaging, presence, memory, and 27 multiplayer games.
    Last updated
    9
    1,984
    MIT
  • F
    license
    -
    quality
    C
    maintenance
    Machine-readable directory of AI products that register themselves, plus an agent-readability grader for any URL.
    Last updated
  • A
    license
    A
    quality
    A
    maintenance
    Live tech-hiring intelligence for AI agents. Search 130K+ open jobs collected daily from ~500 tech companies' own career sites — plus company hiring profiles, tech stacks, salary benchmarks, and skill trends. Five tools work with no account.
    Last updated
    28
    31
    501
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.