Skip to main content
Glama

Server Details

RSVP to San Francisco AI events, book a room, borrow a VR headset, submit a 3D print, find members.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 73 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Immersive-commons/ic-skills
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 35 tools

Disambiguation4/5

Most tools target distinct resource+action pairs across clearly separated domains (forms, signal, vault, scheduling, presentations, funko, workshop, donations), and the descriptions explicitly cross-reference siblings to prevent confusion (e.g. ic_presentations_list vs ic_resources_list, ic_news_get vs ic_signal_*). A few pairs blur: ic_member_card_get vs ic_member_profile_get both take a handle and return overlapping public data, ic_signal_get_latest vs ic_signal_list_issues overlap heavily, and ic_spatial_beta_apply duplicates the generic ic_forms_submit flow for one specific program.

Naming Consistency4/5

The `ic_<domain>_<action>` convention is applied almost everywhere and domain prefixes group tools predictably (ic_signal_*, ic_forms_*, ic_scheduling_*, ic_vault_*). Deviations are minor: some entries are bare nouns (ic_funko_catalog, ic_funko_levels, ic_donations_total) or verb-only (ic_donate, ic_whats_new), and the action verb varies (get/list/ask/match/status/manage) without a strict verb_noun rule.

Tool Count3/5

At 35 tools this is heavy by any measure, and an agent must scan a large surface to find the right one. The breadth is genuinely real — the server spans ~13 distinct sub-domains of a community platform — so the count is defensible, but several clusters (funko, spatial beta, workshop) could be consolidated or split into separate servers.

Completeness3/5

Forms and signal have full read/write lifecycles, but there are notable holes: scheduling has meeting-type discovery, availability and read/cancel/reschedule yet no tool to CREATE a booking, and presentations/vault/member surfaces are read-only. Worse, descriptions reference tools that are not in this set (ic_funko_progress, ic_vault_feedback_submit), which will send an agent chasing dead ends.

Available Tools

35 tools
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: { tier?: string (a tier label, case-insensitive — narrows tiers[] to that single tier and adds selected_tier with the exact atomic USDC amount to sign; an unknown label returns error_kind:"validation" naming the valid labels) }.

NameRequiredDescriptionDefault
tierNoA tier label, case-insensitive. Narrows tiers[] to that tier and adds selected_tier with the exact USDC amount to sign.

TDQS

A4.4/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: no-auth requirement, the MCP handshake limitation, the public donor wall exposure of donor {name, message}, and error behavior (error_kind:"validation"). It doesn't address rate limits or the irreversibility of an on-chain transfer, so not quite full coverage.

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

Conciseness4/5

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

Front-loads the purpose and is well organized into purpose, flow, and Args. However, the trailing Args block largely restates the tier description already in the schema, adding some redundancy for a fairly dense paragraph.

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 correctly enumerates the return values (tiers, payTo, asset + network, donate URL). For a non-trivial multi-step payment flow, an agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: case-insensitive matching, the side effect of adding selected_tier with the exact atomic amount to sign, and the validation error listing valid labels on an unknown label.

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

Purpose5/5

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

States a specific verb (donate) and resource (USDC to Immersive Commons) plus the mechanism (x402 / HTTP 402 + USDC on Base), which is immediately distinguishable from the read-only sibling ic_donations_total. An agent knows exactly what this tool accomplishes.

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 when/how context: no auth required, the two-step 402 flow, and the manual POST workaround since MCP can't run the in-band handshake. It stops short of naming a sibling alternative (e.g., ic_donations_total for reading totals), so no explicit exclusion guidance.

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) }.

NameRequiredDescriptionDefault
limitNoHow many recent donations to return (1-50, default 10).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds genuinely new behavioral context: no authentication is required, and because there is no output schema it usefully describes the returned record fields. It stops short of noting ordering guarantees or whether totals are cached/live.

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

Conciseness4/5

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

Front-loaded with the return payload and scoped tightly to three sentences. The trailing 'Args: { limit?: ... }' sentence largely duplicates the schema, so it doesn't fully earn its place, but the whole block is 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?

For a single-parameter read tool with no output schema, the description covers everything an agent needs: what is returned, that no auth is required, and the limit semantics. Nothing material is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single limit parameter's range and default are already fully documented in the schema. The description restates '1-50, default 10' without adding syntax, ordering meaning, or behavior beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

Specific verb and resource: it returns the running USD total, donor count, and most recent settled donations shown on the public donor wall. The return payload is enumerated (name, amount, message, tx, ts), so an agent knows exactly what it gets and can distinguish it from the write-side sibling ic_donate.

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

Usage Guidelines3/5

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

The phrase 'shown on the public donor wall at /donate' and 'No auth required' imply the read-only public scenario, but the description never states when to prefer this over ic_donate or any other sibling, nor any exclusions. Usage is inferable but not spelled out.

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

ic_forms_getRead one form's full question catalog, with the reason for each (public)A
Read-only
Inspect

The whole definition of one form: every question, its kind (short | long | bool | choice | email | url), whether it is required, the exact options a choice answer must match, and a why saying what the answer is actually used for. THIS IS THE READ-BEFORE-YOU-WRITE TOOL — call it before ic_forms_submit so you answer well instead of guessing, and relay each why to your human rather than deciding for them what a question is really asking. facts carries the program's own terms (things like how long it runs and what it pays) as ordered label/value pairs — read them to your human BEFORE they commit to anything. gates names the questions whose 'no' decides most submissions on its own; a truthful no there is recorded rather than blocking, and beats a flattering yes. TWO DIFFERENT RINGS, and confusing them is the main way an agent misleads its human here: audience is the minimum ring to SUBMIT (often public, meaning anyone at all), while approval_requires_tier is the minimum ring to be APPROVED. Anyone may raise a hand on an open call; being taken can still require membership. Report both, and never tell your human they qualify on the strength of can_submit alone. accepting_submissions is live runtime state, not a property of the definition — a form can be closed between your read and your submit. Args: { form_id }. Returns: { ok, form, can_submit, accepting_submissions, cannot_submit_reason?, required_tier? }. No auth required. An unknown form and a form you may not see return the SAME not_found, on purpose — telling a stranger 'that exists but is not for you' is itself the disclosure.

NameRequiredDescriptionDefault
form_idYesFrom ic_forms_list. Do not invent one.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already state readOnlyHint=true. The description adds much more: no auth required, identical not_found responses for unknown vs restricted forms, live accepting_submissions state, and the distinction between can_submit and approval_requires_tier. These are important behavioral disclosures 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.

Conciseness4/5

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

The description is long but front-loaded with the primary purpose and then uniquely critical notices. It uses formatting like bold and intra-description labels to structure the overloaded usage pitfalls. It is longer than necessary in places, but each section contributes to proper agent 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?

With no output schema provided, the description supplies the return shape and semantics, including the form contents, can_submit, accepting_submissions, and optional reason fields. It also covers error behavior, runtime state caveat, and usage instructions, making the tool self-contained 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?

The schema already provides a description for form_id ('From ic_forms_list. Do not invent one.'), so schema coverage is 100%. The description's mention of 'Form: { form_id }' adds no meaningful semantic beyond the schema, so the baseline of 3 stands.

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 state a clear, specific action: reading the full definition of one form, including questions, question types, requiredness, choice options, and per-question 'why' purpose. It is explicitly contrastive with the sibling ic_forms_submit as the read-before-write counterpart, making its purpose distinct.

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 says 'call it before ic_forms_submit' and gives concrete instructions: relay each 'why' to the human, read 'facts' before committing, report both audience and approval_requires_tier, and avoid relying on can_submit alone. This goes beyond implicit context and gives direct when-to-use guidance.

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

ic_forms_listList the forms you can see, and what the rest would need (public)A
Read-only
Inspect

