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 with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Immersive-commons/ic-skills
GitHub Stars
0

TDQS

A4.2/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have clearly distinct purposes (forms, donations, Signal, news, scheduling, Funko). However, there is overlap between the spatial beta tools (ic_spatial_beta_apply, ic_spatial_beta_program, ic_spatial_beta_status) and the generic forms tools (ic_forms_get, ic_forms_list, ic_forms_submit), since the beta application is essentially a form. Also, ic_news_get and ic_signal_* could be confused as both provide news-like content, though descriptions distinguish them. These are minor overlaps that descriptions help resolve.

Naming Consistency4/5

The naming is mostly consistent with a verb_noun pattern and snake_case, but there are deviations: ic_scheduling_manage_booking uses 'manage' instead of a specific verb, and some tools have long compound names like ic_scheduling_get_availability. Overall, the pattern is predictable and readable.

Tool Count3/5

22 tools is on the higher side, and the server covers multiple distinct domains (forms, donations, Signal, news, presentations, scheduling, spatial beta, Funko). While each tool may be necessary for its domain, the count feels heavy for a single server, potentially overwhelming an agent.

Completeness4/5

The server offers a broad surface covering donations, forms, Signal content, news, presentations, scheduling, spatial beta, and Funko. For scheduling, create booking is missing (only availability, meeting types, and manage booking are present), which is a notable gap. Other domains appear complete for their apparent scope, but the absence of a booking creation tool could cause agent dead ends.

Available Tools

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the first call without X-PAYMENT returns a 402 listing tiers in accepts[], that unknown tier labels return error_kind:'validation', and that MCP cannot run the 402 handshake itself. This prevents an agent from incorrectly assuming a donation was executed. No contradiction with the annotations is present.

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

Conciseness4/5

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

The description is long but information-dense; every clause contributes protocol-critical detail, including the manual POST steps that are necessary because the tool cannot complete the handshake. A more structured layout separating the tool's return behavior from the manual donation instructions would improve scannability, but there is no real fluff.

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

Completeness5/5

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

With no output schema, the description fully enumerates the return contents, the 402 flow, error behavior, optional donor body fields, and the donor wall location. It also explains how to complete the donation and what values to sign, so an agent has enough context to invoke the tool and act on the result.

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

Parameters5/5

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

The input schema only defines a bare optional 'tier' string with 0% description coverage, so the description must carry the full burden. It does so thoroughly: tier is case-insensitive, narrows tiers[] to one tier, adds selected_tier with the exact atomic USDC amount, and unknown labels return validation errors naming valid labels. An agent can validate and construct the argument correctly without any additional documentation.

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 that the tool returns donation tiers, the payTo wallet, asset + network, and a donate URL, so an agent knows the expected output. It is slightly less crisp because the title says 'Donate' while the body clarifies that MCP cannot execute the x402 handshake itself, leaving the tool's exact role somewhat implicit. It is still clearly distinguished from the sibling read/list tools by its donation-specific scope.

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

Usage Guidelines4/5

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

The description explicitly says no auth is required and gives a manual POST procedure for completing the donation, so an agent understands that the actual payment must happen out-of-band. It does not explicitly compare this tool to siblings such as ic_donations_total, but the context is clear enough to prevent misuse.

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

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A4.6/5.0
Behavior4/5

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

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

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

Conciseness5/5

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

Two sentences, efficient, front-loaded with key information.

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

Completeness5/5

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

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

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

Parameters5/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

Explicitly states no auth required and that it's the public donor wall data. Could improve by contrasting with ic_donate.

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

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

ParametersJSON Schema
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.

ParametersJSON Schema
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.

ParametersJSON Schema
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.

ParametersJSON Schema
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.

ParametersJSON Schema
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 either { signal, gte } (a measurable: commits this week, GLM tokens burned, events attended, days of tenure) or { minTier } (a membership ring). 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional filter — return only unlocks of this kind.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, and the description reinforces this with 'No auth required; this is the rules table, not anybody's progress.' It adds valuable behavioral context beyond the annotation, including the structure of conditions ('Conditions read as either { signal, gte } ... or { minTier }') and the default for items without `requires`. This enriches agent understanding without contradicting the annotation.

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