Every form Immersive Commons is currently taking answers to, filtered by who you are. START HERE — do not guess a form id. Each entry carries its form_id, title, summary, the membership ring it is open to, whether YOU can answer it right now, and if you cannot, the reason and the ring you would need. A form you can SEE but not answer is LISTED rather than hidden, because a program nobody outside can discover is a program nobody outside ever joins; a form you may not see at all is omitted, because a list of titles you cannot open is a disclosure with no upside. What a listing never contains is anyone's answers. Args: none. Returns: { ok, count, forms[{ form_id, title, summary, audience, can_submit, cannot_submit_reason?, required_tier?, question_count }] }. No auth required; sending a token narrows nothing and only lets can_submit be truthful about your human's actual ring.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Even with readOnlyHint: true in annotations, the description significantly enriches transparency: it discloses auth behavior (no auth needed, token doesn't narrow), visibility filtering (listed vs omitted forms), and explicitly states listings never contain answers. It explains the rationale for hiding omission, which goes well beyond the annotation contract.

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 longer than average but front-loads the core purpose. Each sentence adds information: the purpose, the START HERE directive, the visibility exclusions, the no-answer guarantee, and the return shape. The only slightly verbose part is the 'program nobody outside can discover' rationale, which is still relevant enough to keep.

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 no parameters and no output schema, the description fully specifies expected return fields (ok, count, forms, and each form's fields) and behavior nuance (what is omitted, what can_submit means). An agent can successfully invoke this tool with no outside knowledge and interpret the result 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 schema has zero parameters and 100% coverage, so the baseline is 4. The description adds the 'Args: none' line, which is redundant but helpful confirmation. No parameter semantics are lacking.

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

Purpose5/5

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

The description states a specific verb ('list'), resource ('every form Immersive Commons is currently taking answers to'), and the key scope: filtered by who you are. It also differentiates from siblings by explicitly saying 'START HERE — do not guess a form id,' which signals that this is the entry point for form-related tools and disambiguates from ic_forms_get/submit.

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 when-to-use context: 'START HERE — do not guess a form id' tells an agent to call this before any form-specific tool. It also explains when a token matters and when it doesn't. However, it doesn't explicitly name sibling tools or provide exclusions (e.g., 'for a single form use ic_forms_get'), so it falls short of a perfect 5.

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

ic_forms_my_submissionRead your OWN submission to a formA
Read-only
Inspect

The status of one submission — YOUR human's, never anybody else's. No token required. Two ways in: a signed-in identity resolves its own record with no id at all, or submission_id plus the claim_token handed back once at submit time opens the record that token belongs to. An id ALONE never works: ids travel through URLs and chat logs, and if an id were a credential every stranger's answers would be readable by anyone who ever saw a link. A wrong id, a wrong token and an id that was never issued all return the same found: false, so this cannot be used to test which ids exist. What comes back is status, dates and failed gates — never the answers as stored, never the reviewer's private note. Args: { form_id, submission_id?, claim_token? }. Returns: { ok, found, submission? }. No auth required.

NameRequiredDescriptionDefault
form_idYesWhich form.
claim_tokenNoThe one-time token returned at submit. Must be sent WITH submission_id; either alone does nothing.
submission_idNoNeeded only when reading by claim token rather than by identity.

TDQS

A4.8/5.0
Behavior5/5

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

With readOnlyHint already set true, the description adds valuable behavioral context beyond annotations: no token required, no auth required, the two access paths, the id-alone failure mode, the consistent found:false result for any invalid input, and the explicit non-return of stored answers or reviewer notes. 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 front-loaded with the most important fact: 'your own, never anybody else's', and the structural Arg/Return framing at the end helps parseability. It is verbose by strict standards, with a couple of repeated ideas ('No token required' and 'No auth required'; id-alone warnings appear twice), though the repetition is used to reinforce a critical security rule.

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 adequately explains the return shape and semantics: { ok, found, submission? }, what submission contains (status, dates, failed gates), and what it never contains. The security model and both invocation modes are fully spelled out for a security-sensitive 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 schema has 100% description coverage, so baseline value is already met. The description adds meaningful semantic context beyond the schema: the relationship between claim_token and submission_id, the 'id alone never works' constraint, and the security rationale. This elevates it above a bare schema readout.

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 and resource: it reads the status of one submission and 'never anybody else's'. It clearly distinguishes itself from general form/submission tools by emphasizing the own-submission-only behavior and the identity/token mechanisms.

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 gives explicit when-to-use conditions: signed-in identity resolves the record with no id, or submission_id plus claim_token opens the record. It also gives when-not guidance: an id alone never works, wrong tokens all return found:false, and the tool cannot be used to test which ids exist.

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

ic_forms_submitAnswer a form on your human's behalf (consequential)AInspect

Submit answers to one form. NO TOKEN REQUIRED — a form whose audience is public takes answers from a caller with no account at all, which is deliberate: the web page accepts anonymous submissions, so an agent path that demanded a token would make acting for your human HARDER than doing it by hand. Each form still declares its own audience ring and it is checked here, live, on every call; a refusal names the ring and how to ask for it, and is distinct from 'no such form'. THIS WRITES A REAL SUBMISSION UNDER A REAL PERSON'S NAME. CONFIRM EVERY ANSWER WITH YOUR HUMAN BEFORE CALLING THIS AND NEVER INVENT ONE — an answer you guessed becomes a promise they have to keep, and the gate questions in particular are commitments rather than preferences. Call ic_forms_get first for the question ids, kinds and exact allowed options. WHAT THIS IS: an expression of interest that opens a screening step — NOT a final application, and nothing is signed here. Do not tell your human they have applied; tell them they have raised their hand. If they are selected, a separate application arrives from the partner out of band. One submission per email address per form; a second is REFUSED and the first is NOT overwritten, so a correction goes to the form's contact address rather than a resubmit. A claim_token comes back ONLY for an unattributed submitter, and only once — surface it verbatim, because it is then the only way they can ever read their own submission again. A caller carrying an identity gets none and does not need one. Args: { form_id, answers }. Returns: { ok, submission_id, status, failed_gates, claim_token?, counts, message }. No auth required; a token only attributes the submission.

NameRequiredDescriptionDefault
answersYesKeyed by question id, exactly as ic_forms_get returned them. Booleans may be sent as true/false or as the strings 'true'/'false'/'yes'/'no'. Omit an optional question rather than sending an empty string.
form_idYesFrom ic_forms_list.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations provide only four thin booleans (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description carries the full burden — and it exceeds it: no token required for public forms, live audience-ring checks, one-submission-per-identity semantics, claim_token returned once and only for unattributed submitters, and the explicit warning that this writes a real submission under a real person's name and every answer must be confirmed with the human.

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?

For a high-consequence tool, nearly every sentence earns its place — preceding tokens, audience checks, this-activity semantics, idempotency, claim_token duties, and return shape are all load-bearing. The structure is an information-dense single paragraph, though, and the critical warning to confirm every answer sits mid-stream; paragraph breaks and strict warning-front-loading would tighten it.

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 and only two parameters, the description must carry return-format and failure-mode disclosures — and it does: it enumerates the exact return (ok, submission_id, status, failed_gates, claim_token?, counts, message), explains the claim_token governance, the audience-ring refusal behavior and its difference from 'no such form', and the semantics of the submission. Nothing an agent needs to call this tool correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents both parameters thoroughly, including that answers are keyed by question id exactly as ic_forms_get returns them and that booleans admit multiple string forms. The description's 'Args: { form_id, answers }' restates schema information and names ic_forms_get as the source of the keys, but adds little new meaning, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb + resource ('Submit answers to one form'), scoped to a single form, and the ensuing text distinguishes it from its read-side siblings ic_forms_get and ic_forms_list. The purpose is unambiguous without needing to open the schema.

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

Usage Guidelines5/5

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

Explicitly instructs the caller to run ic_forms_get first to obtain question ids and allowed options, and explains when NOT to use the tool — a correction must go to the form's contact address because a resubmit is refused and the first submission is never overwritten. It also frames the real-world semantics of the action (expression of interest, not a final application), telling the agent what to tell the human.

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

ic_forms_withdrawWithdraw your OWN submission to a form (consequential, cannot be undone)A
Destructive
Inspect

Take your human's own submission back. NO TOKEN REQUIRED, and no token grants this on anyone else's behalf: the ONLY things that open a record here are your human's signed-in identity or the submission_id plus the one-time claim_token handed back at submit. An operator cannot do it for them, a reviewer cannot do it for them, and admin:forms_manage does not reach this — withdrawing belongs to the person who submitted, because a reviewer withdrawing on somebody's behalf is a rejection wearing that person's name. CONFIRM WITH YOUR HUMAN BEFORE CALLING, in the plainest words you have. THIS CANNOT BE UNDONE BY ANYONE HERE: no reviewer can move a withdrawn record back, and on a form that asks for an email address, answering again on that address is REFUSED, so a withdrawal is not a way to redo an application. If they had been APPROVED, withdrawing hands their place back to the group and somebody on the waitlist can take it — freed_slot in the response tells you whether that happened, and it is the sentence to read to them. Idempotent: a record that was already withdrawn comes back ok with changed: false rather than an error, so a retry after a timeout is safe. A wrong id, a wrong token and an id that was never issued all return the same found: false, so this cannot be used to test which ids exist. Args: { form_id, submission_id?, claim_token? }. Returns: { ok, found, submission_id?, status?, previous_status?, changed?, already_withdrawn?, freed_slot?, counts?, message }. No auth required.

NameRequiredDescriptionDefault
form_idYesWhich form.
claim_tokenNoThe one-time token returned at submit. Must be sent WITH submission_id; either alone withdraws nothing.
submission_idNoNeeded only when the submitter has no IC account. A signed-in submitter needs neither this nor the token.

TDQS

A4/5.0
Behavior1/5

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

The description directly contradicts the annotations: it explicitly claims idempotency ('Idempotent: a record that was already withdrawn comes back ok with changed: false', 'a retry after a timeout is safe'), while the annotations set idempotentHint to false. Per the scoring rule, a contradiction with annotations forces a score of 1. Otherwise the description is rich with behavioral detail, but this contradiction is disqualifying.

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 and somewhat repetitive, restating consequences already in the title and over-explaining ownership. However, given the consequential and irreversible nature of the operation, the detail is largely justified and front-loaded with the core purpose. Every major point contributes to safe usage, though tighter editing would improve it.

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 though there is no output schema, the description explains the important return fields ('found', 'changed', 'freed_slot', 'counts', 'message'), covers idempotent retry behavior, addresses ambiguous error semantics for nonexistent ids, and details edge cases like already-withdrawn records and approved submissions. This is complete enough for an agent to invoke the tool safely and interpret the response.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic context beyond the schema: it explains the two valid identity paths (signed-in identity versus submission_id plus one-time claim_token), clarifies that a signed-in submitter needs neither token, and reinforces that submission_id and claim_token must be used together. This helps an agent choose the correct parameter combination for the caller's situation.

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 a specific verb and resource: it withdraws the human's own submission to a form. It also sharply distinguishes itself from siblings by emphasizing that only the submitter can perform this action, and that operators, reviewers, and admin permissions cannot. This makes the tool's purpose unambiguous even among many form-related siblings.

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 says when to use the tool, when not to use it, and who is allowed to call it. It states that operators/reviewers/admins cannot withdraw on someone's behalf, that withdrawal is not a way to redo an application, that the agent must confirm with the human before calling, and explains the implications for approved submissions. This is strong, actionable usage guidance.

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

ic_funko_catalogList every Funko Me unlock and what earns it (public)A
Read-only
Inspect

The full catalog of things a Funko Me figure can earn — animation clips, props, skins, stages — with the condition that unlocks each one. No auth required; this is the rules table, not anybody's progress. Use it to explain to a human WHY something is locked, or to show what is worth doing on the floor. An item with no requires is granted to every signed-in member. Conditions read as { signal, gte } (a measurable: commits this week, events checked in, days of tenure), { minTier } (a membership ring) or { minLevel } (a Funko Me level; ic_funko_levels has the rules). Every any lists alternatives: the first one met grants it. For one member's actual progress against these, call ic_funko_progress. Args: { kind?: 'clip'|'prop'|'skin'|'stage'|'capability' }. Returns: { ok, count, items[{ id, kind, label, blurb?, rarity, requires?, asset? }] }. No auth required.

NameRequiredDescriptionDefault
kindNoOptional filter — return only unlocks of this kind.

TDQS

A4.6/5.0
Behavior5/5

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

With readOnlyHint=true and openWorldHint=false already present, the description adds substantial context: no auth is required, this is a rules table not a progress report, items with no `requires` are granted to every signed-in member, and condition shapes ({ signal, gte }, { minTier }, { minLevel }) are explained. This goes well 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 front-loaded with purpose and usage, and the condition semantics are valuable. It is slightly repetitive (twice states 'No auth required') and includes an Args block that largely duplicates the schema, but the Returns block compensates since no output schema exists.

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, items[{ id, kind, label, blurb?, rarity, requires?, asset? }] }) and the meaning of condition structures. It also clarifies auth requirements and the distinction from progress tracking, leaving no critical gaps for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the single `kind` parameter is already fully documented with its enum. The description restates the same enum values and confirms it is optional, adding no semantic detail beyond the schema; 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 states a specific resource (the full catalog of Funko Me unlocks) and what it includes (conditions that earn each one). It explicitly distinguishes itself from sibling tools ic_funko_progress and ic_funko_levels, so an agent can tell what it does without opening the schema.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance ('explain to a human WHY something is locked, or to show what is worth doing on the floor') and names the alternative for per-member progress (ic_funko_progress). The reference to ic_funko_levels for level rules further routes the agent correctly.

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

ic_funko_levelsFunko Me level rules: XP sources and the level curve (public)A
Read-only
Inspect

The Funko Me level rules: every XP source with its rate and cap, and the 10-level curve with each level's name. No auth required; this is the rules table, nobody's progress (for one member's level call ic_funko_progress). Levels never go down. Only records the site reads itself earn XP: a Luma check-in (not an RSVP), a verified welcome quest (not a claimed one), a published log entry with a link (not a draft), commits from a linked GitHub (up to 50 a week), hosting a Luma event, using a floor resource (headset, print, transcription), making the figure, and weeks of membership. The membership ring earns no XP. Each source carries how, the action that earns it, so you can tell your human what to do next. Args: {}. Returns: { ok, version, xp_sources[{ signal, xp, per, how }], levels[{ level, at_xp, name }], rules[] }. No auth required.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover readOnlyHint and openWorldHint; the description adds substantial behavior: 'Levels never go down', which records earn XP versus which do not (check-in vs RSVP, verified vs claimed quest, published log vs draft, the membership ring earns nothing), the 50/week GitHub cap, and that each source carries a `how` field for advising a human. This is real context beyond the structured data.

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

Conciseness4/5

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

Purpose is front-loaded and the enumerations are informative rather than filler, but the 'No auth required' statement is repeated verbatim at the start and end, and the XP-source list is long enough to be a mild drag. Slightly tighter editing would help.

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 and no parameters, the description carries the burden well: it names the return shape ({ ok, version, xp_sources[...], levels[...], rules[] }) and explains what each piece contains. An agent has everything needed to call and interpret 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?

There are zero parameters, so the baseline is 4. The description confirms 'Args: {}' and even sketches the return payload, which is more than the empty schema provides, but there is no parameter meaning to add.

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

Purpose5/5

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

The description opens with a specific resource and scope: the level rules table — every XP source with rate/cap plus the 10-level curve. It explicitly contrasts itself with ic_funko_progress ('nobody's progress'), so an agent can distinguish it from the sibling that reports one member's level.

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 states when to use this tool (you want the rules/curve) and names the alternative for the other case ('for one member's level call ic_funko_progress'). No auth requirement is also called out, removing a common source of hesitation.

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

ic_member_card_getA member's public card: how to book or pay them (public)A
Read-only
Inspect

The public card for one Immersive Commons member by handle, schema ic-member-card/1: { ok, card{ schema, handle, name, headline?, bio?, profile_url, card_url, member_of, links[{kind, url, handle?, label?, verified_at?}], reach[{channel ('book'|'call'|'agent_inbox'|'paid_message'|'direct'), label, how, auth ('none'|'ic-member'|'agent-token'|'x402'), page?, endpoint?, tool?, url?, kind?, member_id?, intents?}], capabilities{ book{available, endpoint, page, auth}, message, call, files, pay }, signature } }. links are the member's PUBLIC links in their order (verified_at = the last time IC's server got a 2xx/3xx from it). reach lists only the ways to reach them that work right now, best first; follow how. Each capability says available true/false and, when false, why and an alternative to use instead. pay lists CAIP-10 accounts (Base and Solana) and assets ONLY when the member chose to make their pay address public; otherwise available:false. When offerings are on, pay.offerings[] lists what the member sells, each with an x402_url that pays them directly, and message points at their pay-to-reach offering if they listed one. Before paying anyone, show your human the handle, name and address and get their explicit go: this card is authenticated only by being served from immersivecommons.com (signature is null until signed cards ship). Members are private by default, and an unknown, retired or private handle returns the SAME not_found, so this is not a membership oracle. The same JSON is served at https://www.immersivecommons.com/m//agent.json. No auth required. Args: { handle }.

NameRequiredDescriptionDefault
handleYesThe member's IC handle, as in https://www.immersivecommons.com/m/<handle>.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnly/openWorld; the description adds substantial disclosure beyond them: signature is null until signed cards ship, members are private by default, unknown/retired/private handles all return the same not_found, reach is filtered to currently-working channels, and payments require explicit human confirmation. That is exactly the kind of context annotations cannot carry.

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

Conciseness3/5

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

Purpose and schema name are front-loaded, and most clauses earn their place (payment warning, not_found privacy semantics, capability structure). However it is a single dense run-on paragraph packing nested field-by-field documentation, which is hard to scan and could be broken into structured 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?

With no output schema, the description fully compensates by enumerating the returned card shape (links, reach, capabilities, pay, offerings, signature), the enum values for channel and auth, and the meaning of available/why/alternative. An agent has everything needed to interpret the response.

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

Parameters3/5

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

Schema coverage is 100% and the single handle parameter is fully documented there, so the schema does the heavy lifting. The description's 'Args: { handle }' restates the schema and adds only the URL mapping already implied by the handle description. Baseline 3 for a fully-covered single 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 first clause states a specific verb and resource ('The public card for one Immersive Commons member by handle') and immediately names the response schema ic-member-card/1. It is clearly distinguishable from siblings like ic_offerings_get, ic_forms_get, or ic_donate, which serve different resources.

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

Usage Guidelines4/5

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

Gives concrete operating context: no auth required, 'follow `how`', and per-capability fallbacks ('when false, `why` and an `alternative` to use instead'). It also rules out one misuse ('this is not a membership oracle') and states a precondition for payment (show your human first). It stops short of routing the agent explicitly between sibling tools.

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

ic_member_profile_getA member's public profile as data (public)A
Read-only
Inspect

One Immersive Commons member's public profile by handle, as data: { ok, handle, name, profile_url, card_url, profile_v2{ hero{display_name, availability, chips}, stats[{value, label, source_note?, source_url?, kind ('self_reported' = the member's own claim | 'computed' = derived by IC from GitHub)}], now[{label, text}], offers[{title, body?, cta, meeting_type, booking_page}], log[{id, lane, kind, date, title, body?, url?, url_label?, pinned, updated}] (newest first, <= 50), log_total, log_url, activity (the 12-month chart: weeks, lanes{building, events, writing}, milestones) | null, follow{feed, feed_by_lane, agent} } }. The same profile_v2 block as https://www.immersivecommons.com/m//agent.json. Drafts never appear. Members are private by default, and an unknown, private, operator-hidden or retired handle all return the SAME { ok:false, error, error_kind:'not_found' }, so this is not a membership oracle; a retired handle of a public member is followed to the current one. Read-only. No auth required. Args: { handle }.

NameRequiredDescriptionDefault
handleYesThe member's IC handle, as in https://www.immersivecommons.com/m/<handle>.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint=false, and the description goes well beyond them: it discloses privacy defaults, the collapsed not_found response, retired-handle redirection, draft suppression, and 'Read-only. No auth required.' That is exactly the behavioral context an agent needs before calling.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, but the return-shape enumeration is a long, dense run-on that is hard to parse. It earns its place because there is no output schema, but the packing into one block reduces readability.

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 carries the full return-value burden and does so thoroughly, enumerating profile_v2, stats, log, activity, and follow blocks plus error semantics. Combined with annotations covering safety, nothing an agent needs to call correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single 'handle' parameter is fully documented in the schema with the same /m/<handle> example the description uses. The 'Args: { handle }' line adds nothing beyond the schema, 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?

States a specific verb+resource+scope: one Immersive Commons member's public profile by handle, delivered 'as data'. The '(public)' framing and the profile-vs-card distinction let an agent separate it from the sibling ic_member_card_get without opening either schema.

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

Usage Guidelines4/5

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

Gives strong contextual guidance: the same profile_v2 block as the agent.json URL, drafts never surface, members are private by default, and unknown/private/hidden/retired handles all collapse to the same not_found so it is explicitly 'not a membership oracle'. It never routes to a named alternative such as ic_member_card_get, so it stops short of explicit when-to-use-vs-alternative.

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). Items come back ranked highest-velocity-first (ties keep the feed's own order). 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) }.

NameRequiredDescriptionDefault
qNoCase-insensitive text to find in title and summary (2-80 chars).
limitNoHow many items to return (1-25, default 20).
min_velocityNoKeep only items corroborated by at least this many sources (default 1).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only and closed-world, so the bar is lower; the description still adds the ranking behavior (highest-velocity-first, ties preserve feed order) and the no-auth fact. It does not mention rate limits or pagination, but for a bounded top-N feed that matters less.

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

Conciseness4/5

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

Front-loads what is returned and how it is ranked before the field enumeration and args. The parenthetical field list (dek, beat, date, publishedAt, image, focal) is useful since there is no output schema, though it makes the sentence dense.

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

Completeness5/5

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

With no output schema, the description compensates by enumerating returned fields, stating sort order, tie-breaking, and auth requirements. An agent has everything needed to call and interpret the result.

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 all three parameters are already documented in the schema. The inline Args block largely restates ranges, defaults, and even the substring-over-title-and-summary definition, adding little beyond the schema — baseline 3.

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

Purpose5/5

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

States a specific verb+resource (velocity-ranked AI news) and immediately contrasts itself with the ic_signal_* family, calling out THE SIGNAL weekly dispatch as a different surface. An agent can distinguish this tool from its siblings without opening any schema.

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

Usage Guidelines4/5

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

It names the closest alternative family (ic_signal_*) and characterizes what that serves versus this raw aggregator firehose, which effectively routes the agent. It stops short of an explicit 'use this when / not when' rule, 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_offerings_getA member's listed offerings, and how to pay for them (public)A
Read-only
Inspect

What one Immersive Commons member sells, by handle: { ok, handle, count, offerings[{ id, slug, title, description, price{mode, amount_usdc, unit?}, networks, fulfillment_kind, audience, input_schema?, x402_url }], how_to_pay }. Only offerings the member LISTED and that are on sale; an unknown handle, a member with none listed, and a private member all return the same not_found. To buy: GET or POST x402_url (?amount= for pay_what_you_want, ?quantity= per unit). It answers HTTP 402 with x402 PaymentRequirements whose payTo is the member's OWN address (Base, and Solana when they take it); pay with a PAYMENT-SIGNATURE (or X-PAYMENT) header and get the result plus a receipt. Show your human the member, the price and what is promised before paying. No auth required. Args: { handle }.

NameRequiredDescriptionDefault
handleYesThe member's IC handle, as in https://www.immersivecommons.com/m/<handle>.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover readOnlyHint and openWorldHint, but the description adds substantial behavior: the uniform not_found semantics, the HTTP 402 / x402 PaymentRequirements flow, payTo being the member's own address on Base and Solana, the PAYMENT-SIGNATURE/X-PAYMENT headers, and the reminder to show the human price and promise before paying. This is 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?

Front-loaded with the core lookup purpose, and the return shape is given compactly. The payment-flow detail is dense and arguably heavy for a read tool, but each sentence serves a real caller need, so only minor trimming is warranted.

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 documents the return object in detail (ok, handle, count, offerings fields, how_to_pay) and covers the downstream payment mechanics. Nothing an agent needs to call it or interpret the result is missing.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one parameter, whose schema already documents the handle format. The description restates 'Args: { handle }' without adding syntax or format meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource+scope: 'What one Immersive Commons member sells, by handle', and enumerates the return shape. An agent can immediately tell this is a per-handle offerings lookup, distinct from siblings like ic_member_card_get or ic_donate.

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?

Clarifies exactly which offerings are returned (listed and on sale) and that unknown handle, empty member, and private member all collapse to not_found. It also explains the purchase path (GET/POST x402_url). It does not explicitly name an alternative sibling to use instead, 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_plans_guest_answerAnswer a plan you were invited to: verdicts and ranks onlyAInspect

For the GUEST of a plan or their assistant. Judge each option against what your person wants and send only a verdict (ok | veto | unknown) and optional rank (1 = best) per option, and ok per time window. Never send reasons, diet, budget or anything else; there is no field for them. The other person sees only the final proposal. Args: { plan_id, token, answer: { options: [{ id, verdict, rank? }], windows?: [{ id, ok }] } }. No auth required.

NameRequiredDescriptionDefault
tokenYesThe guest link token: the t= value in the plan link the guest was sent.
answerYesVerdicts and ranks only. There is no field for a reason: never put preferences anywhere.
plan_idYesThe plan id (pl_...), from ic_plans_create or ic_plans_list.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false / destructiveHint=false / idempotentHint=false; the description adds genuinely useful behavior beyond that: no auth needed, 'The other person sees only the final proposal', vetoes are 'never attributed', and unknown is 'never counted as ok'. It still doesn't say whether a second call overwrites a prior answer (idempotentHint is false but the consequence is unstated).

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

Conciseness4/5

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

Front-loaded with audience, then the action, then the privacy constraint ('there is no field for them'), then the args shorthand and auth note. Efficient, though the inline Args blob partially duplicates the schema rather than earning new 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 nested, multi-variant tool with no output schema, the description covers the common verdict/rank path well and delegates the PSI private-times/private-venues branches to the schema's detailed field descriptions. The one gap is return behavior: with no output schema, it says what the counterparty sees but not what this call hands back to 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 description coverage is 100%, so the schema already documents every parameter (including the psi/psi_venues/common_* private-plan variants). The description's Args blob is a useful shorthand and clarifies rank '1 = best' and that unknown counts as non-ok, but adds no semantics beyond what the schema already states. Baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ('Judge each option... send only a verdict and optional rank per option, and ok per time window') and pins the audience ('For the GUEST of a plan or their assistant'), so the operation is unambiguous. It does not, however, name or differentiate itself from the very close sibling ic_plans_guest_respond, which the agent must disambiguate on its own.

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

Usage Guidelines4/5

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

It gives clear context: this is the guest-side answering action, and it explicitly notes 'No auth required' (the token authorizes it). It does not state when NOT to use it or name an alternative tool (e.g. ic_plans_guest_respond / ic_plans_guest_get), so the routing guidance stops just short of explicit.

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

ic_plans_guest_getRead a plan you were invited to, with its link tokenAInspect

For the GUEST of a plan, or the guest's own AI assistant. NO IC ACCOUNT NEEDED: the t= token from the plan link is the credential, and a wrong token answers not_found exactly as a missing plan does. Returns the options, windows, your own answer, the current proposal and next_step; never the other side's answer. Args: { plan_id, token }. No auth required.

NameRequiredDescriptionDefault
tokenYesThe guest link token: the t= value in the plan link the guest was sent.
plan_idYesThe plan id (pl_...), from ic_plans_create or ic_plans_list.

TDQS

A4/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: the token is the sole credential, a wrong token returns not_found identically to a missing plan (closing an enumeration oracle), and the payload deliberately excludes the other side's answer. That is strong auth and privacy disclosure. It never explains the annotations' readOnlyHint=false / idempotentHint=false, so any side effect of the call is left undocumented.

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

Conciseness4/5

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

Front-loaded with the audience and the security model, and the return contents follow immediately; almost every clause earns its place. Minor redundancy: 'NO IC ACCOUNT NEEDED' and 'No auth required' say the same thing, and the Args line duplicates the schema.

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

Completeness4/5

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

With no output schema, the description correctly carries the return-value burden and does so well (specific fields returned and deliberately withheld), and it covers auth, errors and input shape. The only omission is any mention of side effects, which is notable given readOnlyHint=false.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by framing token as the credential and describing its failure mode, plus identifying plan_id's origin (ic_plans_create / ic_plans_list). The 'Args: { plan_id, token }' line itself is redundant restatement of the schema.

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

Purpose4/5

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

The description states a clear verb+resource (read a plan as its invited guest, using the link token) and enumerates exactly what comes back: options, windows, your own answer, the current proposal and next_step. It implicitly separates itself from owner-side plan tools by insisting on the guest/token framing, but it never names the neighboring guest tools (ic_plans_guest_answer, ic_plans_guest_respond), so differentiation is inferential rather than explicit.

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

Usage Guidelines4/5

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

It clearly scopes the caller: 'For the GUEST of a plan, or the guest's own AI assistant. NO IC ACCOUNT NEEDED' tells an unauthenticated agent that this is the right entry point, which is real usage context. It does not, however, say when to prefer it over the sibling guest_answer/guest_respond tools or what to do once the plan has been read.

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

ic_plans_guest_respondAccept or pass on the proposal of a plan you were invited toAInspect

For the GUEST of a plan or their assistant: accept or pass on the current proposal, or leave the plan (leave:true, which ends it). ASK YOUR PERSON FIRST, it commits them. Both sides accepting confirms the plan; passing moves to the next proposal and says nothing about why. Args: { plan_id, token, accept?: boolean, leave?: boolean }. No auth required.

NameRequiredDescriptionDefault
leaveNotrue leaves the plan, which ends it for both.
tokenYesThe guest link token: the t= value in the plan link the guest was sent.
acceptNotrue accepts the current proposal, false passes.
plan_idYesThe plan id (pl_...), from ic_plans_create or ic_plans_list.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations mark this as a non-read-only, non-idempotent, non-destructive mutation, and the description adds real context beyond that: it commits the person, both sides accepting confirms the plan, passing reveals nothing about why, and leave:true ends the plan for both. It adds no output/return or retry behavior, but the declared side effects are meaningful.

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?

Dense and front-loaded, with the audience, the decision, and the commitment warning leading. The repeated inline Args block is somewhat redundant given the 100%-covered schema, but overall the sentences earn their place.

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

Completeness4/5

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

For a small 4-param mutation with no output schema and full schema coverage, the description supplies the key outcomes (confirmation, next proposal, plan termination) and the 'no auth required' note. It is nearly complete, only missing routing guidance against the sibling 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% and the schema already documents accept, leave, token, and plan_id, so the description's repeated 'Args: {...}' list adds little. The prose does add semantic meaning for accept (true accepts / false passes) and leave (ends it for both), but the schema covers this too.

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

Purpose4/5

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

States a specific verb+resource ('accept or pass on the current proposal, or leave the plan') and scopes the audience clearly ('For the GUEST of a plan or their assistant'). However, it never differentiates itself from the close sibling ic_plans_guest_answer, leaving an agent unable to tell the two apart from the description alone.

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

Usage Guidelines4/5

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

Gives clear context and consequence-based guidance: accept vs pass moves to the next proposal, leave ends the plan, and 'ASK YOUR PERSON FIRST, it commits them' frames the decision. It does not name when to choose a sibling tool (e.g., ic_plans_guest_answer) over this one.

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

ic_presentations_askAsk the talks archive a question (public)A
Read-only
Inspect

Searches every Immersive Commons talk by meaning and returns the matching slides, the same as the search box on /presentations: talk title, series, speaker, the slide number, a snippet, a deep link straight to that slide in the public deck, and the talk's page. Retrieval only, no generated answer: read the snippets and follow deep_link. At most 3 hits per talk. No auth required. Budget: 40 questions per hour per token, and one shared hourly budget for all anonymous agents, so pass a token if you have one. Args: { q: string (1-500 chars), k?: integer 3-25 (default 10) }. Returns { ok, q, count, results: [{ slug, talk_title, series, speaker, similarity, slide, snippet, deep_link, detail_link }], via }.

NameRequiredDescriptionDefault
kNoHow many slides to return, 3-25. Default 10.
qYesWhat you want to find in the talks, in plain words, e.g. "how do agents pay each other".

TDQS

A4.4/5.0
Behavior5/5

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

With readOnlyHint already declared, the description still adds a lot: no auth required, 40 questions/hour per token plus a shared anonymous budget, the advice to pass a token, and the 'at most 3 hits per talk' cap. It also states retrieval-only behavior and describes the exact return payload, which annotations do not cover.

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

Conciseness4/5

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

Purpose and the retrieval-only constraint are front-loaded, followed by budget then a compact Args/Returns block. It is dense and readable, though the Args restatement duplicates the schema and the Returns enumeration is long for a single line.

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?

There is no output schema, so enumerating the return fields (slug, talk_title, series, speaker, similarity, slide, snippet, deep_link, detail_link, via) is genuinely necessary and included. Auth and rate-limit behavior, the per-talk hit cap, and the retrieval-only nature are all 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?

Schema description coverage is 100%, so both q and k are fully documented with ranges and default in the schema itself. The description's Args block largely restates those constraints (1-500 chars, 3-25, default 10) rather than adding new semantics, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource: semantic search over all Immersive Commons talks returning matching slides. It also distinguishes itself from the sibling list/get tools by framing itself as the '/presentations search box' equivalent, and it explicitly says it is retrieval only, not a generated answer.

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 use (find slides by meaning, then read snippets and follow deep_link) and it explicitly excludes the generated-answer expectation. It does not name ic_presentations_list or ic_presentations_get as the alternative for enumerating talks, so the agent must infer that routing itself.

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.

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).