Conciseness5/5

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

Although the description is multi-sentence, every clause serves a purpose: scope, auth, use cases, condition semantics, sibling pointer, args, and return shape. The main action is front-loaded in the title and first sentence. There is no fluff or repetition, making it appropriately sized for the tool's complexity.

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

Completeness5/5

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

Since there is no output schema, the description compensates by specifying the return structure `{ ok, count, items[{ id, kind, label, blurb?, rarity, requires?, asset? }] }` and explaining the `requires` condition shapes. It also covers auth, use cases, and default granting, making the tool fully understandable in context, even without structured output definitions.

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 single parameter `kind` is fully described by the schema with an enum and description: 'Optional filter — return only unlocks of this kind.' The description merely repeats the enum values in the Args line ('kind?: 'clip'|'prop'|'skin'|'stage'|'capability''), adding no new semantic detail. With 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'The full catalog of things a Funko Me figure can earn — animation clips, props, skins, stages — with the condition that unlocks each one.' It uses a specific verb (list) and resource (catalog), and distinguishes itself from the sibling tool ic_funko_progress by explicitly directing progress queries there.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool: 'Use it to explain to a human WHY something is locked, or to show what is worth doing on the floor.' It also names the alternative: 'For one member's actual progress against these, call ic_funko_progress.' This is clear, actionable guidance with explicit exclusions.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
limitNo
min_velocityNo

TDQS

A4.7/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 that no auth is required and specifies ranking behavior (highest-velocity-first, ties preserve feed order). It stops short of error/rate-limit behavior, but the added context is 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?

Front-loaded with purpose and the sibling distinction, then return fields, then a compact Args block. Dense but nearly every clause carries information; only minor tightening possible.

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 enumerates return fields (url, velocity, summary, dek, beat, date, publishedAt, image, focal) and the ranking order, so an agent knows exactly what to expect. Nothing needed to call it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates: limit (1-25, default 20), min_velocity (>=1, default 1, explained as corroboration by >= N sources), and q (2-80 chars, case-insensitive substring over title + summary). Every parameter's meaning and constraint is documented.

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 newagg's velocity-ranked AI news') and explicitly distinguishes itself from the ic_signal_* surface. An agent can route to the correct tool 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?

Explicitly names the alternative surface ('a DIFFERENT surface from ic_signal_* which serves THE SIGNAL, the weekly editorial dispatch') and the condition that separates them: raw aggregator firehose vs curated editorial dispatch. Clear when-to-use routing.

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

ic_presentations_getGet one Immersive Commons presentation by session (public)A
Read-only
Inspect

Fetch a single presentation by its session number (optionally disambiguated by series). Session numbers are VCN-only; non-VCN talks (ClawCamp, standalone Talks) have no session_no — discover those via ic_presentations_list (filter series='ClawCamp'). No auth required. Returns the full ingest-friendly record. Args: { session_no: number, series?: string }. Returns: { scaffold, presentation: { session_no, series, title, date, format, public_url, deployed, speaker?, event?, summary?, content? } } where content is the talk's full curated llms.txt distillation (present for decks that ship one — read it instead of fetching the deck). On a miss, an error listing the available { series #session_no } entries. If session_no alone is ambiguous across series, the newest match wins — pass series to target one exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
seriesNoOptional series to disambiguate when the same session_no exists in multiple programs (e.g. a VCN #1 and a ClawCamp #1).
session_noYesThe session number within its series (from ic_presentations_list).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 100; max 200. Applied to the flat newest-first list before grouping.
formatNoOptional filter to one artifact kind.
seriesNoOptional filter to one series/program (case-insensitive), e.g. 'VCN', 'ClawCamp', 'Talk'. See the `series` array in a prior response for the live set.

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.

ParametersJSON Schema
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.

ParametersJSON Schema
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. 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} } or { ok:false, error_kind } from not_found | slot_taken | outside_window | too_soon | rate_limited | validation | transient. No auth required.