TDQS

A4.6/5.0
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).

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.

TDQS

A5/5.0
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_scheduling_get_availabilityBookable slots for one meeting type, WITH the member's policyA
Read-only
Inspect

Open slots for one meeting type AND the member's full booking policy, in ONE response. The policy is included deliberately so you can solve locally instead of probing: repeated narrowing calls are what turn a lookup into a negotiation, and this surface refuses to be negotiated with. Every start/end is UTC ISO-8601 with a trailing Z; member.tz and the echoed viewer_tz are IANA zone names — never do wall-clock arithmetic without one. READ complete BEFORE YOU READ slots. ok:true with complete:false is an INCOMPLETE SUCCESS, not a failure: part of the member's calendar could not be read, coverage.unknown_minutes says how much and unknown_windows[] says which windows and why. Those windows are OMITTED from slots, never guessed free — so do not tell your human the member is free then, and do not tell them the member is busy then either. The honest sentence is that we could not see part of their calendar. horizon.effective_to may be earlier than what you asked for when a member's constraint data runs out; that is 'not offered', which is a definite statement and is NOT the same fact as unknown. An empty slots with complete:true genuinely means booked solid or outside the window. NO TOKEN REQUIRED. The same reads are served by the scheduling service itself at https://sched.skew.site; its protocol document is https://sched.skew.site/v1/.well-known/scheduling. Args: { handle, meeting_type, from?, to?, tz? }. Returns: { ok, complete, member, meeting_type{duration_minutes,slot_granularity_minutes,min_notice_minutes,max_per_day,buffer_before_minutes,buffer_after_minutes,location_kind,requires_approval}, slots[], coverage, unknown_windows[], horizon?, generated_at }. No auth required.

NameRequiredDescriptionDefault
toNoISO-8601 end of the window. Defaults to the member's horizon; a longer request is clamped and the horizon block says so.
tzNoIANA zone the BOOKER is in, e.g. Europe/Berlin. Echoed as viewer_tz. An unknown zone is rejected, never silently accepted. A raw UTC offset is NOT a zone and cannot survive a DST boundary.
fromNoISO-8601 start of the window to search, e.g. 2026-09-12T00:00:00Z. Defaults to now.
handleYesThe member's booking handle.
meeting_typeYesThe meeting-type slug from ic_scheduling_list_meeting_types. Do not guess it.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover read-only/open-world, but the description adds far more: the incomplete-success contract for ok:true/complete:false, coverage.unknown_minutes and unknown_windows[], the rule that unknown windows are omitted rather than assumed free, horizon.effective_to clamping semantics, and explicit 'NO TOKEN REQUIRED' auth disclosure. This is exactly the extra behavioral context annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the two facts an agent needs first (slots + policy together, then the read-order rule). The return-shape enumeration and the negotiation metaphor add length; the metaphor sentence is stylistic rather than informational, but the rest of the length is earned by genuinely non-obvious semantics.

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 exists, yet the description enumerates the full response shape (ok, complete, member, meeting_type fields, slots, coverage, unknown_windows, horizon, generated_at), explains the empty/incomplete cases, and discloses auth requirements. An agent could call and interpret this correctly without further probing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description reinforces semantics the schema states and adds cross-parameter meaning: start/end are UTC ISO-8601 with trailing Z, member.tz and viewer_tz are IANA zones and wall-clock arithmetic is forbidden without one, and the arg list is restated. Useful but largely overlapping with the schema.

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

Purpose5/5

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

States a specific verb+resource (open slots for one meeting type) and an unusual scope addition (the member's full booking policy in the same response). It is clearly distinguishable from ic_scheduling_list_meeting_types, which it references as the source of the meeting_type slug, and from ic_scheduling_manage_booking.

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 strong when-to-use guidance: read the policy block before the slots, understand that complete:false is an incomplete success, and that empty slots with complete:true means genuinely booked. It routes to ic_scheduling_list_meeting_types for the slug, but does not explicitly contrast against ic_scheduling_manage_booking or state when not to call this.

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

ic_scheduling_list_meeting_typesList a member's public meeting types (public booking link)A
Read-only
Inspect

What you may book with one IC member: every PUBLIC meeting type they publish, with its duration, location kind, notice window and booking horizon. START HERE — a slug guessed rather than read is the commonest way an availability call returns not_found. NO TOKEN REQUIRED, and that is the point: a visitor's agent must be able to discover a member's booking link without an IC account, exactly as a human opening the link can. Visibility is filtered in the scheduling service's own SQL — members_only, unlisted and deactivated types never reach this response and are not filtered here, so an empty meeting_types means this member publishes nothing public, NOT that a filter hid something. min_notice_minutes and horizon_days are the two policy fields that decide whether a slot you want can exist at all; read them before proposing times to your human. The same reads are served by the scheduling service itself at https://sched.skew.site; its protocol document is https://sched.skew.site/v1/.well-known/scheduling. Args: { handle }. Returns: { ok, member:{handle,display_name,tz}, meeting_types[{slug,title,description,duration_minutes,location_kind,min_notice_minutes,horizon_days,requires_approval}] }. No auth required.

NameRequiredDescriptionDefault
handleYesThe member's booking handle, lowercase — the segment in their booking link. Matches ^[a-z0-9][a-z0-9._-]{0,63}$.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover only readOnly/openWorld, so the description carries the real behavioral load: no token required, visibility filtered in the service's own SQL (members_only/unlisted/deactivated never appear), and what an empty meeting_types means. This is exactly the context an agent needs that annotations cannot express.

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

Conciseness4/5

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

Front-loaded with the core 'what you may book' statement followed by usage, semantics, and the return shape. It is dense and somewhat long, but nearly every sentence carries distinct operational value; only the protocol URL caveat is marginal.

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 exists, yet the description spells out the full return shape (ok, member, meeting_types fields) and the empty-result semantics. For a read-only listing tool, nothing an agent needs to call and interpret it is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single handle param is fully documented with a regex in the schema. The description only restates 'Args: { handle }' and hints at slug correctness, adding no syntax beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('list every PUBLIC meeting type' a member publishes) plus the fields returned (duration, location kind, notice window, booking horizon). Clearly distinguishable from the sibling ic_scheduling_get_availability, which it explicitly positions itself as a prerequisite to.

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

Usage Guidelines5/5

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

Explicit 'START HERE' directive, warns that guessing a slug causes not_found, and tells the agent to read min_notice_minutes and horizon_days before proposing times. It also explains the meaning of an empty result, ruling out a misuse interpretation.

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

ic_scheduling_manage_bookingRead, cancel or reschedule one booking with its cancel tokenAInspect

The way OUT of a booking, and it is first-class on purpose: an agent that has to ask its human to click a link in an email simply ghosts, and no-shows are the failure mode that actually burns members' time. NO TOKEN REQUIRED — the booking's own cancel_token IS the credential, exactly as a form's claim token is for an account-less submitter. Putting the exit behind an IC account nobody was issued is how a person ends up emailing a human to be removed. Authorization has not been skipped, it has MOVED into the resource: the token is checked in constant time and a WRONG token gives the SAME answer as a missing booking (not_found), so this cannot be used to discover which booking ids exist. action:read returns the booking's current state. action:cancel is idempotent — cancelling an already-cancelled booking is a SUCCESS, not an error, so a retry after a dropped response does not look like a failure. action:reschedule NEEDS start. A refused move leaves the original booking untouched: the release and the new booking are one transaction, so an error means nothing changed and you may try another slot. Confirm cancel and reschedule with your human first; both are visible to the member immediately. booking.id in a reschedule response is NEW and is the one to keep; cancel_token is unchanged. Reading the OLD id with the same token returns the LIVE booking (booking.id is the new id) plus superseded{id,start,end,rescheduled_by} naming the booking you asked for, so a saved manage link keeps working after the owner moves the meeting. action:read is also how you wait for a Google Meet link: calendar.meet_link.status pending -> ready (location_url is the link) or failed/none (no link is coming); poll no faster than every 2 seconds, for at most 90 seconds. Args: { booking_id, cancel_token, action, start?, reason?, idempotency_key? }. Returns: { ok, booking{id,status,start,end,cancel_token,cancelled_by,rescheduled_by,rescheduled_to}, superseded?{id,start,end,rescheduled_by}, member, meeting_type, location_url, ics, calendar{status,meet_link{status,reason,retrying}} } or { ok:false, error_kind } from not_found | slot_taken | outside_window | too_soon | rate_limited | validation | transient. No auth required.

NameRequiredDescriptionDefault
startNoRequired for action:reschedule. An ISO-8601 slot start from a FRESH ic_scheduling_get_availability call — the old response is stale the moment anyone else books.
actionYesread is safe and repeatable. cancel and reschedule change a real person's calendar — confirm with your human first.
reasonNoOptional, for action:cancel. The member sees it; it is the difference between a cancellation and a ghosting.
booking_idYesThe booking's id, from the confirm response's booking.id.
cancel_tokenYesFrom booking.cancel_token on the confirm response, or the manage link inside the .ics your human saved. It is the only credential for this booking.
idempotency_keyNo8-128 chars of [A-Za-z0-9._:-]. Required by the service on a reschedule; minted here if you omit it. Bring your own and reuse it on retry.

TDQS

A4.2/5.0
Behavior4/5

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

Without needing annotations it discloses credential semantics (token IS the credential; wrong token returns not_found so ids can't be probed), cancel idempotency, reschedule atomicity ('an error means nothing changed'), and it never skips authorization, only moves it into the resource. The one mismatch is that annotations declare idempotentHint=false while the description says action:cancel is idempotent — defensible at tool level since reschedule mutates, but it is a nuance the reader must reconcile.

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?

Almost every sentence carries operational payload, but it is delivered as a dense wall of prose with rhetorical asides ('ghosts', 'burns members' time', 'emails a human to be removed') and the purpose is not front-loaded. The size is larger than the task requires; a structured list of auth model / per-action behavior / errors would read far faster.

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 carries return-shape duty and does so: it documents booking/superseded/cancel_token fields, the NEW-id-after-reschedule rule, meet_link status transitions, and the full error_kind set (not_found, slot_taken, outside_window, too_soon, rate_limited, validation, transient). Nothing an agent needs to call or interpret this tool is missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description earns a step above by explaining parameter interplay the schema cannot — that start must come from a fresh availability call because responses go stale, that idempotency_key is minted server-side if omitted but should be reused on retry, and that reason is member-visible. It still largely restates the arg list.

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

Purpose4/5

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

The title and body state a specific verb set (read/cancel/reschedule) on a specific resource (one booking) keyed by cancel_token, and the actions are enumerated explicitly. It is distinguishable from siblings and even names ic_scheduling_get_availability as the source of a reschedule slot. Marks off only because the body opens with rhetorical framing ('The way OUT of a booking...') instead of the operational statement the title already gives.

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

Usage Guidelines5/5

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

Explicit 'when' rules throughout: confirm cancel and reschedule with your human first, reschedule needs a start from a FRESH availability call, poll meet_link no faster than every 2s for at most 90s, reuse idempotency_key on retry. It also states which action is safe/repeatable versus which mutates a real calendar.

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") }.

NameRequiredDescriptionDefault
slugYesIssue slug, from ic_signal_list_issues.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds 'No auth required,' which is genuinely useful behavioral context beyond the annotations. It also enumerates the returned structure (beats[], stories[], datespan, classification, published), giving the agent a concrete picture of the payload.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the core action and return shape, with no filler. The return-field enumeration is slightly run-on but every element earns its place since there is no output schema.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the return tree and notes that no auth is needed, which covers the main things an agent needs to call and interpret this tool. It lacks any error behavior (e.g., unknown slug) or ordering context, keeping it short of complete.

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

Parameters3/5

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

Schema description coverage is 100% with a single required slug parameter already documented as coming from ic_signal_list_issues. The description only restates the parameter and adds an example value ('issue-05'), which is marginal value over the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Fetch one issue by slug') and the schema reference to ic_signal_list_issues implies the lookup workflow. It does not explicitly differentiate itself from sibling ic_signal_get_latest, which also returns a single issue, so an agent must infer the distinction from 'by slug'.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use or when-not-to-use guidance and never names an alternative such as ic_signal_get_latest or ic_signal_search. The only routing hint is the schema note that the slug comes from ic_signal_list_issues, which is workflow inference rather than stated 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_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: { include_stories?: boolean (default false — when true the issue's story list is inlined as stories[] with id/title/dek, saving a follow-up ic_signal_get_issue round trip) }.

NameRequiredDescriptionDefault
include_storiesNotrue inlines the issue's stories (id, title, dek). Default false.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered, but the description adds real context beyond them: 'No auth required' and the guarantee that output matches an element of ic_signal_list_issues.issues[]. It does not describe error/empty states or pagination, but for a read-only summary tool this is solid.

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

Conciseness4/5

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

Front-loads the core purpose and keeps everything in a compact couple of sentences. The inline 'Args:' block partially duplicates the schema's own description, which is slight redundancy, but nothing is padded.

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 compensates by defining the return shape by reference (same as an element of ic_signal_list_issues.issues[], or stories[] when inlined). Auth requirement is disclosed. Minor gap: no mention of behavior when no issues exist.

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, but the description genuinely adds meaning: include_stories=true inlines stories[] with id/title/dek and is justified as avoiding a follow-up call. This explains the *why* and the exact content beyond the schema's terse 'true inlines the issue's stories'.

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

Purpose5/5

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

States a specific verb and resource ('returns the most-recent issue summary') and pins down the exact return shape by equating it to 'one element of ic_signal_list_issues.issues[]'. It also names two siblings (ic_signal_list_issues and ic_signal_get_issue), so an agent can distinguish it without opening a schema.

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

Usage Guidelines4/5

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

Frames itself as a 'convenience tool' for grabbing the latest issue and explicitly notes that include_stories=true saves a follow-up ic_signal_get_issue round trip, which gives clear routing context. It stops short of an explicit when-not statement (e.g., when to prefer ic_signal_list_issues or ic_signal_search instead).

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 }.