ParametersJSON Schema
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
Behavior5/5

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

Goes well past the annotations: token-as-credential model, constant-time comparison, wrong-token and missing-booking both returning not_found (enumeration defense), cancel idempotency so a retry after a dropped response is a success, reschedule atomicity so a refused move leaves the original untouched, and the new booking.id plus superseded payload behavior for stale manage links. This is exactly the behavioral context a mutation tool needs.

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?

Information-dense but front-loaded with rhetorical framing ('an agent that has to ask its human to click a link in an email simply ghosts') before the operational facts. Every paragraph carries real content, yet the prose is long and capitalized emphasis is overused, which slows an agent scanning for the essentials.

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, and the description compensates fully by enumerating the success payload (booking, superseded, member, meeting_type, location_url, ics, calendar) and the full error_kind list. For a 6-param, three-action tool with no output schema, nothing an agent needs to call it or interpret a failure 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%, but the description adds meaning on top: reschedule's start must come from a fresh availability call because old responses go stale, the service requires idempotency_key on reschedule and mints one if omitted, reason is member-visible, and the full arg list is restated. It doesn't add much beyond the schema on booking_id/cancel_token, which the schema already documents.

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 make clear this is read/cancel/reschedule for a single booking keyed by its cancel_token, and the action enum semantics are spelled out, so it is distinguishable from ic_scheduling_get_availability and the other siblings. The opening sentence is metaphor ('The way OUT of a booking') rather than a plain verb+resource statement, so the purpose takes a few lines to land.

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

Usage Guidelines4/5

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

Gives real routing guidance: cancel/reschedule must be confirmed with the human first, reschedule needs a start from a FRESH ic_scheduling_get_availability call (implying the alternative of re-querying availability), and idempotency_key should be brought and reused on retry. No explicit when-not-to-use case beyond that, so it stops short of a 5.

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

ic_signal_get_issueGet a full SIGNAL issue (public)A
Read-only
Inspect

Fetch one issue by slug. Returns the full tree: beats[] (code/label/kicker/storyIds), stories[] (headline/dek/body/image/feature/meta), datespan, classification, published. No auth required. Args: { slug: string (e.g. "issue-05") }.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

A4.3/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. Description adds valuable behavioral info: 'No auth required' and explains the return structure (full tree). Does not contradict annotations.

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

Conciseness5/5

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

Three sentences with no filler. First sentence defines purpose, second lists return fields, third notes auth and parameter format. Efficiently front-loaded.

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

Completeness5/5

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

For a simple read tool with one parameter and no output schema, the description covers purpose, parameter format, authorization, and return structure. No obvious gaps given the tool's low complexity.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden. It provides an example argument ('issue-05') and clarifies the parameter's role (slug). Adds meaning beyond the schema's type and constraints.

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

Purpose5/5

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

Description clearly states 'Fetch one issue by slug' with specific verb and resource. It lists the return structure (beats, stories, datespan, etc.) and distinguishes from siblings like ic_signal_get_story and ic_signal_list_issues.

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

Usage Guidelines3/5

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

Description implies usage context (fetch one issue), but does not explicitly state when to use vs alternatives or when not to use. No exclusions or alternative tool references are provided.

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

ic_signal_get_latestGet the latest SIGNAL issue summary (public)A
Read-only
Inspect

Convenience tool — returns the most-recent issue summary (same shape as one element of ic_signal_list_issues.issues[]). No auth required. Args: { 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) }.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_storiesNo

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, so the read-only nature is covered. The description adds valuable behavior context: no auth required, include_stories defaults to false, and the stories are inlined as stories[] with id/title/dek. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is compact and front-loaded: it states what the tool returns first, then gives shape and behavior details. Every sentence adds useful information, and there is no redundant repetition of the title or name.

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

Completeness5/5

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

Even without an output schema, the description sufficiently describes the return value by referencing the list_issues element shape and the optional stories fields. It covers auth requirements, the single parameter's behavior, and the relationship to sibling tools, so an agent has enough context to invoke it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It explains exactly what include_stories does, its default value, and the resulting shape of the response. This fully compensates for the empty schema descriptions.

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