NameRequiredDescriptionDefault
slugYesIssue slug, from ic_signal_list_issues.
story_idYesStory id within that issue, from ic_signal_get_issue.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description still earns credit by adding the no-auth requirement and enumerating the returned story tree (body paragraphs, feature card, image, source citations), which matters because there is no output schema.

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

Conciseness4/5

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

Front-loads the verb and resource, then adds identification format and return contents in a tight sequence. The trailing 'Args: { slug: string, story_id: string }' is pure redundancy against a 100%-documented schema and is the only sentence that does not earn 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 no output schema, the description usefully describes what is returned, plus auth and parameter sourcing. It stops short of noting failure behavior (e.g. unknown slug or story id), which would be the remaining gap for a single-resource fetch.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining that story_id is a kebab-case slug and giving concrete examples ('grok-build', 'shai-hulud-2'), which reduces the chance of passing a numeric id.

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

Purpose4/5

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

States a specific verb+resource ('Fetch one story') and the exact key pair that identifies it, which cleanly separates it from ic_signal_get_latest and ic_signal_list_issues. It does not explicitly name those siblings, so it falls just short of the top band.

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

Usage Guidelines3/5

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

Usage is only implied: the schema descriptions point to ic_signal_list_issues and ic_signal_get_issue as the source of the two required keys, so an agent can infer the retrieval chain. However, the description itself never says when to prefer this over get_issue or get_latest, and gives no exclusions.

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 }> }.

NameRequiredDescriptionDefault
limitNoHow many issues to return, newest first (1-50).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavior: 'No auth required' and the 'Newest first' ordering guarantee, plus the shape of what comes back. It stops short of describing pagination or error behavior.

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

Conciseness4/5

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

One dense paragraph with the purpose front-loaded and zero filler. The Args/Returns clauses read like a struct dump and partially duplicate the schema, but the Returns clause earns its place because no output schema exists.

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 no output schema, the description supplies the full return field list, which is essential for an agent to use the result. Combined with the default limit and auth note, it is nearly complete; only pagination/edge behavior is unaddressed.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description contributes information the schema lacks: the default value of 10. It restates the max of 50, which is already in the schema, making the addition incremental rather than rich.

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

Purpose4/5

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

States a specific verb and resource ('List issue summaries for THE SIGNAL') and scopes it ('Newest first'), which cleanly separates it from single-item siblings like ic_signal_get_issue and ic_signal_get_latest. It does not explicitly name those siblings, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no named alternative, even though ic_signal_get_latest, ic_signal_get_issue and ic_signal_search are obvious alternatives. Ordering and auth details describe the tool's behavior rather than when an agent should pick it.

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

ic_spatial_beta_applyApply to the spatial-computing beta cohort (public)AInspect

Submit an application to the 20-person spatial-computing beta. WRITES a real application under a real person's name and commits them to a 5-week in-person NDA-bound program, so CONFIRM EVERY ANSWER WITH YOUR HUMAN FIRST and never invent one on their behalf - particularly the NDA, commitment and in-person answers, which are promises they have to keep. Call ic_spatial_beta_program first for the catalog and the exact allowed values. One application per email address; a second is refused rather than silently merged. The response carries a claim_token shown EXACTLY ONCE: surface it to your human verbatim, because without it an applicant with no IC account can never read their own status again. No auth required; a token only attributes the application. Returns: { ok, application_id, claim_token, status, failed_gates, cohort, message }.

NameRequiredDescriptionDefault
emailYesEmail they actually read. Required.
handleNoTelegram or X handle. Optional.
nda_ackYesWill they sign the strict NDA before their first session? Required. A false is honest and is recorded as a failed gate rather than blocked.
profileYesExactly one of: AI founder | Prompt engineer | Computational designer | Vibe coder | Spatial UI/UX tinkerer | XR developer | Researcher | Other. Required.
full_nameYesApplicant's full name. Required.
heard_viaNoHow they heard about it. Optional.
availabilityYesExactly one of: Weekday daytime | Weekday evenings | Weekends | Flexible / most times. Required.
building_nowYesWhat they are building right now, in their own words. Required.
in_person_sfYesCan they get to Frontier Tower, San Francisco in person regularly? Required. The hardware never leaves the building.
project_linkNohttps URL to a project, GitHub or portfolio. Optional.
accessibilityNoAccess needs or anything affecting headset use. Optional, accommodated, never used to screen anyone out.
anything_elseNoAnything else. Optional.
xr_experienceYesExactly one of: None - total newcomer | Tried a few times | Regular user | I build for headsets. Required. Newcomers are WANTED - do not inflate this to make an application look stronger.
commit_5_weeksYesCan they commit to the full 5 weeks? Required.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say it's a non-idempotent, non-destructive write; the description goes far beyond by disclosing that it files a real application under a real person's name, commits them to a binding program, requires no auth, that a token only attributes, and that a second submission is rejected. It names the exact fields the agent must not fabricate and explains the claim_token is shown exactly once.

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 paragraph is front-loaded with the action and then layers warnings, prerequisites, constraints, and return shape in a logical order with no filler. It is dense and slightly run-on, but every sentence carries new operational 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?

There is no output schema, but the description still enumerates the return object ({ ok, application_id, claim_token, status, failed_gates, cohort, message }) and covers auth, idempotency behavior and the critical claim_token handling. Nothing an agent needs to invoke this correctly is missing.

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

Parameters4/5

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

With 100% schema coverage the baseline is 3, but the description adds meaning beyond the schema by flagging that nda_ack, commit_5_weeks and in_person_sf answers are 'promises they have to keep' that must be confirmed, and by specifying that all answers need the human's confirmation. This elevates how to treat the required fields, though it doesn't restate enum values the schema already lists.

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

Purpose5/5

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

States a specific verb (submit an application) and resource (the 20-person spatial-computing beta) with scope details (5-week, in-person, NDA-bound). It routes the agent to ic_spatial_beta_program for the catalog and implicitly separates itself from the status/read siblings. An agent can tell what this does without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit prerequisites ('Call ic_spatial_beta_program first for the catalog and the exact allowed values') and a hard behavioral rule ('CONFIRM EVERY ANSWER WITH YOUR HUMAN FIRST and never invent one on their behalf'). It also states the one-application-per-email constraint and that duplicates are refused rather than merged.

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

ic_spatial_beta_programWhat the spatial-computing beta is + the full question catalog (public)A
Read-only
Inspect

Everything needed to apply to the Immersive Commons spatial-computing beta: the terms (20 testers, 5 weeks, $160 paid ON COMPLETION, in person at Frontier Tower San Francisco, strict NDA, a pre-release AI spatial-computing device 6-12 months from release), every application question, and the REASON each is asked. Call this BEFORE ic_spatial_beta_apply so you answer well instead of guessing. gates names the three booleans that decide most applications - the NDA, the 5-week commitment, and being able to attend in person; a no to any of them is very likely a rejection, and saying so honestly beats applying anyway. Args: none. Returns: { ok, form, cohort: { size, approved, remaining } }. No auth required.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover readOnlyHint/openWorldHint, and the description adds materially more: 'No auth required,' the exact return shape { ok, form, cohort }, and the gate semantics that determine outcomes. This is behavioral context beyond structured fields.

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

Conciseness4/5

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

Front-loaded with purpose and action guidance, and every clause earns its place, though the single dense paragraph packs terms, gates, args, and returns together and could be marginally 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?

No output schema exists, yet the description supplies the return shape, the no-auth status, and the gating logic an agent needs before invoking apply. Nothing material is missing for a no-arg 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?

Zero parameters, so the baseline is 4; the description confirms 'Args: none,' matching the empty schema. Nothing further to document.

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

Purpose5/5

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

States a specific resource (the Immersive Commons spatial-computing beta program) and enumerates exactly what it delivers: the terms, every application question, and the reason each is asked. It explicitly distinguishes itself from the write sibling ic_spatial_beta_apply.

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 instructs 'Call this BEFORE ic_spatial_beta_apply so you answer well instead of guessing,' naming the alternative and the condition that selects this tool. It also gives decision guidance on the gates, noting a 'no' to any is very likely a rejection and that honesty beats applying anyway.

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

ic_spatial_beta_statusCheck a spatial-beta application's status (public)A
Read-only
Inspect

Where one application stands. Needs BOTH the application_id and the claim_token returned at submission: an id alone returns only public slot counts and never anyone's record, because ids travel through URLs and chat logs and must not work as credentials. A wrong or missing token is answered exactly like an unknown id, so this cannot be used to test whether an id exists. Args: { application_id, claim_token }. Returns: { ok, found, application?, cohort }. No auth required.

NameRequiredDescriptionDefault
claim_tokenYesThe sbc_ token returned once at submission.
application_idYesThe sb_ id returned at submission.

TDQS

A4.6/5.0
Behavior5/5

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

With readOnlyHint already covering safety, the description adds substantial non-obvious behavior: the token acts as a credential because ids leak via URLs/chat logs, wrong-or-missing tokens are indistinguishable from unknown ids (no enumeration oracle), and no auth is required. This is exactly the kind of context annotations cannot convey.

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

Conciseness4/5

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

Front-loads the purpose, then the credential requirement, then the security rationale, then args and return shape. Dense but every sentence carries information; the opening 'Where one application stands' is slightly indirect but quickly grounded.

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 exists, yet the description enumerates the return fields (ok, found, application?, cohort), states the auth requirement, and documents the security semantics of failure modes. Nothing an agent needs to call or interpret this tool is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains why both parameters are jointly required and frames claim_token as a credential rather than a plain identifier. It does not add format/syntax detail beyond the sbc_/sb_ prefixes 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?

States a specific verb and resource ('Where one application stands', checked against the spatial-beta application concept) and clearly differs from the sibling write tools ic_spatial_beta_apply and ic_spatial_beta_program by being a read/status lookup. An agent can identify the tool's role without opening the schema.

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

Usage Guidelines4/5

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

Gives clear conditions for use: BOTH application_id and claim_token from submission are required, and it explains that an id alone yields only public slot counts. It stops short of naming siblings explicitly, so routing relies on inference, but the when-to-use 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_vault_listBrowse the IC Vault of first-try recipes (public)A
Read-only
Inspect

List and filter the Immersive Commons Vault: procedures PROVEN to work, written so you clear them without exploring — agent-readiness playbooks and startup credit programs, same schema. No auth required. Filters: kind ('playbook'|'credit'), category, status ('proven'|'unproven'|'dead' — does the thing actually exist), evidence ('official'|'mixed'|'approx' — how well-sourced the facts are), verified_within_days (freshness), q (substring over title/summary/eligibility), sort, limit, offset. Returns: { ok, total, returned, offset, entries[], facets, notes }. Each entry carries first_try_success_label, which reads "not yet measured" — NOT "0%" — until an entry has enough real reports; first_try_success is null in that state and a client must not render it as a number. facets gives the live value counts per filter so you can narrow without guessing at the vocabulary. An unknown filter value is IGNORED and explained in notes rather than erroring. Use ic_vault_match to ask whether a specific company qualifies; use ic_vault_feedback_submit to report whether a recipe worked.

NameRequiredDescriptionDefault
qNoCase-insensitive substring over id, title, summary, category and eligibility prose.
kindNo'playbook' = a multi-step procedure with per-step verification and traps. 'credit' = a credit / discount / perk program with one or more offer tiers.
sortNo'recent' (default) = most recently verified first. 'status' = proven first.
limitNoDefault 100, max 200.
offsetNoDefault 0.
statusNoDoes the thing WORK / EXIST. 'proven' = someone ran it end to end. 'dead' = the named program does not exist and the entry is kept only so nobody chases it. This is a DIFFERENT axis from `evidence`.
categoryNoExact category string, case-insensitive. Read the live set from `facets.category` in any response rather than guessing — a miss returns an empty list plus the real values in `notes`.
evidenceNoHow well-sourced the FACTS are. 'official' = from the vendor's own page; 'approx' = aggregator/blog-sourced, verify before quoting. Orthogonal to `status`: a well-sourced entry about a dead program is official + dead.
verified_within_daysNoFreshness gate: keep only entries re-checked within N days. Note this is `last_verified` (when someone last looked), not `last_changed` (when the program last moved) — the two are deliberately not the same field.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the readOnly/openWorld annotations: states no auth is required, that unknown filter values are silently IGNORED and surfaced in `notes` rather than erroring, and gives the return envelope. The `first_try_success_label` warning ("not yet measured", not "0%", null must not be rendered as a number) is exactly the kind of trap-prevention context annotations cannot carry.

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

Conciseness4/5

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

Purpose is front-loaded and every sentence carries information; nothing is filler. It is one dense block, though — the return-shape detail and the label caveat would scan faster as separated lines, and 'same schema' is an ambiguous aside.

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 supplies the return envelope ({ ok, total, returned, offset, entries[], facets, notes }), explains what `facets` and `notes` are for, and flags the null-vs-zero pitfall. Nothing an agent needs to call it correctly or interpret results is missing.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already documents its enum values, defaults and the status/evidence orthogonality, so the description is largely restating structured data. The framework it adds (freshness gate, live facet vocabulary) mirrors what the schema already says, so baseline 3 applies.

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

Purpose5/5

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

Specific verb+resource ('List and filter the Immersive Commons Vault') plus the distinguishing scope: procedures proven to work, no auth. It explicitly separates itself from ic_vault_match, so an agent can pick between them without opening a schema.

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

Usage Guidelines5/5

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

Names the alternative and the condition that selects it ('use ic_vault_match to ask whether a specific company qualifies; use ic_vault_feedback_submit to report whether a recipe worked'). It also tells the agent to read `facets` to discover filter vocabulary instead of guessing, which is actionable usage guidance.

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

ic_vault_matchCheck which IC Vault entries a company qualifies for (public)A
Read-only
Inspect

Evaluate a company profile against the Vault's eligibility predicates and get a THREE-VALUED answer per entry: 'eligible' (every stated gate is definitively met), 'ineligible' (a stated gate is definitively failed), or 'indeterminate' — which means WE CANNOT TELL FROM WHAT THE VENDOR PUBLISHES, and is a real answer, never a soft no. No auth required. Nothing is ever reported 'eligible' while any gate is unknown or unstructured: a missing profile field lands in unknown (supply it and the verdict may flip), and a gate the program states only in prose lands in manual_review (a human has to read it). A non-hit against a NAMED partner list is manual_review too, never a failure, because every published partner list in the corpus is partial. Every profile field is OPTIONAL — a partial profile is the normal case and returns more indeterminate, not an error. Accepts the same category/kind/status/evidence/freshness filters as ic_vault_list. Returns: { ok, total_considered, counts, matches[], notes }. Each match carries failed[], unknown[], manual_review[], missing_prerequisites[] and per-tier verdicts.