Purpose5/5

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

The description uses a specific verb and resource: 'returns the most-recent issue summary' and clarifies the exact shape ('same shape as one element of ic_signal_list_issues.issues[]'). It clearly distinguishes itself from siblings by focusing on 'latest' and referencing the related tools it complements.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: it is a 'convenience tool' for the latest issue summary, and it explains how include_stories can save a follow-up ic_signal_get_issue call. It does not explicitly enumerate when not to use it versus list or search, but the intended usage is strongly implied.

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

ic_signal_get_storyGet a single SIGNAL story (public)A
Read-only
Inspect

Fetch one story by (issue slug, story id). The story id is the kebab-case slug stored on each story (e.g. "grok-build", "shai-hulud-2"). Returns the story tree including body paragraphs, feature card, image, and source citations. No auth required. Args: { slug: string, story_id: string }.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
story_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only (readOnlyHint=true). The description adds context: no auth required and the return structure (body paragraphs, feature card, image, source citations). No destructive behavior implied, and no contradictions.

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

Conciseness4/5

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

Description is brief (4 sentences) and front-loaded with the main action. Could be slightly tighter, but no extraneous information.

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

Completeness4/5

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

For a simple get operation with two params and no output schema, the description covers purpose, return content, and auth. Lacks details on errors or pagination, but those are not critical here.

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

Parameters3/5

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

Schema has 0% description coverage. Description provides an example and format for story_id ('kebab-case slug') but does not explain the slug parameter beyond 'issue slug'. Minimal added value beyond schema constraints.

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

Purpose5/5

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

The description clearly states the action (fetch/get), the resource (a single story), and the identification method (issue slug + story id). It distinguishes from siblings like ic_signal_get_issue and ic_signal_search by specifying it retrieves exactly one story by two keys.

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

Usage Guidelines4/5

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

The description notes 'No auth required', which is a usage precondition. It implicitly tells when to use this tool (when you have the exact slug and story_id) but lacks explicit negative guidance or alternatives.

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

ic_signal_list_issuesList THE SIGNAL issues (public)A
Read-only
Inspect

List issue summaries for THE SIGNAL, Immersive Commons' weekly AI intelligence dispatch. Newest first. No auth required. Args: { limit?: number (max 50, default 10) }. Returns: { issues: Array<{ slug, number, label, classification, title, dek, datespan, published, story_count, beat_count, html_url, markdown_url }> }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), it adds ordering behavior, authentication requirements, and the exact return structure, giving full insight into what the tool does.

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

Conciseness5/5

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

Efficient two-sentence description plus concise args/returns block, no unnecessary words, and key information is front-loaded.

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

Completeness5/5

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

Covers purpose, ordering, auth, parameters, and return types. Without an output schema, the explicit return structure ensures the agent knows exactly what to expect.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by specifying the parameter's optionality, default value, and min/max constraints, adding meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'issue summaries for THE SIGNAL', distinguishing it from sibling tools that get a specific issue, latest, or search.

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

Usage Guidelines4/5

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

Provides clear context (newest first, no auth required) but does not explicitly mention when to use this tool versus alternatives like ic_signal_get_issue or ic_signal_search.

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

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

Submit an application to the 50-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 }.

ParametersJSON Schema
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.7/5.0
Behavior5/5

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

Goes far beyond the sparse annotations (readOnlyHint=false, idempotentHint=false) by disclosing real-world stakes: it 'WRITES a real application under a real person's name and commits them to a 5-week in-person NDA-bound program.' It also reveals edge-case behavior (a second application is refused, not merged), the one-time-only claim_token display requirement, and the auth model (no auth required; token only attributes). This is deep behavioral disclosure with no annotation contradiction.

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

Conciseness5/5

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

Dense but every sentence earns its place: the highest-stakes warning (real commitment) is front-loaded, followed by the guardrail, prerequisite, duplicate-handling, and output-token warning. For a high-stakes 14-parameter write operation, the length is fully justified with zero redundancy.

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

Completeness5/5

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