NameRequiredDescriptionDefault
kindNoSame filter as ic_vault_list.
as_ofNoYYYY-MM-DD for deadline checks. Defaults to today.
holdsNoVault entry ids you already hold — used for prerequisite checks (e.g. holding NVIDIA Inception unlocks downstream offers).
stageNoFunding stage label. Distinct from the raised amount — some programs gate on one, some on the other.
statusNoSame filter as ic_vault_list.
qualifyNoReturn only matches with this verdict. OMIT IT to see all three — asking only for 'eligible' hides the 'indeterminate' set, which is usually where the real options are.
categoryNoSame filter as ic_vault_list.
evidenceNoSame filter as ic_vault_list.
headcountNoPeople on the team. Checked against any entry that gates on team size.
domain_tagsNo'ai-native' is stricter than 'ai': the model is the product, not a feature. The corpus draws that line itself.
affiliationsNoAffiliations some programs REQUIRE (an academic grant, a 501(c)(3) discount).
jurisdictionNoISO-3166 alpha-2 of the operating entity, e.g. 'US'.
business_typesNoTypes some programs EXCLUDE. Declaring one may disqualify you from those.
cash_balance_usdNoCash on hand, USD. Orthogonal to funding raised.
has_domain_emailNoCompany-domain email. A gmail address fails these gates.
has_web_presenceNoLive website + active socials a reviewer will look at.
company_age_yearsNoYears since incorporation.
funding_raised_usdNoTotal raised, USD. 0 means bootstrapped.
has_working_productNoShipped something real, as opposed to still evaluating.
prior_participationNoVault entry ids whose program you have already taken. Distinct from being a customer.
existing_customer_ofNoVault entry ids you are already a paying customer of — for 'new customers only' gates.
partner_affiliationsNoInvestors / accelerators you are affiliated with. An EXPLICIT empty array is a statement (no affiliations ⇒ you cannot be on anyone's approved list) and fails referral gates; OMITTING the field is 'unknown' and does not.
verified_within_daysNoSame filter as ic_vault_list.
months_since_last_roundNoMonths since the most recent round CLOSED. Some programs require 'funded within 12 months' — a Series A from 3 years ago fails that while passing a stage gate.
has_institutional_backingNoSomebody institutional wrote a cheque. Says nothing about WHO — that is `partner_affiliations`.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations by explaining the three-valued semantics, why `indeterminate` is a real answer, how missing fields become `unknown`, how prose-only gates become `manual_review`, and why non-hits on named partner lists are never failures. It also states that every profile field is optional and describes the return shape.

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-loads the central three-valued verdict model, which is appropriate for a 25-parameter eligibility tool. It is somewhat long and occasionally repetitive in emphasizing that `indeterminate` is not a soft no, but nearly every sentence adds behavioral context.

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

Completeness5/5

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

For a complex 25-parameter tool with no output schema, the description is complete enough: it explains the verdict model, missing-data behavior, auth expectation, partial-profile behavior, and the returned fields including `matches[]`, `failed[]`, `unknown[]`, `manual_review[]`, and per-tier verdicts.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds useful cross-parameter meaning: all profile fields are optional, missing fields affect verdicts via `unknown`, and the filter set mirrors ic_vault_list. It reinforces rather than duplicates schema semantics, especially around partial profiles and verdict interpretation.

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

Purpose5/5

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

States a specific verb and resource: evaluate a company profile against the Vault's eligibility predicates. It immediately distinguishes its role from ic_vault_list by focusing on three-valued eligibility verdicts and by saying it accepts the same filters as the list tool.

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

Usage Guidelines4/5

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

Gives clear usage context: no auth required, all profile fields are optional, and partial profiles are normal and return more `indeterminate` rather than errors. It also tells the agent to omit `qualify` to see all three verdicts. It does not explicitly say when to use this versus ic_vault_list beyond filter compatibility, so it falls short of a full when/when-not/alternatives statement.

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

ic_whats_newRead what's new at Immersive Commons (public)A
Read-only
Inspect

Returns the "What's New at IC" changelog, newest first, the same list the /whats-new page shows. Without a token you get the public entries. With a token tied to a person you get every entry at or below their membership ring, and the ones unlocked at their ring carry relevant:true ("new for you"). No auth required. Args: { limit?: integer 1-100 }. Returns { ok, tier, signed_in, total, entries: [{ ..., min_tier, relevant }] }.

NameRequiredDescriptionDefault
limitNoReturn at most this many entries, newest first. Default: all of them.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only cover read-only and closed-world, so this description carries the weight, and it does: ordering (newest first), the tier filtering rule, the meaning of relevant:true, and the no-auth path. It stops short of describing edge cases such as what an expired or malformed token does.

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

Conciseness4/5

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

Front-loaded with the resource and the return contract, and the tier rule is stated before the boilerplate args/returns block. The Args and Returns restatements duplicate structured fields and could be trimmed without loss.

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 no output schema, the description usefully sketches the return shape ({ ok, tier, signed_in, total, entries }) and explains the two fields that need explaining, relevant and min_tier. Complete enough for a read-only listing 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%, and the description only restates the same bounds ({ limit?: integer 1-100 }) without adding format or semantics the schema lacks. Baseline 3 applies when the schema already does the work.

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

Purpose5/5

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

A specific verb and resource: it returns the 'What's New at IC' changelog in newest-first order, and it anchors that to a concrete surface ('the same list the /whats-new page shows'). That separates it cleanly from siblings like ic_news_get or ic_signal_get_latest, which cover different 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 says exactly what you get with and without a token, including that no auth is required, which is genuine when-to-use guidance. What's missing is an explicit contrast with the nearest sibling (ic_news_get), so the agent has to infer that choice itself.

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

ic_workshop_crosstalk_feedRead the workshop room's agent-to-agent feed (public)AInspect

Returns the workshop room's live agent-to-agent traffic, the same feed the /workshop/crosstalk wall shows: the agents in the room (house and guest, with the skill each serves, call count and last seen) and the events between them (register, call, complete, fail) in ascending seq order. Pass since = the cursor from your last call to get only newer events. No auth required. Args: { since?: integer >= 0 (default 0) }. Returns { ok, cursor, degraded, agents[] (max 200), events[] (seq > since, max 100) }.

NameRequiredDescriptionDefault
sinceNoReturn only events with seq greater than this. Use the cursor from your previous call. Default 0.

TDQS

A4/5.0
Behavior2/5

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

The description itself is rich: no-auth, ascending seq order, cursor-based incremental reads, and explicit caps (agents max 200, events max 100) plus a 'degraded' flag — behavior an agent cannot get from the schema. However, this read-only, side-effect-free retrieval is labeled readOnlyHint=false and idempotentHint=false in the annotations, a direct conflict that could make an agent wrongly treat the call as a state-changing operation subject to caution.

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

Conciseness4/5

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

Front-loads what the tool returns, then the incremental pattern, then the shape of args and response in compact form; nearly every clause carries new information. Slightly run-on (the long first sentence mixes source, contents, and ordering) but no filler 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?

There is no output schema, yet the description fully specifies the return shape ({ ok, cursor, degraded, agents[], events[] }) including result caps and the pagination contract, so an agent knows how to loop. Combined with the no-auth note and the single optional parameter, nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description earns more by explaining the operational pattern behind 'since' — it is a resume cursor from your previous call, not an arbitrary offset — and by restating the default 0 and the seq > since semantics in use context.

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

Purpose5/5

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

States a specific verb and resource ('Returns the workshop room's live agent-to-agent traffic') and anchors it to a concrete artifact the user can recognize ('the same feed the /workshop/crosstalk wall shows'). It also enumerates the content (agents with skill/call count/last seen; register/call/complete/fail events), which separates it cleanly from the neighboring ic_workshop_status tool.

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

Usage Guidelines4/5

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

Gives clear operative guidance for the incremental case ('Pass since = the cursor from your last call to get only newer events') and states the auth precondition ('No auth required'). It does not name an explicit alternative or exclusion, but the purpose is narrow enough that the only real invocation choice — fresh vs. polled — is covered.

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

ic_workshop_statusRead the workshop room's scoreboard (public)A
Read-only
Inspect

Returns the A2A workshop room's public scoreboard, the same data the /workshop/live screen shows: how many people enrolled, how many of the room's skills are covered, the recipe, every skill's public manifest, the winner (display name and time only) and the join URL. No auth required. Args: none. Returns { ok, workshop, enrolled, skills_count, skills_covered, recipe, skills[], winner|null, join_url }.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this readOnly and closed-world, but the description adds real context: no auth is needed, the data is public, and the winner is deliberately limited to 'display name and time only' — a privacy constraint an agent could not infer from annotations. It stops short of covering freshness, caching, or the shape of the response when no winner exists beyond the `winner|null` hint.

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

Conciseness4/5

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

Front-loaded with the resource and its purpose, followed by auth, argument, and return-shape notes in a logical order. The field list is given twice — once in prose and again in the `Returns {...}` signature — which is mild duplication but not costly at this length.

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?

There is no output schema, so the description carries the full burden of telling the agent what comes back, and it does so with a complete field signature including the nullable winner. Combined with the auth note and zero-arg statement, an agent has everything needed to call and interpret this 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?

There are zero parameters, so the baseline is 4; the description explicitly says 'Args: none', which matches the empty schema and removes any doubt about required input. Nothing further is 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?

States a specific verb and resource (returns the workshop room's public scoreboard) and enumerates the exact contents: enrollment count, skills covered, recipe, manifests, winner, join URL. An agent can distinguish this from ic_workshop_crosstalk_feed or ic_donate without opening any schema.

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

Usage Guidelines3/5

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

The description establishes context by equating the output with the /workshop/live screen, which implies when an agent would want it, and clarifies 'No auth required'. However, it never says when to prefer this over a sibling or what state makes it the wrong choice (e.g. before the workshop opens). Usage is implied rather than directed.

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

Tool Schema Changelog

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

  1. 4 tool updates
    • Addedic_presentations_ask
    • Addedic_whats_new
    • Addedic_workshop_crosstalk_feed
    • Addedic_workshop_status
  2. 2 tool updates
    • Addedic_vault_list
    • Addedic_vault_match
  3. 13 tool updates
    • Changedic_donate1 field changed
      • addedInput schema / properties / tier / description
        Added value: +"A tier label, case-insensitive. Narrows tiers[] to that tier and adds selected_tier with the exact USDC amount to sign."
    • Changedic_donations_total1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"How many recent donations to return (1-50, default 10)."
    • Addedic_funko_levels
    • Addedic_member_profile_get
    • Changedic_news_get3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"How many items to return (1-25, default 20)."
      • addedInput schema / properties / min_velocity / description
        Added value: +"Keep only items corroborated by at least this many sources (default 1)."
      • addedInput schema / properties / q / description
        Added value: +"Case-insensitive text to find in title and summary (2-80 chars)."
    • Addedic_plans_guest_answer
    • Addedic_plans_guest_get
    • Addedic_plans_guest_respond
    • Changedic_signal_get_issue1 field changed
      • addedInput schema / properties / slug / description
        Added value: +"Issue slug, from ic_signal_list_issues."
    • Changedic_signal_get_latest1 field changed
      • addedInput schema / properties / include_stories / description
        Added value: +"true inlines the issue's stories (id, title, dek). Default false."
    • Changedic_signal_get_story2 fields changed
      • addedInput schema / properties / slug / description
        Added value: +"Issue slug, from ic_signal_list_issues."
      • addedInput schema / properties / story_id / description
        Added value: +"Story id within that issue, from ic_signal_get_issue."
    • Changedic_signal_list_issues1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"How many issues to return, newest first (1-50)."
    • Changedic_signal_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most results to return (1-50)."
      • addedInput schema / properties / q / description
        Added value: +"Text to search issues and stories for (2-120 chars)."
  4. 13 tool updates
    • Changedic_donate1 field changed
      • removedInput schema / properties / tier / description
        Removed value: -"A tier label, case-insensitive. Narrows tiers[] to that tier and adds selected_tier with the exact USDC amount to sign."
    • Changedic_donations_total1 field changed
      • removedInput schema / properties / limit / description
        Removed value: -"How many recent donations to return (1-50, default 10)."
    • Removedic_funko_levels
    • Removedic_member_profile_get
    • Changedic_news_get3 fields changed
      • removedInput schema / properties / limit / description
        Removed value: -"How many items to return (1-25, default 20)."
      • removedInput schema / properties / min_velocity / description
        Removed value: -"Keep only items corroborated by at least this many sources (default 1)."
      • removedInput schema / properties / q / description
        Removed value: -"Case-insensitive text to find in title and summary (2-80 chars)."
    • Removedic_plans_guest_answer
    • Removedic_plans_guest_get
    • Removedic_plans_guest_respond
    • Changedic_signal_get_issue1 field changed
      • removedInput schema / properties / slug / description
        Removed value: -"Issue slug, from ic_signal_list_issues."
    • Changedic_signal_get_latest1 field changed
      • removedInput schema / properties / include_stories / description
        Removed value: -"true inlines the issue's stories (id, title, dek). Default false."
    • Changedic_signal_get_story2 fields changed
      • removedInput schema / properties / slug / description
        Removed value: -"Issue slug, from ic_signal_list_issues."
      • removedInput schema / properties / story_id / description
        Removed value: -"Story id within that issue, from ic_signal_get_issue."
    • Changedic_signal_list_issues1 field changed
      • removedInput schema / properties / limit / description
        Removed value: -"How many issues to return, newest first (1-50)."
    • Changedic_signal_search2 fields changed
      • removedInput schema / properties / limit / description
        Removed value: -"Most results to return (1-50)."
      • removedInput schema / properties / q / description
        Removed value: -"Text to search issues and stories for (2-120 chars)."
  5. 3 tool updates
    • Addedic_plans_guest_answer
    • Addedic_plans_guest_get
    • Addedic_plans_guest_respond
  6. 1 tool update
    • Addedic_funko_levels
  7. 1 tool update
    • Addedic_member_profile_get
  8. 8 tool updates
    • Changedic_donate1 field changed
      • addedInput schema / properties / tier / description
        Added value: +"A tier label, case-insensitive. Narrows tiers[] to that tier and adds selected_tier with the exact USDC amount to sign."
    • Changedic_donations_total1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"How many recent donations to return (1-50, default 10)."
    • Changedic_news_get3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"How many items to return (1-25, default 20)."
      • addedInput schema / properties / min_velocity / description
        Added value: +"Keep only items corroborated by at least this many sources (default 1)."
      • addedInput schema / properties / q / description
        Added value: +"Case-insensitive text to find in title and summary (2-80 chars)."
    • Changedic_signal_get_issue1 field changed
      • addedInput schema / properties / slug / description
        Added value: +"Issue slug, from ic_signal_list_issues."
    • Changedic_signal_get_latest1 field changed
      • addedInput schema / properties / include_stories / description
        Added value: +"true inlines the issue's stories (id, title, dek). Default false."
    • Changedic_signal_get_story2 fields changed
      • addedInput schema / properties / slug / description
        Added value: +"Issue slug, from ic_signal_list_issues."
      • addedInput schema / properties / story_id / description
        Added value: +"Story id within that issue, from ic_signal_get_issue."
    • Changedic_signal_list_issues1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"How many issues to return, newest first (1-50)."
    • Changedic_signal_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most results to return (1-50)."
      • addedInput schema / properties / q / description
        Added value: +"Text to search issues and stories for (2-120 chars)."
  9. 1 tool update
    • Addedic_offerings_get
  10. 1 tool update
    • Addedic_member_card_get

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to browse public event listings from explore pages and fetch full detail for a single event — titles, descriptions, times, locations, host display names, and aggregate RSVP counts — across eight supported city regions. Keyless and read-only, with no guest lists, contact info, or authentication required.
    18 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with curated San Francisco Bay Area places, verified real-time events, and neighborhood-bound local concierge experiences, strictly limited to San Francisco, Oakland, and Berkeley.
    3
    216 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables discovery and submission of AI community events, hackathons, and meetups through search by location, type, and date range, plus newsletter subscription capabilities.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.