With no output schema present, the description supplies the exact return shape 'Returns: { ok, application_id, claim_token, status, failed_gates, cohort, message }' and explains how to handle the critical claim_token. It covers prerequisites, consequences, edge cases, and auth behavior, making it complete for an agent to invoke correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by flagging the nda_ack, commit_5_weeks, and in_person_sf parameters as 'promises they have to keep' that must be confirmed with the human, and by pointing to ic_spatial_beta_program for exact allowed values on enum-backed fields like profile and availability.

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?

Opens with a specific verb+resource: 'Submit an application to the 50-person spatial-computing beta.' The description clearly differentiates this from the sibling ic_spatial_beta_program by instructing the agent to call that tool first for the catalog, and the scope (applying versus status/program info) is unmistakable.

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

Usage Guidelines4/5

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

Explicitly directs the agent to 'Call ic_spatial_beta_program first for the catalog and the exact allowed values,' giving a named prerequisite and alternative. It does not explicitly spell out when NOT to use ic_spatial_beta_status, though the apply-versus-check distinction is reasonably clear from naming and context.

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 (50 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 and openWorldHint=false, so the safety profile is covered. The description adds value beyond them by stating 'No auth required' and disclosing the return shape ({ ok, form, cohort: { size, approved, remaining } }), which is meaningful since there is no output schema. It stops short of describing pagination or freshness, hence a 4 rather than 5.

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

Conciseness4/5

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

It is front-loaded with the core purpose and every sentence carries information the caller needs (terms, question catalog, gating logic, invocation order). The parenthetical listing of all program terms is dense and slightly long, but each detail is decision-relevant for a prospective applicant, so it earns its place rather than padding.

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 fills the gap by naming the return shape and the key fields (form, cohort size/approved/remaining). It covers what the tool is, what it returns, when to call it, auth requirements, and how to interpret the output for the follow-up apply step. Nothing essential is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The 'Args: none' line states this explicitly, which is a small clarity win.

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 exactly what the tool returns: the beta terms, every application question, and the reason each is asked. It distinguishes itself from its most relevant sibling by explicitly naming ic_spatial_beta_apply and positioning itself as the prerequisite. An agent can tell what this is for without opening anything else.

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 an explicit when-to-use rule ('Call this BEFORE ic_spatial_beta_apply so you answer well instead of guessing') and an actionable decision heuristic via the three `gates` booleans, noting a no to any likely means rejection. This is routing guidance plus eligibility guidance, not vague context.

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.

ParametersJSON Schema
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.

Tool Schema Changelog

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

  1. 3 tool updates
    • Addedic_scheduling_get_availability
    • Addedic_scheduling_list_meeting_types
    • Addedic_scheduling_manage_booking
  2. 1 tool update
    • Addedic_forms_withdraw
  3. 4 tool updates
    • Addedic_forms_get
    • Addedic_forms_list
    • Addedic_forms_my_submission
    • Addedic_forms_submit
  4. 5 tool updates
    • Changedic_donate1 field changed
      • addedInput schema / properties / tier
        Added value: +{
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedic_signal_get_latest1 field changed
      • addedInput schema / properties / include_stories
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedic_spatial_beta_apply
    • Addedic_spatial_beta_program
    • Addedic_spatial_beta_status
  5. 184 tool updates
    • Removedfloor10_extract_event_metadata
    • Removedfloor10_get_my_floor_member
    • Removedfloor10_list_claimable_events
    • Removedfloor10_list_my_pending
    • Removedfloor10_submit_highlight
    • Removedfloor10_upload_image
    • Removedfloorcast_effective_features
    • Removedfloorcast_my_roles
    • Removedfloorcast_preview_ai_curation
    • Removedfloorcast_push
    • Removedfloorcast_run_ai_curation
    • Removedfloorcast_set_ai_policy
    • Removedfloorcast_set_feature_availability
    • Removedfloorcast_set_feature_enabled
    • Removedfloorcast_unpush
    • Removedic_activity_get_recent
    • Removedic_admin_agent_audit_search
    • Removedic_admin_agent_client_list
    • Removedic_admin_agent_client_register
    • Removedic_admin_agent_client_revoke
    • Removedic_admin_approve_endpoint
    • Removedic_admin_approve_event
    • Removedic_admin_approve_highlight
    • Removedic_admin_approve_key_request
    • Removedic_admin_approve_ownership
    • Removedic_admin_approve_tier_request
    • Removedic_admin_deny_key_request
    • Removedic_admin_deny_tier_request
    • Removedic_admin_funko_grant
    • Removedic_admin_funko_restore
    • Removedic_admin_funko_takedown
    • Removedic_admin_leaderboard_inspect
    • Removedic_admin_list_feedback
    • Removedic_admin_list_members
    • Removedic_admin_list_pending_endpoints
    • Removedic_admin_list_pending_events
    • Removedic_admin_list_pending_highlights
    • Removedic_admin_list_pending_key_requests
    • Removedic_admin_list_pending_ownership
    • Removedic_admin_list_pending_tier_requests
    • Removedic_admin_list_recent_startup_content
    • Removedic_admin_reject_endpoint
    • Removedic_admin_reject_event
    • Removedic_admin_reject_highlight
    • Removedic_admin_reject_ownership
    • Removedic_admin_resolve_feedback
    • Removedic_admin_takedown_startup_content
    • Removedic_agent_directory_lookup
    • Removedic_agent_inbox_block
    • Removedic_agent_inbox_get_thread
    • Removedic_agent_inbox_list_blocks
    • Removedic_agent_inbox_list_threads
    • Removedic_agent_inbox_reply
    • Removedic_agent_inbox_send_envelope
    • Removedic_agent_inbox_unblock
    • Removedic_agent_inbox_undo
    • Removedic_agent_outbox_list
    • Removedic_agent_policy_get
    • Removedic_agent_policy_set
    • Removedic_capabilities
    • Removedic_context_get
    • Removedic_directory_search
    • Removedic_endpoint_get
    • Removedic_endpoint_register
    • Removedic_endpoint_search
    • Removedic_endpoint_set_listed
    • Removedic_events_get
    • Removedic_events_get_live
    • Removedic_events_list_upcoming
    • Removedic_events_next
    • Removedic_events_request
    • Removedic_events_rsvp
    • Removedic_feedback_get_status
    • Removedic_feedback_list_mine
    • Removedic_feedback_submit
    • Removedic_files_get
    • Removedic_files_grant
    • Removedic_files_list
    • Removedic_files_put
    • Removedic_files_update
    • Removedic_folder_create
    • Removedic_folder_get
    • Removedic_folder_grant
    • Removedic_folder_update
    • Removedic_folders_list
    • Removedic_funko_get
    • Removedic_funko_get_mine
    • Removedic_funko_progress
    • Removedic_funko_set_public
    • Removedic_get_my_membership
    • Removedic_get_my_workshop_key
    • Removedic_get_my_zai_key
    • Removedic_get_my_zai_key_usage
    • Removedic_hack_admin_decide_application
    • Removedic_hack_admin_list_applications
    • Removedic_hack_admin_phase
    • Removedic_hack_admin_role
    • Removedic_hack_application_form
    • Removedic_hack_application_status
    • Removedic_hack_apply
    • Removedic_hack_bounty_post
    • Removedic_hack_chat_moderate
    • Removedic_hack_chat_post
    • Removedic_hack_chat_read
    • Removedic_hack_checkin
    • Removedic_hack_credits_board
    • Removedic_hack_credits_list
    • Removedic_hack_credits_mark
    • Removedic_hack_get
    • Removedic_hack_judge_list
    • Removedic_hack_judge_score
    • Removedic_hack_me
    • Removedic_hack_my_feedback
    • Removedic_hack_photo_review
    • Removedic_hack_photo_submit
    • Removedic_hack_photos_list
    • Removedic_hack_photos_mine
    • Removedic_hack_register
    • Removedic_hack_results
    • Removedic_hack_roster
    • Removedic_hack_sign_nda
    • Removedic_hack_submit
    • Removedic_hack_team_create
    • Removedic_hack_team_join
    • Removedic_hack_team_leave
    • Removedic_hack_team_list
    • Removedic_hack_team_update
    • Removedic_hack_withdraw
    • Removedic_headsets_admin_clear_oos
    • Removedic_headsets_admin_force_return
    • Removedic_headsets_admin_list_active_lends
    • Removedic_headsets_admin_list_open_incidents
    • Removedic_headsets_admin_mark_oos
    • Removedic_headsets_admin_resolve_incident
    • Removedic_headsets_attest_member
    • Removedic_headsets_check_waiver
    • Removedic_headsets_checkout
    • Removedic_headsets_get_attestation_status
    • Removedic_headsets_get_my_lend
    • Removedic_headsets_get_unit
    • Removedic_headsets_list_inventory
    • Removedic_headsets_mark_sop_complete
    • Removedic_headsets_report_damage
    • Removedic_headsets_return
    • Removedic_headsets_sign_waiver
    • Removedic_health
    • Removedic_leaderboard_connect_github
    • Removedic_leaderboard_get_board
    • Removedic_leaderboard_get_status
    • Removedic_leaderboard_set_optin
    • Removedic_membership_set_profile
    • Removedic_membership_upload_photo
    • Removedic_prints_bed_specs
    • Removedic_prints_cancel
    • Removedic_prints_confirm_handoff
    • Removedic_prints_find_by_origin
    • Removedic_prints_get
    • Removedic_prints_handoff_status
    • Removedic_prints_list
    • Removedic_prints_submit
    • Removedic_prints_submit_on_behalf
    • Removedic_prints_update
    • Removedic_request_tier
    • Removedic_request_workshop_key
    • Removedic_request_zai_key
    • Removedic_research_ask
    • Removedic_research_submit
    • Removedic_resources_book
    • Removedic_resources_list
    • Removedic_rooms_add_channel
    • Removedic_rooms_create
    • Removedic_rooms_join
    • Removedic_rooms_list
    • Removedic_rooms_read
    • Removedic_rooms_send
    • Removedic_startup_list
    • Removedic_startup_post_news
    • Removedic_startup_request_ownership
    • Removedic_startup_update_profile
    • Removedic_token_verify
    • Removedic_transcribe_get
    • Removedic_transcribe_list
    • Removedic_transcribe_status
    • Removedic_transcribe_submit
  6. 5 tool updates
    • Addedic_hack_my_feedback
    • Addedic_hack_photo_review
    • Addedic_hack_photo_submit
    • Addedic_hack_photos_list
    • Addedic_hack_photos_mine
  7. 2 tool updates
    • Changedic_hack_judge_score1 field changed
      • addedInput schema / properties / on_behalf_of
        Added value: +{
        +  "description": "Organizer only: the judge member id this score belongs to.",
        +  "maxLength": 128,
        +  "type": "string"
        +}
    • Changedic_hack_team_list1 field changed
      • addedInput schema / properties / submitted_only
        Added value: +{
        +  "description": "Only teams that have submitted.",
        +  "type": "boolean"
        +}
  8. 2 tool updates
    • Changedic_agent_inbox_send_envelope1 field changed
      • changedInput schema / properties / to / description
        Previous value: -"Recipient IC member slug (e.g. 'nicholas-e', 'michalis'). Must be addressable — their inbox_status must be 'open'. Resolve the slug and check inbox_status via ic_agent_directory_lookup."New value: +"Recipient IC member slug (e.g. 'nicholas-e', 'michalis'). Resolve the slug via ic_agent_directory_lookup and check `addressable_by_you` on the hit, NOT `inbox_status`: inbox_status is the recipient's posture, and an open inbox can still refuse you because the send-side intent scopes are tier-gated. If addressable_by_you is false, that hit's blocked_intents names the scope you are missing."
    • Addedic_hack_team_update
  9. 3 tool updates
    • Addedic_hack_credits_board
    • Addedic_hack_credits_list
    • Addedic_hack_credits_mark
  10. 3 tool updates
    • Addedic_hack_chat_moderate
    • Addedic_hack_chat_post
    • Addedic_hack_chat_read

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.