Skip to main content
Glama

Server Details

Read and act on your own Dynamite Circle membership data via the public DC Member API.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
dynamitecircle/dc
GitHub Stars
5

Glama MCP Gateway

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

MCP client
Glama
MCP server

Full call logging

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

Tool access control

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

Managed credentials

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

Usage analytics

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

100% free. Your data is private.
Tool DescriptionsA

Average 4.3/5 across 75 of 85 tools scored. Lowest: 3.3/5.

Server CoherenceB
Disambiguation4/5

Despite the large number of tools, each has a detailed description that clearly distinguishes its purpose. Minor potential overlaps (e.g., search vs. resource-specific search, own vs. other's agenda) are well documented, so an agent can differentiate them.

Naming Consistency4/5

Tool names follow a consistent verb_noun or resource_subresource_action pattern in snake_case. A few tools are just nouns (e.g., 'alerts', 'announcements'), but these are top-level listing endpoints; overall the naming is predictable.

Tool Count2/5

85 tools is very high for a single server, making it difficult for an agent to efficiently explore and select the right tool. While each tool seems justified for the broad domain, the count feels overwhelming and could be streamlined.

Completeness3/5

The tool surface covers most major areas (events, trips, chapters, rooms, search, profile, etc.) with CRUD or lifecycle operations. However, the lack of a 'send message' tool for rooms is a notable gap, and some resources (e.g., events) are read-only on creation/update, limiting agent workflows.

Available Tools

85 tools
alertsAInspect

GET /alerts — List your alerts

Returns the user's alerts, ordered by creation date (newest first). Maximum 50 results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

No annotations exist, so the description carries the full burden. It discloses ordering by creation date and a maximum of 50 results, which is good behavioral context for a read operation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the HTTP method and resource path, and every word adds value. No unnecessary information.

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

Completeness5/5

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

Given zero parameters and no output schema, the description fully covers what the tool does: returns alerts with ordering and a limit. No gaps.

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

Parameters3/5

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

There are zero parameters and schema coverage is 100%, so baseline is 3. The description adds no parameter-specific semantics (none exist), but it does reinforce the tool's overall purpose.

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

Purpose5/5

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

The description explicitly states the tool lists alerts, with ordering and a limit ('newest first', 'Maximum 50 results'). It distinguishes from sibling tools like alerts_create or alerts_by_id_delete.

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 tool name 'alerts' and description clearly indicate it's for listing alerts. Sibling tools for create, update, delete provide implicit context, but no explicit 'when not to use' guidance is given.

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

alerts_by_id_deleteAInspect

DELETE /alerts/:alertID — Deactivate an alert

Soft-delete an alert by setting active: false. The alert's history is preserved for past digests. Use PATCH /alerts/:alertID with active: true to reactivate.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
alertIDYesThe alert ID to delete
Behavior5/5

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

No annotations provided, so description fully covers behavior: soft-delete by setting active:false, history preserved, mutation of account data. Clearly flags as WRITE operation.

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

Conciseness5/5

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

Four sentences with clear front-loaded purpose. Every sentence adds value (effect, preservation, reactivation, warning). No redundancy.

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

Completeness5/5

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

Despite no output schema, the description fully explains the operation's effect, mutation, and history preservation. Complete for a simple soft-delete tool.

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

Parameters3/5

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

Only one parameter 'alertID' with schema description; description adds no extra meaning beyond what schema already provides. Schema coverage is 100%, so baseline 3.

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

Purpose5/5

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

The description clearly states the tool deactivates an alert via soft-delete, using specific verb 'Deactivate' and resource 'alert'. It distinguishes from siblings by referencing PATCH for reactivation.

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 soft-delete and mentions alternative PATCH for reactivation. Provides usage context (WRITE operation) but lacks direct comparison to other sibling tools like alerts_create.

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

alerts_by_id_updateAInspect

PATCH /alerts/:alertID — Update an alert

Update one or more fields on an existing alert. Only provide the fields you want to change.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew alert name
activeNoWhether the alert is active
alertIDYesThe alert ID to update
descriptionNoNew alert description
notifyDailyNoWhether daily digests are enabled
notifyWeeklyNoWhether weekly digests are enabled
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly warns that this is a WRITE operation that mutates DC account data, and clarifies partial-update semantics ('Only provide the fields you want to change'). This discloses the key behavioral trait without needing annotations.

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

Conciseness5/5

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

The description is extremely concise: three sentences covering the endpoint, the update behavior, and a mutation warning. It is front-loaded and every sentence earns its place without redundancy.

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

Completeness4/5

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

For a partial-update tool with a comprehensive schema and no output schema, the description is reasonably complete. It covers the core behavior, the mutating nature, and the usage pattern. It doesn't cover response details or error cases, but these are not specified in the schema either, and the description is adequate for the tool's complexity.

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

Parameters4/5

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

Schema coverage is 100% with detailed descriptions for all 6 parameters. The description adds valuable semantic context beyond the schema by explaining that only provided fields will be changed, which is essential for correct partial updates. This elevates the score above the baseline of 3.

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

Purpose5/5

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

The description clearly states 'Update an alert' and specifies the PATCH /alerts/:alertID endpoint, making it obvious this is the update operation for a specific alert. This distinguishes it from siblings like alerts_create and alerts_by_id_delete.

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 that this tool updates existing alerts and instructs users to provide only the fields they want to change. While it doesn't explicitly mention alternatives or exclusion scenarios, the context is unambiguous enough for tool selection among siblings.

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

alerts_createAInspect

POST /alerts — Create an alert

Create a new alert. The system will search for matching content and deliver digests on the configured frequency. Maximum 10 active alerts per user.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYesAlert description — what the alert should look for (max 500 chars)
notifyDailyYesWhether daily digests are enabled
notifyWeeklyYesWhether weekly digests are enabled
Behavior4/5

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

The description explicitly warns '⚠️ WRITE operation: this mutates your DC account data,' which no annotations provide. It also discloses that the system will search and deliver digests, and sets a maximum of 10 alerts, adding behavioral context beyond the schema. However, it does not cover error responses or permission prerequisites.

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

Conciseness5/5

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

The description is concise: a headline, a behavior sentence, a limit sentence, and a mutation warning. All sentences carry actionable information and it is front-loaded with the endpoint and purpose.

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

Completeness4/5

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

For a simple create tool with fully described parameters and no output schema, this is nearly complete. It covers the action, system behavior, and a key constraint. The only missing piece is expected return value or error handling, but the schema and simplicity compensate.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already describes each parameter's purpose. The tool description adds no additional parameter-level details, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Create an alert' and explains what an alert does (searches for matching content, delivers digests). It distinguishes from sibling tools like alerts_by_id_update and alerts_by_id_delete by focusing on creation.

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

Usage Guidelines3/5

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

The description implies when to use this tool (to create a new alert) but does not explicitly discuss alternatives or conditions like when to update an existing alert instead. The limit of 10 active alerts is noted but not framed as a usage guideline.

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

announcementsAInspect

GET /announcements — List recent announcements

Returns the most recent announcements from DC's broadcast channels — official updates from the DC team and chapter staff (DC, DCBKK, DCMEX, DC BLACK, etc.). Same content you see in the app's announcements channels, in a flat newest-first feed.

Visibility mirrors the app: DC members see DC-scope announcements; DC BLACK members and staff additionally see DC BLACK announcements. There is no posting, replying, or per-channel filtering — announcements are intentionally one-way and minimal.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax announcements to return (1-50)
cursorNoOpaque cursor from a previous response's `nextCursor`
Behavior5/5

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

With no annotations, the description completely carries the burden. It explicitly states read-only behavior, visibility rules based on membership, and the one-way nature. It sets proper expectations without 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?

The description is succinct (6 sentences), front-loaded with the endpoint and purpose, and each sentence adds value. No redundant or extraneous information.

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

Completeness5/5

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

Given no output schema, the description explains the output format (flat newest-first feed, same as app), visibility rules, and limitations (no per-channel filtering). It covers all necessary aspects for an agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions 'opaque cursor' and 'nextCursor', which aligns with the schema but adds no extra semantics beyond what the parameter descriptions already provide.

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

Purpose5/5

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

The description clearly states the tool is a GET endpoint to list recent announcements from DC's broadcast channels. It distinguishes itself from siblings like 'announcements_latest' by specifying it returns a flat, newest-first feed. The verb 'list' and resource 'announcements' are explicit.

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

Usage Guidelines4/5

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

The description provides good usage context: it explains visibility mirrors the app, and there is no posting/replying/filtering. It implicitly suggests when to use (to read announcements) but does not explicitly compare with siblings like 'announcements_latest' or state when not to use.

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

announcements_latestAInspect

GET /announcements/latest — Latest announcement per channel (quick overview)

Returns the single most recent announcement from each visible channel — a one-shot overview rather than a paged feed. Useful as a "what's new across DC?" quick check before drilling into the full feed via GET /announcements.

Visibility rules are identical to /announcements: DC members see DC-scope channels; DC BLACK members and staff additionally see DC BLACK channels. No pagination — the result size equals the number of dispatch channels you can see (currently ~4).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it is a GET (read-only), returns announcements per visible channel, no pagination, result size equals number of channels (~4), and visibility rules identical to /announcements. No contradictions or omissions.

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

Conciseness5/5

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

The description is concise (5 sentences) and well-structured: a header line stating the endpoint and purpose, followed by clear explanations of behavior, usage, visibility, and result size. Every sentence adds value without fluff.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no output schema), the description is complete. It explains what the tool does, what it returns, visibility rules, pagination behavior, and result size. It also mentions the alternative tool. No gaps remain.

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

Parameters4/5

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

The input schema has zero parameters, so schema coverage is 100% trivially. According to the rubric, zero parameters gives a baseline of 4. The description adds no parameter-specific information, but that is unnecessary; it instead adds context about the output and usage, which is appropriate for a parameterless tool.

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

Purpose5/5

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

The description clearly states it returns the single most recent announcement per visible channel, using specific verbs ('Returns') and resource description. It distinguishes itself from the sibling 'announcements' tool by explicitly contrasting with the full feed.

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: 'Useful as a quick check before drilling into the full feed via GET /announcements.' It specifies when to use this tool versus the alternative, making context clear.

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

calendarAInspect

GET /calendar — Get your iCalendar feed URL + settings

Returns your iCalendar feed URLs and the toggles that control which event categories the feed includes.

Three URLs are returned:

  • httpsURL — paste into any calendar app that accepts an HTTPS subscription

  • webcalURL — same URL with the webcal:// scheme; macOS / iOS Calendar opens it directly

  • googleURL — one-click Google Calendar subscribe link

The feed includes events you have tickets to, virtual calls, your trips, chapter events, and flagship events — exactly what each include* toggle below controls. Tokens are deterministic, so the URLs never change for a given member.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Despite no annotations, the description fully discloses behavior: returns three URLs, includes event categories controlled by toggles, and notes deterministic tokens. It is a safe read operation.

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 well-structured with a bold first line, summary, bullet points, and explanatory text. Every sentence adds value without redundancy.

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

Completeness5/5

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

With no output schema, the description fully explains the return values (three URLs, toggles, event categories). It provides sufficient context for an agent to understand the output.

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

Parameters4/5

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

There are no parameters, so baseline 4 applies. The description adds context about the response structure, which is relevant but not required for parameters.

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

Purpose5/5

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

The description clearly states the tool returns an iCalendar feed URL and settings. It specifies the verb 'GET' and the resource, and distinguishes itself from the sibling 'calendar_update' by being a read operation.

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

Usage Guidelines4/5

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

The description implies usage for retrieving feed URLs and settings, but does not explicitly state when not to use it or compare to alternatives beyond the sibling name.

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

calendar_updateAInspect

PATCH /calendar — Update calendar feed settings

Update any subset of your calendar feed toggles. Send only the toggles you want to change — omitted fields are left untouched. Returns { updated: true } on success; re-fetch GET /calendar if you need the full toggle set + feed URLs (the URLs themselves are stable and don't change when toggles update).

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeMyTripsNoBoolean
includeMyTicketsNoBoolean
includeEventAgendaNoBoolean
includeVirtualCallsNoBoolean
includeDCBlackEventsNoBoolean
includeFlagshipEventsNoBoolean
includeHomeChapterEventsNoBoolean
includeOtherChapterEventsNoBoolean
includeFollowedChapterEventsNoBoolean
Behavior5/5

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

Explicitly declares this is a WRITE operation that mutates DC account data. Describes return value and behavior on success. No annotations provided, so description fully compensates.

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

Conciseness5/5

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

Three focused sentences: purpose, usage nuance, and side-effect/return info. No filler, 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?

For a tool with 9 simple boolean parameters and no output schema, description covers behavior (partial update, return value, side-effect), and provides complete context for agent invocation.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described as 'Boolean'. Description adds general context about partial updates but does not provide additional meaning per parameter beyond the schema.

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

Purpose5/5

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

Clearly states 'Update calendar feed settings' with specific verb and resource, and specifies 'any subset of your calendar feed toggles'. Distinguishes from sibling tools like 'calendar' which is a GET endpoint.

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 guidance: send only toggles to change, omitted fields left untouched, and suggests re-fetching GET /calendar for full state. Lacks explicit when-not-to-use or comparison with alternative update tools, but context is sufficient.

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

chapterAInspect

GET /chapters/:cityID — Get a single chapter

Get full details for a single chapter, including up to 100 home-chapter members and the list of DCers currently visiting via active trips.

  • members — DCers whose home chapter is this city (up to 100).

  • currentVisitors — DCers with an active trip to this city (startDate <= now <= endDate). Each entry carries a mini profile block, the visitor's tripID, and trip start/end dates. Use this to answer "who is in right now?" — both locals (via members) and visitors (here).

Hidden + guest profiles are filtered from both lists.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityIDYesChapter ID (same as Google Place ID)
Behavior4/5

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

With no annotations, the description explains the GET nature, specific return fields (members, currentVisitors), and filtering of hidden/guest profiles. It adds context about active trips but lacks details on auth, rate limits, or other behavioral traits.

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

Conciseness4/5

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

The description is well-structured with a clear first line and bullet points for key fields. It is informative without being overly verbose, though a bit lengthy.

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

Completeness4/5

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

Given no output schema, the description explains the response structure (members, currentVisitors) and filtering. It covers the main expected fields, but could mention other potential details like chapter name.

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

Parameters3/5

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

Schema coverage is 100% with one parameter described as 'Chapter ID (same as Google Place ID)'. The description does not add additional meaning beyond that, so baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states 'Get a single chapter' and details the response structure. It clearly distinguishes from sibling tools like 'chapters' (plural listing) and 'search_chapters' by focusing on retrieving one chapter by ID with specific fields.

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

Usage Guidelines3/5

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

The description implies use when needing full details of a specific chapter, but does not explicitly state when to use or avoid it compared to alternatives. No when-not-to-use guidance is given.

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

chaptersAInspect

GET /chapters — List chapters

List all DC chapters (city-based community hubs), sorted by member count. Each chapter has a Google Place ID — pass it to POST /trips to create a trip to that chapter's city.

See also: For a chapter by city or country name (q='Lisbon', q='Thailand'), POST /search/chapters searches city + country names directly — faster than paginating this member-count-sorted list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax chapters to return (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior4/5

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

With no annotations, the description carries the burden. It discloses sorting order, pagination via cursor, and the presence of Google Place ID for downstream use. It does not mention auth or rate limits, but for a read-only GET endpoint, this is sufficient.

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

Conciseness5/5

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

Two concise paragraphs: the first states the endpoint and key behavior, the second provides an alternative. No wasted words, well-structured.

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

Completeness4/5

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

The description covers the main use case, sorting, pagination, and how results can be used (Google Place ID for trips). It references the alternative tool. Without an output schema, it gives enough context 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.

Parameters3/5

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

Schema coverage is 100% with clear descriptions. The description adds no additional parameter meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists all DC chapters sorted by member count, and explains the resource (chapters as city-based community hubs) and the verb (list). It distinguishes from sibling 'search_chapters' by noting the sorting and use case.

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 provides when to use this tool (list all chapters sorted by member count) and when to use the alternative 'POST /search/chapters' (for searching by city/country name). The 'See also' section gives clear guidance.

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

eventBInspect

GET /events/:eventID — Get event details

Returns full details for a specific event, including your ticket status.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesThe event ID
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits. It only states the return contents (full details, ticket status) and implies a read-only GET operation, but omits authorization requirements, error handling, or rate limits.

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

Conciseness5/5

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

The description is highly concise, consisting of two sentences that include the endpoint and a clear description of the return value. No unnecessary words.

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

Completeness3/5

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

The tool is simple, but the description could be more complete by mentioning what happens if the event does not exist, authentication requirements, or the structure of the returned details. It is minimally adequate.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal extra meaning beyond the schema. It reiterates the parameter via the endpoint path but does not provide additional semantic guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Get event details' for a specific event, including ticket status. It specifies the HTTP method and path, and distinguishes itself from sibling tools like 'events' (list) and 'event_agenda'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention conditions, prerequisites, or exclusions, leaving the agent to infer usage context.

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

event_agendaAInspect

GET /events/:eventID/agenda — Get your personal agenda for an event

Returns the sessions and meetups YOU have on your personal agenda for an event:

  • Sessions you bookmarked from the schedule.

  • Meetups you RSVPd to.

Access: caller must hold a valid ticket to the event.

Use POST /events/:eventID/schedule/:sessionID/bookmark and POST /events/:eventID/meetups/:meetupID/rsvp to manage entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
Behavior4/5

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

No annotations are provided, so the description carries full burden. It explains the tool returns personal agenda entries (sessions and meetups) and notes the access requirement. While it doesn't cover all behavioral details (e.g., error cases, pagination), it sufficiently discloses what the tool does and its read nature.

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

Conciseness5/5

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

The description is concise, well-structured, and front-loaded with the endpoint and purpose. Each sentence adds value: endpoint, return content, access condition, and related endpoints. No fluff.

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

Completeness4/5

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

Given the tool's simplicity (1 parameter, no output schema), the description covers the return values, access requirements, and links to management endpoints. It lacks only minor details like response format or error handling, making it nearly complete.

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

Parameters3/5

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

Schema coverage is 100% with one parameter (eventID) described as 'Event ID'. The description adds minimal extra meaning ('for an event'). Since the schema already covers the parameter, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it 'gets your personal agenda for an event' and specifies it returns bookmarked sessions and RSVP'd meetups. It differentiates from siblings like event_schedule (full schedule) and event_agendas (possibly all agendas) by emphasizing the personal aspect.

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

Usage Guidelines3/5

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

The description provides a prerequisite ('caller must hold a valid ticket') and mentions related endpoints for managing entries, but does not explicitly compare to siblings or state when not to use this tool. While context is given, stronger guidance on alternative tools would improve score.

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

event_agenda_getAInspect

GET /events/:eventID/agenda/:userID — Get another attendee's agenda for an event

Returns another attendee's personal agenda for an event — the sessions they bookmarked + meetups they RSVPd to. Use this so an AI agent can plan together with another DCer (find a coffee window, suggest sessions to overlap, propose a meetup).

Access: open to any active DCer who can see the event. The target must hold a valid ticket — otherwise there is no agenda to return (404).

ParametersJSON Schema
NameRequiredDescriptionDefault
userIDYesTarget attendee userID
eventIDYesEvent ID
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses access requirements ('open to any active DCer who can see the event,' target must hold a valid ticket) and error condition (404 if no agenda). It does not cover auth details or rate limits, but for a simple GET endpoint, it provides sufficient behavioral context.

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

Conciseness5/5

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

The description is concise and well-structured: first line states the endpoint, second paragraph explains purpose and return value, third paragraph covers access conditions. Every sentence adds value, and the information is front-loaded. No unnecessary fluff.

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

Completeness5/5

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

Despite lacking an output schema, the description fully explains what the tool returns ('sessions they bookmarked + meetups they RSVPd to'). It also covers access conditions and error handling. For a simple two-parameter tool, this is complete and sufficient for an AI agent to understand its usage.

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

Parameters3/5

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

The input schema already covers both parameters (eventID, userID) with descriptions. The description adds minimal extra meaning—it clarifies that userID is the 'target attendee' and implies both are path parameters. With 100% schema description coverage, the description is not needed to explain parameters, so score 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool fetches another attendee's personal agenda for an event, specifying the endpoint pattern and what it returns (bookmarked sessions and RSVP'd meetups). It distinguishes from siblings like event_agenda (own agenda) and event_agendas (multiple agendas) by explicitly mentioning 'another attendee's agenda.'

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use this tool: 'Use this so an AI agent can plan together with another DCer (find a coffee window, suggest sessions to overlap, propose a meetup).' It does not explicitly list alternatives or when not to use, but the context is clear enough.

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

event_agendasAInspect

GET /events/:eventID/agendas — Get multiple attendees' agendas in one call

Returns the agendas (bookmarked sessions + meetup RSVPs) for multiple attendees in a single call. Use when an AI agent needs to plan around several DCers at once — comparing schedules, finding shared sessions, building a meetup invite list.

Query: userIDs=A,B,C — comma-separated. Max 20 IDs per call.

Behavior: silently drops IDs that don't hold a valid ticket (so the AI doesn't need to pre-filter). Returns only the agendas for confirmed attendees, in the order requested.

Access: open to any active DCer who can see the event (non-attendee target IDs are silently dropped).

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
userIDsYesRequired. Comma-separated userIDs (max 20). Non-attendees are silently dropped.
Behavior4/5

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

Without annotations, the description carries the full burden. It discloses key behaviors: silently drops non-attendee IDs, returns in order requested, max 20 IDs, and access requirements ('open to any active DCer who can see the event'). Lacks details on rate limits or error handling, but overall transparent.

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 well-structured with clear sections (URL, return, use case, query, behavior, access). Every sentence adds value, no fluff. Front-loaded with essential purpose and method.

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

Completeness4/5

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

Given the tool has 2 params and no output schema, the description covers purpose, usage, behavior, and access. It lacks explicit return format details, but these may be inferred from context or sibling tools. Overall sufficiently complete for an AI agent to select and invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% and already provides detailed descriptions (e.g., 'Comma-separated userIDs (max 20). Non-attendees are silently dropped.'). The description adds context about URL structure and use-case, but minimal additional parameter semantics. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it returns agendas (bookmarked sessions + meetup RSVPs) for multiple attendees in a single call, using a specific verb ('Get') and resource ('multiple attendees' agendas'). It distinguishes from sibling tools like 'event_agenda' which likely covers single attendees.

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

Usage Guidelines4/5

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

Explicitly states when to use: 'when an AI agent needs to plan around several DCers at once — comparing schedules, finding shared sessions, building a meetup invite list.' Implicitly differentiates from single-attendee alternative. Does not explicitly state when not to use, but the context is clear.

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

event_attendeesAInspect

GET /events/:eventID/attendees — List event attendees

List the confirmed attendees of an event — DCers holding a valid paid ticket OR a valid/maybe RSVP status. Refunded/canceled tickets are excluded. Hidden and guest profiles are filtered out.

Profiles returned use the same shape as the rest of the API (GET /profile-match, GET /trips/:tripID/discovery, etc.) — full public-other-person view including businessName and expertise, plus privacy-gated annualRevenue + teamSize where shared. Social handles are not included.

Access: any active DCer can view event attendees, matching the in-app attendee tab.

Pagination: newest first; page with ?limit= (1-100, default 100) plus the opaque ?cursor= from the previous response's nextCursor (null when there are no more).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
eventIDYesThe event ID
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses ticket/RSVP filtering, hidden/guest exclusion, profile shape, access control, pagination order, and cursor handling. This level of transparency exceeds typical API descriptions.

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 structured with a lead sentence, then bullet-like sections for Access and Pagination. Every sentence adds information; no filler. Despite length, it remains scannable.

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

Completeness4/5

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

For a list endpoint with no output schema, the description covers what is returned, access, pagination, and exclusions. It doesn't document error cases or response envelope details, but the core usage is fully specified.

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

Parameters4/5

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

The input schema covers all 3 parameters with descriptions (100% coverage). The description adds semantic context by explaining that results are newest first, that limit defaults to 100 and ranges 1-100, and that cursor is an opaque token from nextCursor. This goes beyond the schema's simple descriptions.

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

Purpose5/5

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

The description opens with the endpoint and a clear verb-resource summary ('List event attendees'). It then precisely defines which attendees are included (valid paid ticket or valid/maybe RSVP) and explicitly excludes refunded/canceled tickets and hidden/guest profiles, distinguishing it from sibling attendee tools.

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

Usage Guidelines4/5

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

The description provides clear context: any active DCer can use it, and it matches the in-app attendee tab. It does not explicitly name alternatives or state when not to use it, but the context is sufficient for a list endpoint.

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

event_free_slots_createAInspect

POST /events/:eventID/free-slots — Find shared free time slots across attendees

Computes shared free slots across a set of event attendees — the time windows where they're NOT in a bookmarked session or meetup. Use to find a coffee window with one DCer, or a junto-style lunch slot for a group.

Body: userIDs[] (1-20), minDurationMinutes (default 30, min 15, max 480), optional eventDayDate: YYYY-MM-DD to scope to a single event day.

Slot grid: derived from the event's session schedule, partitioned into minDurationMinutes windows. For each window we subtract each user's bookmarked sessions + meetup RSVPs.

Sort: slots ranked by len(freeFor) desc — fully-shared windows first, then partial overlaps.

Auth: caller must hold a valid ticket. Non-attendee IDs are silently dropped.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
userIDsYesAttendee userIDs to compare (1-20). Non-attendees silently dropped.
eventDayDateNoOptional. Scope to a single event day (YYYY-MM-DD venue-local). Omit for the full event range.
minDurationMinutesNoMinimum slot duration in minutes (default 30, range 15-480)
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: it is a WRITE operation that mutates account data, silently drops non-attendees, explains slot derivation from session schedule, and details sorting logic. 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?

Well-structured with front-loaded endpoint and purpose, followed by parameter details, algorithm, sorting, auth, and warning. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a complex tool with no output schema, the description sufficiently covers algorithm, sorting, auth requirements, and side effects. User can understand what the tool does and how to use it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. Description adds default values, min/max constraints for minDurationMinutes, and clarifies that non-attendee IDs are silently dropped, providing additional context beyond the parameter descriptions.

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

Purpose5/5

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

The description clearly states 'Find shared free time slots across attendees' with a specific endpoint and verb. It distinguishes from sibling tools like event_schedule_bookmark or event_agenda by focusing on free slot computation.

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

Usage Guidelines4/5

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

Provides explicit usage examples ('find a coffee window with one DCer, or a junto-style lunch slot for a group') and implies context, but does not explicitly contrast with alternative tools or state when not to use.

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

event_meetup_attendeesAInspect

GET /events/:eventID/meetups/:meetupID/attendees — List meetup attendees

Returns the list of attendees who have RSVPd to a specific meetup. Same profile shape as /events/:eventID/attendees.

Access: any active DCer who can see the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
meetupIDYesMeetup ID
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the return type (list of attendees who RSVPd) and access condition, but does not mention pagination, error handling, or rate limits. The reference to another endpoint's shape adds some context.

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

Conciseness5/5

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

Description is two sentences plus an access line, all front-loaded with key information. No redundant content. Every sentence contributes to understanding the tool.

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

Completeness4/5

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

For a simple list endpoint with 2 required params and no output schema, the description covers purpose, output, access, and shape reference. Minor gaps: no mention of empty results or error cases, but adequate for the complexity.

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

Parameters3/5

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

Schema coverage is 100% with basic parameter descriptions. The description does not add extra meaning beyond the path structure. Baseline is 3 due to high coverage, and no additional semantic value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 verb 'List', resource 'meetup attendees', and scope 'for a specific meetup'. It references another endpoint for profile shape, distinguishing from siblings like event_attendees and event_meetup_rsvp.

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?

Access condition is provided ('any active DCer who can see the event'), and the description implicitly differentiates from event_attendees by mentioning the same shape as /events/:eventID/attendees. However, explicit when-not or alternative comparisons are missing.

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

event_meetup_rsvpAInspect

POST /events/:eventID/meetups/:meetupID/rsvp — RSVP to / leave a meetup

Join or leave a meetup. Requires a valid ticket for the event. The meetup's rsvpCount is updated atomically and idempotently.

When the meetup has a linked chat channel, this mirrors the DC app side effects too: joining subscribes you to the meetup chat and leaving removes you from it.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
joinedYes`true` to join, `false` to leave
eventIDYesEvent ID
meetupIDYesMeetup ID
Behavior5/5

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

No annotations provided, so description carries full burden. It explicitly marks as WRITE operation, mutates DC account data, explains atomic/idempotent update of rsvpCount, and mentions chat subscription side effects.

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

Conciseness5/5

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

The description is concise and well-structured: starts with HTTP path, then purpose, then requirements, then side effects. No unnecessary information.

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

Completeness4/5

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

Given no output schema, the description covers the effect, side effects, atomicity, and idempotency. It lacks error conditions or what happens with invalid tickets, but is fairly complete for a simple RSVP operation.

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

Parameters3/5

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

Schema coverage is 100% with descriptions. The description adds context about joining/leaving but does not provide new parameter details beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('RSVP to / leave a meetup') and uses specific verbs ('Join or leave'). It distinguishes from sibling tools like event_rsvp (for events) and event_meetup_attendees (for listing attendees).

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 usage context: requires a valid ticket, atomic and idempotent update, and side effects on chat. It lacks explicit when-not-to-use or direct alternatives, but the context is sufficient.

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

event_meetupsAInspect

GET /events/:eventID/meetups — List event meetups

Returns the approved member-organized meetups for an event, sorted chronologically. Only approved meetups are returned.

Access: any active DCer who can see the event can view approved meetup listings + attendee lists. Only RSVPing to a meetup (and the resulting chat-channel access) requires a valid ticket.

Time-zone handling: meetups use explicit wall-clock fields (date = YYYY-MM-DD, startTime / endTime = HH:mm) plus the event's timezone (IANA). Pair them when localizing.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
Behavior5/5

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

No annotations provided, but the description fully covers behavior: only approved meetups returned, chronological sorting, time-zone handling with wall-clock fields and IANA timezone. Also discloses access rules and what requires a ticket. No contradictory information.

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

Conciseness5/5

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

Well-structured with headings and bullet points. Every sentence adds value: endpoint path, behavior, access, time-zone handling. No redundancy. Efficient use of space.

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 listing tool with one parameter and no output schema, the description covers everything an agent needs: purpose, access conditions, filtering, sorting, and time-zone handling. Sibling tools fill gaps for related actions.

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

Parameters3/5

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

Schema coverage is 100% with eventID described as 'Event ID'. Description does not add semantic detail beyond the schema, but the context of listing meetups for that event is clear. Appropriate baseline score.

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

Purpose5/5

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

The description clearly states the tool lists approved member-organized meetups for an event, sorted chronologically. The verb 'List' and resource 'event meetups' are explicit. It distinguishes from sibling tools like event_meetup_attendees and event_meetup_rsvp.

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: 'Returns the approved member-organized meetups for an event'. Specifies access conditions (any active DCer who can see the event) and limitations (only approved meetups). Implicitly differentiates from RSVP and attendee listing tools.

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

event_rsvpAInspect

POST /events/:eventID/rsvp — RSVP to a free event

RSVP to an event that uses free RSVP (not ticketed). Only works for events with rsvpEnabled: true.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesRSVP status
eventIDYesThe event ID
Behavior4/5

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

With no annotations provided, the description carries the full burden and explicitly states '⚠️ WRITE operation: this mutates your DC account data.' This clearly informs the agent of the mutation behavior. There is no contradiction with annotations.

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

Conciseness5/5

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

The description is concise: three sentences with no wasted words. It front-loads the HTTP method and resource, then adds key conditions and a warning. Every sentence earns its place.

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

Completeness4/5

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

For a simple tool with only 2 required parameters and no output schema, the description is reasonably complete. It explains preconditions (free event, rsvpEnabled) and the mutation nature. It could mention expected outcomes (e.g., confirmation, error handling) but is adequate given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema: it mentions eventID in the path and status implicitly, but does not explain values or formats. The schema already provides enum descriptions for status, so the description adds negligible value.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'RSVP to a free event' with the HTTP method and endpoint. It distinguishes from siblings by specifying 'free RSVP (not ticketed)' and the condition 'rsvpEnabled: true', differentiating it from event_meetup_rsvp and virtual_event_rsvp.

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 guidelines: 'Only works for events with rsvpEnabled: true' and 'not ticketed'. It implicitly tells when to use this tool (for free RSVP events) and when not (ticketed/meetup/virtual events). However, it does not explicitly mention alternatives like event_meetup_rsvp.

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

eventsAInspect

GET /events — List upcoming events

Returns upcoming DC events, sorted by date. Add ?past=true to include past events.

See also: For events by name or topic (q='productivity', q='DCBKK 2026'), POST /search/events searches title + description directly — faster than paginating this date-sorted list. Combine with ?cityID, ?country, ?since, ?until filters for narrower scopes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pastNoInclude past events.
limitNoMax results (1-50).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses pagination via cursor, limit cap (1-50), and inclusion of past events via ?past=true. However, does not mention rate limits, auth requirements, or data freshness.

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

Conciseness5/5

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

Concise three-part structure: title, behavior description, and usage guidance with alternatives. Every sentence adds value, no redundancy.

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

Completeness5/5

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

Given no output schema and optional parameters, the description sufficiently covers purpose, behavior, parameters, pagination, and alternatives. Complete for a list endpoint.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters. Description adds context (e.g., '?past=true' syntactic hint, cursor for pagination) but does not significantly deepen understanding beyond schema.

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

Purpose5/5

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

Clearly states the tool lists upcoming events sorted by date, specifies the HTTP method, and distinguishes from sibling 'search_events' which searches by name/topic.

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 provides when-to-use vs alternatives (search_events for name/topic queries), and notes filters like past, cityID, country, since, until for narrower scopes.

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

event_scheduleAInspect

GET /events/:eventID/schedule — Get event schedule

Returns the full schedule (sessions) for an event, sorted chronologically.

Access: any active DCer who can see the event can view its public schedule. Personal agenda actions still require a valid ticket.

Time-zone handling: session startAt / endAt are returned as ISO 8601 strings whose digits represent the venue-local wall-clock time (e.g. a 9 AM Mexico City session returns 2026-05-08T09:00:00.000Z, NOT 15:00:00Z). The session's timezone field carries the IANA zone (e.g. America/Mexico_City) — pair them when localizing. This matches the convention used by the DC ICS feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the return structure (full schedule, sorted), access constraints, and important time-zone behavior (wall-clock time vs UTC). This is transparent and useful for the agent.

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

Conciseness4/5

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

The description is concise, front-loaded with the endpoint and purpose, and then provides essential details on access and time-zone handling. Each sentence adds value without redundancy.

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

Completeness3/5

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

Given no output schema, the description explains the return value (full schedule, sorted) and time-zone handling. However, it omits details about the structure of session objects and whether pagination is used. It is adequate but not fully complete.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter eventID, so the schema already provides the meaning. The description adds context about the endpoint path but no new parameter semantics beyond the schema.

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

Purpose4/5

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

The description clearly states the tool retrieves an event's schedule via GET /events/:eventID/schedule, specifying it returns sessions sorted chronologically. It does not explicitly differentiate from siblings like event_agenda, but the purpose is unambiguous.

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

Usage Guidelines3/5

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

The description provides access rules (any active DCer can view public schedule) and time-zone handling guidance. However, it does not specify when to use this tool over alternatives like event_agenda or event_agenda_get, nor does it mention exclusions.

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

event_schedule_attendeesAInspect

GET /events/:eventID/schedule/:sessionID/attendees — List session attendees (people who bookmarked it)

Returns the list of attendees who have bookmarked a specific session into their agenda. Same profile shape as /events/:eventID/attendees.

Access: any active DCer who can see the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
sessionIDYesSession ID
Behavior4/5

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

Despite no annotations, the description discloses the return shape (same as event attendees), access requirement, and nature of the list (bookmarked attendees). It lacks details on pagination or error handling, but for a simple read operation, it provides adequate transparency.

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

Conciseness5/5

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

The description is concise, front-loads the purpose with the endpoint path, and includes only essential information (shape reference, access condition). No redundant sentences.

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

Completeness4/5

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

The description covers purpose, access, and return shape reference. Given no output schema and simple required parameters, it is mostly complete. Minor omission: no mention of pagination or list limits, but expected list size for bookmarked attendees is typically small.

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

Parameters3/5

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

Schema description coverage is 100% (both 'eventID' and 'sessionID' have descriptions). The description adds no additional parameter semantics 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?

The description clearly states the verb ('List'), resource ('session attendees'), and condition ('people who bookmarked it'). It distinguishes from siblings like 'event_attendees' and 'event_meetup_attendees' by specifying the bookmarking criterion.

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

Usage Guidelines3/5

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

The description implies usage context (listing bookmarked attendees) and includes an access note ('any active DCer who can see the event'). However, it does not explicitly state when to use this tool versus alternatives like 'event_attendees' or provide conditions for avoidance.

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

event_schedule_bookmarkAInspect

POST /events/:eventID/schedule/:sessionID/bookmark — Bookmark / unbookmark a session

Add or remove a session from your personal agenda — this is the API equivalent of the bookmark/star icon on a session card in the DC app.

Requires a valid ticket for the event. Counter rsvpCount on the session doc is updated atomically and idempotently: repeating the same desired state does not increment or decrement the counter again.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
sessionIDYesSession ID
bookmarkedYes`true` to add to agenda, `false` to remove
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral disclosure. It clearly labels the operation as a WRITE (mutates account data), describes idempotent counter updates, and mentions requirements. No contradictions found.

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

Conciseness5/5

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

The description is concise (few sentences) and well-structured, starting with the endpoint, then the action, then requirements and details. Every sentence adds value with no wasted words.

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

Completeness5/5

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

For a simple toggle without an output schema, the description covers all necessary aspects: purpose, prerequisite, atomic behavior, and mutation warning. It is fully self-contained.

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 parameters are already documented. The description adds context beyond the schema by explaining the bookmark toggle analogy and idempotency, which enhances understanding without being redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 as 'Bookmark / unbookmark a session' and provides a concrete analogy (bookmark/star icon). It also correctly identifies the HTTP method and resource. While sibling tools like event_rsvp exist, the description distinguishes this as a bookmark toggle without ambiguity.

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

Usage Guidelines4/5

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

The description explicitly states the prerequisite ('Requires a valid ticket for the event'), giving a clear condition for when to use. It does not, however, provide direct guidance on when not to use or contrast with alternatives like event_agenda or event_rsvp, leaving some room for inference.

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

event_sponsorsAInspect

GET /events/:eventID/sponsors — List event sponsors

Returns the sponsors for an event, ordered by tier (primary → supporting) then display order. Deleted sponsors are filtered out.

Access: any active DCer who can see the event — sponsors are public.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventIDYesEvent ID
Behavior3/5

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

The description discloses ordering by tier and filtering of deleted sponsors, and notes access requirements. With no annotations, it carries the full burden, but it does not cover error handling, pagination, or other potential behaviors.

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

Conciseness5/5

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

The description is concise and front-loaded with the HTTP method and path. Every sentence is meaningful and there is no redundant information.

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

Completeness3/5

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

Given the simplicity of the tool (one parameter, no output schema), the description covers purpose, ordering, filtering, and access. However, it could be more complete by mentioning the response format or potential error cases.

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

Parameters3/5

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

The input schema describes the single parameter 'eventID' as 'Event ID', which is sufficient. The description does not add extra meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists event sponsors, provides the HTTP method and path, and specifies ordering by tier and filtering of deleted sponsors. It is distinct from sibling tools like 'event' or 'events' which deal with different resources.

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

Usage Guidelines3/5

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

The description mentions that access is for any active DCer who can see the event, implying usage context. However, it does not explicitly state when not to use this tool or mention any alternatives among the many sibling tools.

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

follows_chapter_createAInspect

POST /follows/chapters/:cityID — Follow a chapter

Follow a DC chapter (city hub). Idempotent. Target must exist in the chapters list (discover via GET /chapters). Cap 50 — hitting it returns 409 follow_limit_reached.

This list also drives the /locator/digest favoritePeople and favoriteCities sections — surface trip + event activity from DCers and cities you care about without scrolling everywhere.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityIDYesChapter ID (Google Place ID). Get from `GET /chapters` (each entry has `cityID`) or `GET /places/search` (`type === "city"`).
Behavior4/5

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

Discloses idempotency, write operation, and limit behavior. Without annotations, this covers key behavioral traits. No contradiction.

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

Conciseness3/5

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

Most sentences are relevant, but the digression about digest sections is tangential and adds unnecessary length.

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

Completeness4/5

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

Covers purpose, prerequisites, and constraints adequately for a simple tool. Lacks return value details but no output schema required.

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

Parameters4/5

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

Schema already describes cityID well (100% coverage). Description adds value by explaining how to obtain the parameter from other endpoints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Follow a chapter' with HTTP method and resource. Specifies idempotency and distinguishes from siblings like follows_chapter_delete.

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 prerequisite (target must exist in chapters list) and constraint (cap 50 with error). Lacks explicit comparison to other follow tools but offers adequate context.

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

follows_chapter_deleteAInspect

DELETE /follows/chapters/:cityID — Unfollow a chapter

Unfollow a DC chapter. Idempotent — unfollowing a chapter you weren't following is a no-op.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityIDYesChapter ID to unfollow.
Behavior3/5

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

No annotations provided, so description carries the burden. It declares WRITE operation and idempotency but does not specify success behavior or auth requirements beyond 'mutates your data.'

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

Conciseness5/5

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

Three concise sentences front-loading purpose, idempotency, and side effects. No wasted words.

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

Completeness4/5

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

For a simple single-parameter tool with no output schema, the description is nearly complete. Could mention response status but not essential.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for cityID. The description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

Description clearly states 'Unfollow a chapter' with idempotency and the HTTP method. It distinguishes from the sibling follows_chapter_create which is for following.

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 usage is clear from the name and description. No explicit when-not or prerequisites are needed due to simplicity, but some guidance on auth could improve it.

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

follows_chaptersAInspect

GET /follows/chapters — List followed chapters

List the DC chapters (city hubs) you are currently following. Each entry is a mini-chapter with the chapter's Google Place ID — useful for creating trips or surfacing activity in that city. Cap: 50 follows.

This list also drives the /locator/digest favoritePeople and favoriteCities sections — surface trip + event activity from DCers and cities you care about without scrolling everywhere.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Discloses cap of 50 follows and role in powering digest sections. No annotations provided, but description covers key traits for a read-only list.

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

Conciseness4/5

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

Concise description with front-loaded endpoint info. Additional context about digest usage is relevant but could be split; still efficient.

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

Completeness4/5

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

Given no output schema, it explains return type (mini-chapters with Place ID) and cap. Adequate for a simple list tool with many siblings.

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

Parameters4/5

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

No parameters exist; schema coverage is 100%. Description need not add param info; baseline 4 for zero-param tools.

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

Purpose5/5

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

Clear verb 'List' and resource 'followed chapters', with specific detail about returning Google Place ID per chapter. Distinguishes from create/delete siblings.

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

Usage Guidelines4/5

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

States usefulness for creating trips and surfacing activity, and mentions driving locator_digest sections. Implicitly when to read, no explicit when-not but context given.

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

follows_profilesAInspect

GET /follows/profiles — List followed DCers

List the DCers you are currently following. Returns the same mini-profile shape used by every other list endpoint, so each entry roundtrips cleanly with GET /profile/:userID or POST /follows/profiles/:userID. Cap: 150 follows; the response cap echoes that so a client can warn the user as they approach the limit.

This list also drives the /locator/digest favoritePeople and favoriteCities sections — surface trip + event activity from DCers and cities you care about without scrolling everywhere.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Without annotations, the description discloses the read-only nature (GET), a cap of 150 follows, and the response structure including a 'cap' field. It also explains how the output relates to other endpoints, giving good transparency for a simple read operation.

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

Conciseness5/5

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

The description is concise, with three sentences that are front-loaded with the primary purpose. Each sentence adds necessary detail without redundancy or unnecessary length.

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

Completeness5/5

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

Given no output schema, the description adequately covers the return shape (mini-profile), the cap, and integration with other endpoints. It also explains the utility in locator digest, making it complete for the tool's complexity.

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

Parameters4/5

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

The input schema is empty, so schema coverage is 100%. While the description does not add parameter information (none exist), it adds value by explaining what the tool returns and its context, exceeding the baseline of 3.

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

Purpose5/5

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

The description clearly states 'List the DCers you are currently following,' providing a specific verb and resource. It distinguishes itself from sibling tools like 'follows_chapters' and 'follows_profiles_by_id_create' by focusing on listing followed profiles.

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

Usage Guidelines3/5

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

The description provides context on how the output integrates with other endpoints (e.g., 'roundtrips cleanly with GET /profile/:userID') and mentions the cap and its use in locator digest. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.

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

follows_profiles_by_id_createAInspect

POST /follows/profiles/:userID — Follow a DCer

Follow a DCer. Idempotent — calling it twice with the same userID is safe (no-op the second time). Target must exist and be publicly visible (hidden + guest profiles are refused with 404). You cannot follow yourself.

When the cap of 150 is reached, returns 409 follow_limit_reached with a hint to unfollow someone first. The response includes the new profile mini-card and updated count so the caller can render the change without re-fetching.

This list also drives the /locator/digest favoritePeople and favoriteCities sections — surface trip + event activity from DCers and cities you care about without scrolling everywhere.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIDYesuserID of the DCer to follow. Discover via `GET /profile-match` or `GET /chapters/:cityID` members lists.
Behavior5/5

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

With no annotations, description fully discloses write mutation, idempotency, target requirements, cap behavior (409 response), and response structure. Warns about WRITE operation.

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

Conciseness4/5

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

Well-structured and front-loaded, but includes tangential locator/digest note. Could be slightly more concise without losing essential info.

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

Completeness5/5

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

For a single-param tool with no output schema, description covers response (mini-card, count) and all failure modes, making it complete for agent decision-making.

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 description adds value by explaining how to obtain userID (discovery via GET endpoints) and clarifying it refers to a DCer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Follow a DCer' with HTTP method and endpoint. Distinguishes from sibling tools like follows_chapter_create by specifying resource type (profile vs chapter). Covers idempotency and constraints.

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

Usage Guidelines4/5

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

Provides explicit failure conditions (target must exist, publicly visible, no self-follow, cap of 150) and idempotency. Does not explicitly contrast with sibling tools, but context is sufficient.

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

follows_profiles_by_id_deleteAInspect

DELETE /follows/profiles/:userID — Unfollow a DCer

Unfollow a DCer. Idempotent — unfollowing someone you weren't following is a no-op (still returns 200 with the updated count). Use it whenever you want to stop seeing a DCer in your /locator/digest favoritePeople section.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIDYesuserID of the DCer to unfollow.
Behavior5/5

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

Discloses it is a WRITE operation, idempotent, and returns updated count. No annotations provided, so the description fully covers behavioral traits.

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?

Very concise: two sentences and a warning. Front-loaded with HTTP method and purpose. No wasted words.

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

Completeness4/5

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

Given no output schema, the description explains the return (updated count) and idempotency. Adequate for a simple delete, but could mention response format.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema's description of userID.

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

Purpose5/5

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

The description explicitly states 'Unfollow a DCer' and differentiates from sibling tools like follows_profiles_by_id_create and follows_chapter_delete. It uses a specific verb and resource.

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

Usage Guidelines4/5

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

The description provides a clear use case: 'whenever you want to stop seeing a DCer in your /locator/digest favoritePeople section.' However, it does not explicitly mention when not to use it or alternatives.

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

inbox_unreadBInspect

GET /inbox/unread — Get unread counts

Returns your total unread message count and per-room breakdown. Only includes rooms you are subscribed to or are a member of.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rooms to return (1-100).
Behavior3/5

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

With no annotations, the description carries full burden. It reveals that the tool returns total unread count and per-room breakdown, and limits to subscribed/member rooms. However, it does not disclose behavior like idempotency (implied by GET), error handling, or any side effects. It provides moderate transparency.

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

Conciseness5/5

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

The description is extremely concise, using just two sentences (plus a title line) to convey purpose, return value, and scope. Every part is necessary and front-loaded. No wasted words.

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

Completeness4/5

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

Given the tool's simplicity (1 param, no output schema), the description adequately explains what is returned (total and per-room unread counts) and the scope. It does not cover error scenarios or response format details, but for a straightforward read tool, it is nearly complete. Missing only minor details.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'limit'. The description does not add additional meaning or context for the parameter beyond what the schema provides. Baseline 3 is appropriate as the schema already documents the parameter adequately.

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

Purpose4/5

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

The description clearly states the tool retrieves unread counts, providing total and per-room breakdown. It also specifies the scope (rooms the user is subscribed to or a member of). While it doesn't explicitly differentiate from siblings like rooms_inbox, the purpose is specific and distinct enough.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as rooms_inbox or rooms_summaries. The description only includes a constraint (which rooms are included) but does not help the agent decide between similar tools.

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

interestsAInspect

GET /interests — Get your interests config

Returns the user's interests configuration — the set of tags they have subscribed or unsubscribed from. Returns an empty { tags: {}, createdAt: null, updatedAt: null } shape when no config exists yet.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

No annotations provided, so description carries burden. It discloses return shape and empty state behavior. Doesn't mention authentication or side effects, but GET implies read-only and no side effects.

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

Conciseness5/5

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

Two concise sentences, front-loaded with endpoint and purpose. No wasted words.

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

Completeness5/5

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

For a simple read endpoint with no parameters and no output schema, the description provides the return shape and empty state, making it complete for an agent to understand expected output.

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

Parameters4/5

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

No parameters in schema, so baseline 4. Description adds value by explaining the return structure and empty state, which compensates for lack of output schema.

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

Purpose5/5

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

Description clearly states it is a GET endpoint for retrieving interests config. It specifies the resource 'interests' and the action 'get config'. Distinguishes from sibling 'interests_create' by being read-only.

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?

While not explicit about when to use vs alternatives, the read nature is clear from 'GET' and 'Get your interests config'. Implicitly distinguishes from mutation tool 'interests_create'. Could explicitly mention use cases.

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

interests_createAInspect

POST /interests — Subscribe or unsubscribe from interests

Subscribe or unsubscribe from interest tags in a single call. Pass a updates map of { slug: { subscribed: boolean } } with up to 20 entries. Slugs that are not in the known interest definitions are silently ignored at the name-lookup step (the subscription is still recorded).

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYesMap of interest tag slug → `{ subscribed: boolean }`. Max 20 entries. Keys must match `/^[a-z0-9-]+$/`.
Behavior4/5

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

Without annotations, the description explicitly notes it is a WRITE operation that mutates account data. It also discloses that unknown slugs are silently ignored, which is important for user understanding.

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

Conciseness4/5

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

The description is concise with two focused paragraphs. The first explains the operation and parameters; the second warns about mutation. 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 mutation tool with one parameter, the description covers the key behaviors (silent ignore, mutation) and parameter constraints. It doesn't specify return values (no output schema) but that is acceptable.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds context about the 'updates' map format, the max 20 entries, and the silent ignoring of unknown slugs. This goes beyond the schema description.

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

Purpose4/5

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

The description clearly states 'Subscribe or unsubscribe from interests' and specifies the POST endpoint. It identifies the resource and action, though it doesn't explicitly differentiate from sibling tools like 'interests' (likely a GET).

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

Usage Guidelines3/5

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

The description explains how to use the tool (single call, map format, max 20 entries) but does not provide guidance on when to use this versus alternatives, or when not to use it.

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

invitesAInspect

GET /invites — List your invites

List the referral invites credited to you. Two source types appear:

  • manual — invites you sent via POST /invites (the explicit email-an-invitee flow).

  • permaCode — applicants who signed up through your shareable permacode link (GET /invites/permacode).

Each record tracks where the prospective member is in the funnel (newinvitedstartedsubmittedapproved/rejected/expired), the invite type, the invitee's name + email, and timestamps. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior4/5

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

The description explicitly states it is a read-only GET endpoint, lists the funnel statuses, and describes the fields in each record. As no annotations are provided, the description carries the full burden and covers key behavioral traits, though it does not mention authentication or rate limits.

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

Conciseness4/5

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

The description is well-structured with markdown for lists and code references. It is front-loaded with the purpose and contains no redundant sentences. Slightly verbose due to detailed funnel explanation, but still efficient.

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

Completeness5/5

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

Given the tool has only two parameters, no output schema, and no annotations, the description is remarkably complete. It explains the data returned (funnel status, invite type, invitee info, timestamps), pagination via cursor, and the two source types, leaving no significant gaps.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (limit, cursor) well-described in the schema. The description adds no additional value beyond the schema for understanding the parameters, so baseline score 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?

The description clearly states the purpose: 'List your invites' with specific verb and resource. It distinguishes from sibling tools by referencing invites_create and invites_permacode, and explains the two source types (manual, permaCode) that appear.

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

Usage Guidelines4/5

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

The description explains what the tool does (list referral invites) and implicitly distinguishes from related endpoints by mentioning the other endpoints for creating invites or fetching permacode. However, it does not explicitly state when not to use this tool or provide direct comparisons to alternatives.

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

invites_createAInspect

POST /invites — Send an invite

Send a referral invite to someone. The server queues a templated email (delivered via a background task) that points the invitee at the apply flow with you pre-credited as the referrer. The created invite shows up in GET /invites immediately at status new.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesInvitee email address. Where the invite email is sent.
whyDCNoOptional. Short note about why they would be a good fit for DC — surfaces in the admin review queue if the application reaches it.
fullNameYesInvitee full name. Used in the email greeting + matched against existing applications for dedup.
Behavior5/5

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

Explicitly states it is a WRITE operation, mutates DC account data, queues an email, and the invite appears immediately with status 'new'. No annotations provided, so the description fully bears the burden.

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

Conciseness4/5

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

Well-structured with title, description, effects, and warning. Not overly verbose but contains multiple sentences; could be tightened slightly without losing clarity.

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

Completeness5/5

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

Covers key aspects: return behavior (invite shows in GET /invites), email delivery via background task, and immediate status. No output schema, but description sufficiently explains outcomes.

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

Parameters5/5

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

Adds meaning beyond the schema: email as destination, fullName used in greeting and dedup, whyDC as optional note for admin queue. Schema coverage is 100%, but the description enriches understanding.

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

Purpose5/5

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

Description clearly states it sends an invite (POST /invites) and specifies the action: queue a templated email, pre-credit as referrer, and immediate status 'new'. It is specific and distinct from sibling tools like alerts_create or events.

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

Usage Guidelines3/5

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

Explicitly says when to use (send an invite) but does not mention alternatives or when not to use. No direct sibling for invites_create exists, but guidance on when to use other invite-related tools (e.g., GET /invites) is missing.

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

invites_permacodeAInspect

GET /invites/permacode — Get your permacode

Returns your permanent referral code. Share this link to let people apply with your referral.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

No annotations provided, so description fully carries burden. Describes a read-only GET operation and the purpose without concealing side effects. 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?

Extremely concise: two sentences. Front-loaded with HTTP method and endpoint, then response description. No wasted words.

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

Completeness4/5

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

Given no output schema, description adequately covers the return value (your permacode) and usage (share link). Could note that it's read-only or idempotent, but overall complete.

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

Parameters4/5

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

Input schema has no parameters (100% coverage). Description adds value by explaining what is returned (permanent referral code) and its purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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's a GET endpoint that returns your permanent referral code. The verb 'Get' and resource 'permacode' are specific. Distinct from sibling tools like invites_create (create invites) and invites (likely list invites).

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?

Implies usage: when you need your permanent referral code to share. Does not explicitly state when to use this versus alternatives like invites or invites_create, but the context makes it clear.

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

limitsAInspect

GET /limits — Get your effective rate limits + current usage

Returns the effective per-minute and per-day rate limits for your API key, plus current usage (how many calls you have already made in the current minute and day windows, when each window resets, and how many calls you have left). Limits derive from your membership tier (DC member: 10/min, 300/day; DC BLACK member and staff: 60/min, 3000/day) unless an admin has set per-key overrides — overrides win when present.

The same usage data is also exposed on every API response via the X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Daily-Remaining, and X-RateLimit-Daily-Reset headers. Use this endpoint when you want a JSON snapshot, or the headers when you want to read it on every call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

With no annotations, the description fully discloses behavior: it returns rate limits and usage data, and mentions that same data is available via headers. No destructive or hidden side effects are implied.

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

Conciseness5/5

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

The description is two paragraphs: first defines the tool's purpose and output, second adds contextual links to headers and tier info. Every sentence adds value; no wasted words.

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

Completeness5/5

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

For a zero-parameter tool with no output schema, the description fully explains what the tool returns, how limits are determined, and how to access the same data alternatively. It covers all necessary context.

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

Parameters5/5

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

The input schema has zero parameters and 100% coverage, so no additional parameter descriptions are needed. The description adds no parameter info, but none is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'GET /limits — Get your effective rate limits + current usage', using a specific verb and resource. It distinguishes this tool from siblings by focusing on rate limit information, which is unique among the sibling tools.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this endpoint ('when you want a JSON snapshot') versus reading headers on every call. It also explains the source of limits (membership tier, admin overrides), helping the agent decide usage context.

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

locator_digestAInspect

GET /locator/digest — Get locator digest

Returns your weekly locator digest — the same data that powers the Friday locator email. Use this to surface trip/event activity around the people and cities a member already follows.

The response is composed of four independent sections; pass ?sections=<csv> to skip any you don't need. Each section is described in full below.

  • homeCity — Activity in the city you have set as your home chapter. Null if you have no home city, or if you don't belong to any chapter yet.

  • favoriteCities — Per-city digest for cities you have favorited (besides your home city). Each entry lists upcoming trips/events into that city + new ones added since last week.

  • favoritePeople — Recent activity from members you follow: their new trips, upcoming trips, recently purchased tickets, and events they've RSVPd to.

  • myTrips — For each of your own upcoming trips, the people you're likely to overlap with (chapter leads, local members, and other DCers visiting the same city in the same window).

Pass a comma-separated subset to ?sections=... to omit sections you don't use — useful for narrow integrations and faster responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionsNoComma-separated list of sections to include. Defaults to all four sections when omitted.
Behavior4/5

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

No annotations provided, so description carries full burden. It explains the response structure and section skipping, which is helpful. Missing details on authentication or rate limits but sufficient for a read-only tool.

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

Conciseness5/5

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

Well-organized with bullet points for each section. Every sentence adds value, starting with the HTTP method and purpose.

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

Completeness4/5

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

Given complexity of response with four sections, the description is thorough. Could mention prerequisites like having a home city, but overall very complete without output schema.

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

Parameters4/5

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

Schema covers parameter fully, but description adds extensive details on each section's content and behavior beyond the enum list, providing significant additional value.

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

Purpose5/5

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

Description explicitly states 'Get locator digest' and explains the resource. It distinguishes from sibling tools like locator_settings by focusing on digest data.

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

Usage Guidelines4/5

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

Provides clear context: 'Use this to surface trip/event activity...' and explains how to select sections. Lacks explicit when-not-to-use or alternatives.

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

locator_settingsAInspect

GET /locator/settings — Get your Friday locator email settings

Returns the four toggles that control the Friday locator email digest. The digest is a weekly outbound email surfacing new events, tickets, and trips relevant to you.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

No annotations are provided, so the description must cover behavior. It describes the return as four toggles and the digest's purpose, but does not disclose side effects, idempotency, or authentication requirements.

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

Conciseness5/5

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

The description is extremely concise with two sentences: the first specifies the HTTP method and endpoint, the second explains the response. No redundant information.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description adequately explains what it returns. Could mention authentication or error conditions, but overall sufficient.

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

Parameters4/5

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

There are no parameters, so the schema covers 100%. The description adds value by hinting at the response structure (four toggles), compensating for the absence of an output 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 retrieves locator email settings via GET, specifies it returns four toggles, and distinguishes from sibling 'locator_settings_update' which is for updates.

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 indicates it retrieves settings for reading, and the sibling 'locator_settings_update' implies it should be used when not modifying settings. However, no explicit when-not or alternative is stated.

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

locator_settings_updateAInspect

PATCH /locator/settings — Update your Friday locator email settings

Update any subset of the Friday locator email toggles. Send only the fields you want to change.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripsNoInclude new trips to your area
eventsNoInclude new events in your area
enabledNoMaster toggle for the Friday digest
ticketsNoInclude DCers you follow getting event tickets
Behavior5/5

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

The description explicitly warns that this is a WRITE operation that mutates DC account data, using a warning emoji. No annotations are provided, so the description fully carries the burden and does so effectively.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus a prominent warning. Every part adds value without redundancy. The HTTP method and warning are front-loaded for quick agent parsing.

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

Completeness4/5

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

Given 4 boolean parameters with full schema coverage and no output schema, the description covers the tool's purpose, usage pattern, and behavioral traits adequately. Could mention the endpoint path more explicitly, but overall complete.

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

Parameters4/5

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

The description identifies the parameters as 'Friday locator email toggles' and notes they are boolean. This adds context beyond the input schema (which only gives field descriptions). Schema coverage is 100%, so the description adds meaningful grouping.

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

Purpose5/5

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

The title and description clearly state it updates Friday locator email settings, with specific reference to toggles. It distinguishes itself from the sibling `locator_settings` (likely read-only) by being the update counterpart.

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

Usage Guidelines4/5

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

The description explains to send only the fields you want to change, providing clear usage context. However, it does not explicitly mention when not to use this tool or suggest alternatives like `locator_settings` for reading.

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

membershipAInspect

GET /membership — Get your membership state

Returns your full membership state: role, lifecycle dates, trial status, billing/subscription details, and a link to the Stripe Customer Portal where you can manage your subscription, payment methods, and download invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

No annotations provided, so description carries full burden. States it is a GET (read-only) and lists returned data, but does not mention authentication requirements, rate limits, or any side effects. Adequate for a simple read operation.

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

Conciseness5/5

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

Three sentences, front-loaded with HTTP method and purpose. Every sentence adds value. No unnecessary words.

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

Completeness4/5

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

For a tool with no parameters and no output schema, the description lists return fields sufficiently. Could be improved by noting authentication requirement, but otherwise complete.

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

Parameters4/5

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

No parameters exist (empty schema, 0 params), so description does not need to add param meaning. Baseline 4 for zero parameters applies.

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

Purpose5/5

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

Description explicitly states 'GET /membership — Get your membership state' and enumerates return fields. Clearly distinguishes from sibling 'membership_invoices' by focusing on state, not invoices.

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?

No explicit when-to-use or when-not-to-use guidance. However, the single purpose is clear enough for a simple read tool. Lacks differentiation from alternatives among many sibling tools.

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

membership_invoicesAInspect

GET /membership/invoices — List your Stripe invoices

Returns your Stripe invoices, newest first. Each entry includes a hosted-invoice URL and a PDF link, both safe to share — perfect for self-serve receipts. Returns an empty array for legacy paypal/chargify members or members with no Stripe customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100)
Behavior4/5

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

Discloses key behaviors: newest-first ordering, inclusion of safe-to-share links, and behavior for legacy users (empty array). No annotations are provided, so the description carries the full burden, and it adequately covers safety and return conditions.

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

Conciseness4/5

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

Three sentences with front-loaded purpose and efficient details. No redundancy or excessive length; each sentence adds value.

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

Completeness4/5

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

For a simple list tool without output schema, the description explains return values (hosted URL, PDF link) and edge cases (empty array for legacy users). It covers essential context for correct invocation, though pagination details beyond 'limit' are not discussed.

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 sole parameter 'limit' is fully described in the input schema (max 1-100, default 20), so the description adds no extra meaning. Baseline 3 is appropriate given 100% schema coverage.

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

Purpose4/5

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

The description clearly states the tool lists Stripe invoices, with specific details like newest-first ordering and included fields (hosted-invoice URL, PDF link). It distinguishes itself from other membership-related tools by focusing on invoices, though it does not explicitly differentiate from siblings like 'membership' or other payment tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., 'membership' for general membership info). The description implies it is for self-serve receipts but does not specify prerequisites or cases where other tools would be more appropriate.

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

notificationsAInspect

GET /notifications — Get your notification preferences

Returns your push + email preferences per notification category. Defaults are applied for any preference you have never explicitly set. Email is null for reaction / myReaction because email is not supported for those categories.

For the Friday locator email digest, see GET /locator/settings — that's a separate concern (outbound digest, not per-event push/email).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Describes defaults for unset preferences and null email for certain categories. Lacks mention of authentication or rate limits, but acceptable for a simple read operation.

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

Conciseness5/5

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

Three concise sentences, front-loaded with main purpose, no extraneous 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?

Provides complete context: what it returns, default behavior, and special cases. References sibling tool for related but separate functionality.

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

Parameters4/5

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

No parameters; schema empty. Description adds value by explaining response structure, defaults, and null handling.

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

Purpose5/5

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

Clearly states the tool retrieves notification preferences, specifying the HTTP method and endpoint. Distinguishes from sibling tool for locator digest.

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

Usage Guidelines5/5

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

Explicitly says when to use (get preferences) and when not to (for locator digest, use separate tool). Provides alternative.

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

notifications_updateAInspect

PATCH /notifications — Update your notification preferences

Update any subset of your notification preferences. Send only the categories/channels you want to change — the rest stay as-is. Email is rejected for reaction / myReaction (not supported).

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoriesYesPer-category push/email toggles. Pass only the categories + channels you want to change.
Behavior3/5

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

Without annotations, the description carries full burden. It explicitly states it is a WRITE operation that mutates data and mentions a specific rejection case. However, it does not cover idempotency, authorization requirements, or rate limits, which are typical for mutation tools.

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

Conciseness5/5

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

The description is extremely concise with three sentences. It front-loads the HTTP method and purpose, includes a usage guideline, and a warning. No wasted words.

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

Completeness4/5

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

For a tool with one parameter and no output schema, the description covers the operation, partial update behavior, and a specific error condition. It does not mention response format or error codes, but it is largely sufficient for an agent to understand how to use it correctly.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by reinforcing the partial update behavior (PATCH semantics) and the constraint on email for reaction/myReaction, which is not in the schema. It enhances understanding beyond the schema description.

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

Purpose4/5

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

The description clearly states the verb (Update) and resource (notification preferences). It includes the HTTP method PATCH, which distinguishes it from siblings like 'notifications' (likely a GET). However, it does not explicitly differentiate from other update tools.

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

Usage Guidelines4/5

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

The description explains when to use it: to update a subset of preferences, and provides a specific constraint: email is not supported for reaction/myReaction. It lacks explicit alternatives (e.g., for reading use 'notifications'), but the context is clear enough.

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

placeAInspect

GET /places/:placeID — Get place details

Fetch full details for one Google Place ID. Useful for verifying a placeID before sending it to POST /trips (which only accepts type: "city" placeIDs and rejects venues with a 400). Same shape as a single entry from GET /places/search.

ParametersJSON Schema
NameRequiredDescriptionDefault
placeIDYesGoogle Place ID. Get one from `GET /places/search` or from a previous response (e.g. `event.city.placeID`).
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It indicates the tool is a GET request (read-only) and describes the return shape. It does not mention authentication, rate limits, or side effects, but given its simplicity, the description is adequate.

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

Conciseness5/5

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

The description is concise with two sentences and a parenthetical note. It front-loads the HTTP method and endpoint, then immediately states the purpose. Every sentence adds value without redundancy.

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

Completeness4/5

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

The description covers the tool's purpose, usage, and output shape (same as GET /places/search). Given there is no output schema and only one parameter, the description is sufficiently complete for an agent to understand how and when to use it.

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

Parameters4/5

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

The schema provides 100% coverage with a description for placeID. The tool description adds context by clarifying it's a Google Place ID and explains where to obtain it (from GET /places/search or previous responses), enhancing the schema's minimal description.

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

Purpose5/5

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

The description clearly states it fetches full details for one Google Place ID, distinguishing from the search tool. It also explains the specific use case of verifying a placeID before using it with POST /trips, establishing a distinct purpose.

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

Usage Guidelines4/5

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

The description explicitly advises using this tool to verify a placeID before sending it to POST /trips, noting that POST /trips only accepts type:'city' placeIDs and rejects venues. It also mentions the output shape matches GET /places/search, providing context for when to use each. However, it doesn't include exhaustive 'when not to use' scenarios, but the guidance is still solid.

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

profileAInspect

GET /profile — Get your own profile

Returns your own full profile — every field the in-app profile editor surfaces to you, plus tier-derived state. Same shape regardless of tier (DC and DC BLACK members get identical own-profile payloads). Use PATCH /profile to update editable fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

The description discloses the return shape (full profile, identical across tiers), and that it includes tier-derived state. Since no annotations are provided, the description adequately covers behavioral aspects, though it omits authentication requirements or rate limits.

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

Conciseness5/5

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

The description is extremely concise, consisting of two sentences plus a code reference. It front-loads the HTTP method and purpose, and every sentence adds value.

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

Completeness5/5

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

Without an output schema, the description sufficiently explains what is returned (full profile, same shape regardless of tier, includes editor fields and tier-derived state). It also guides users to the update tool, making it complete for this read-only endpoint.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100%. Thus, the description does not need to add parameter info. A score of 4 is appropriate for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the tool retrieves the user's own profile via GET /profile, specifying it returns every field from the profile editor plus tier-derived state. It distinguishes itself from the PATCH /profile update tool.

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

Usage Guidelines4/5

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

It explicitly states when to use: to get your own profile, and mentions the PATCH /profile tool for updates. However, it does not address when not to use it, such as needing another user's profile, though the context of 'your own profile' implies that limitation.

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

profile_match_createAInspect

POST /profile-match — Match DCers from a description (or recommend if omitted)

AI-powered profile matchmaker. Match DCers against a natural-language description, or — when query is omitted — recommend DCers based on your own profile (chapter, industry, expertise, goals).

Returns ranked results from a profile-vector search (Gemini embeddings + reranking under the hood). The caller's LLM synthesizes any narrative on top. Stricter rate limits than the standard CRUD endpoints because of the embedding/rerank cost.

Two modes:

  • With query: free-form description ("DCers in Lisbon who run SaaS").

  • Without query: AI builds an implicit query from your profile and returns "DCers you should meet". Useful for cold-start "who should I message this week?" prompts.

Optional structured filters (combine with either mode, all AND-ed):

  • locationChapterPlaceID — narrow to DCers whose home / base location matches this Google Place ID. Use for "based in X" queries. Resolve via GET /places/search.

  • locationCurrentPlaceID — narrow to DCers currently in this place (auto-derived from their last GPS / active trip). Use for "currently in X" / "visiting X" queries.

  • eventID — narrow to DCers holding a valid ticket to this event ("DCers attending DCMEX who run logistics"). Refunded / canceled tickets are excluded.

  • isDCB — when true, narrow to DC BLACK members only.

  • businessIndustry — exact match on the DCer's primary business industry.

  • minTeamSize — "at least this size" filter on team headcount (only matches DCers whose team-size visibility is shared with all DCers).

  • minAnnualRevenue — "at least this revenue" filter on annual revenue (only matches DCers whose revenue visibility is shared with all DCers).

  • gender — exact match on the DCer's self-reported gender. Note: Gender is sparsely populated — most DCers leave it blank. Use this as a "narrow if set" hint rather than a hard requirement; combine with query for best results.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
isDCBNoOptional. When `true`, narrows results to DC BLACK members only.
limitNoMax results (1-50, default 50). Hard cap at 50 — match is expensive; narrow with filters instead of paginating.
queryNoFree-form description of the DCers you want to find. Omit to get recommendations based on your own profile.
genderNoOptional. Exact-match filter on the DCer's self-reported gender. Allowed values: `Man`, `Woman`, `Non-binary`, `Prefer not to say`. **Note: Gender is sparsely populated — most DCers leave it blank** — combine with `query` rather than relying on this alone.
eventIDNoOptional. DC event ID — narrows results to DCers with a valid ticket (RSVP yes/maybe or paid). Pair with `query` for "DCers attending X who do Y".
minTeamSizeNoOptional. "At least this team size" filter — matches DCers whose team-size bucket is >= this value, ordered as `None < 1-2 < 3-5 < 6-9 < 10-14 < 15-19 < 20-34 < 35-49 < 50-74 < 75-99 < 100+`. `Prefer not to say` also exists in the bucket vocabulary but is treated as "unknown" and always filtered out. Only DCers who set their team-size visibility to "all DCers" are matched; the rest are excluded silently.
skipRerankingNoOptional. When `true`, skip the keyword reranker and return results in raw vector-similarity order. Useful when the query is fuzzy/semantic (where exact keyword overlap would add noise) or when comparing reranked vs raw ordering.
businessIndustryNoOptional. Exact-match filter on the DCer's primary business industry. Allowed values: `SaaS & Tech`, `Marketing Agency`, `Productized Services`, `Ecommerce & Amazon`, `Courses and Info Products`, `Affiliate, Content Creation, or Ad Revenue`, `Professional Services & Industry Specific Consulting`, `Real Estate and Investing`, `Coaching`, `Other`.
minAnnualRevenueNoOptional. "At least this revenue" filter on annual revenue. Pass any revenue label (e.g. `$1M+`, `$250K+`, `$100K+`); the filter parses to a number and matches DCers at-or-above. Only DCers who set their revenue visibility to "all DCers" are matched; the rest are excluded silently.
locationChapterPlaceIDNoOptional. Google Place ID — narrows results to DCers based here ("based in X"). Resolve via `GET /places/search`.
locationCurrentPlaceIDNoOptional. Google Place ID — narrows results to DCers currently here, whether they live there or are visiting. **Sparsely populated** — `currentLocation` is self-reported and most DCers leave it null, so this filter under-recalls. For "who is in <city> right now?" prefer creating a trip via `POST /trips` and reading `GET /trips/:tripID` — the `discovery.fullPool` block lists locals AND visitors during the trip window. Resolve placeIDs via `GET /places/search`.
Behavior5/5

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

Discloses AI-powered nature, write operation, mutation of account data, rate limits, and limitations of filters like gender and location. No annotations exist to contradict.

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

Conciseness4/5

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

Well-structured with sections and bullet points, but somewhat lengthy. Front-loaded with key info; each sentence adds value.

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

Completeness4/5

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

Covers both modes, filter behaviors, rate limits, and limitations. Lacks output schema but describes return type ('ranked results'). Sufficient for the tool's complexity.

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

Parameters5/5

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

Adds significant context beyond the schema: explains modes, how filters interact, when they under-recall, and how to combine them. Schema coverage is 100% but description enriches every parameter.

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

Purpose5/5

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

The description clearly states the tool's purpose: matching DCers based on a natural-language description or recommending based on the user's profile. It distinguishes two modes and contrasts with sibling tools like search_profiles.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use each mode, warns about rate limits and sparsely populated filters, and suggests alternative tools (e.g., trips for current location).

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

profile_updateAInspect

PATCH /profile — Update profile fields

Update allowed profile fields. Only the fields you include will be changed. Location, photo, and gender cannot be updated via API.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
dietNoDietary restrictions — used when DC plans event meals.
githubNoGitHub username only (no URL prefix). 1-39 chars per GitHub's rules: letters, digits, `-`. Required to be granted access to the public DC client repo — set this to opt in.
hobbiesNoYour non-business hobbies — games, camping, art, sports, anything (up to 1600 chars).
twitterNoTwitter/X username only (no URL prefix). 1-15 chars: letters, digits, `_`.
facebookNoFacebook username only (no URL prefix). 5-50 chars: letters, digits, `.`.
headlineNoOne-sentence elevator pitch shown at the top of your DC profile (max 64 chars).
linkedinNoLinkedIn username only (no URL prefix). 1-50 chars: letters, digits, `.`, `_`, `-`.
nicknameNoDisplay name override — what other DCers see in addition to your real name (max 256 chars).
teamSizeNoNumber of full-time and part-time team members in your primary business. Predefined bracket.
whatsAppNoWhatsApp phone number in international format — `+` followed by 5-16 digits, no dashes or spaces. Required if you want to be added to the DC WhatsApp community. Always private — only visible to DC staff.
expertiseNoAreas you might consider yourself an expert in — skills you can use to help other members (up to 1600 chars).
focusmateNoFocusmate username only (no URL prefix). 3-50 chars: letters, digits, `_`, `-`.
instagramNoInstagram username only (no URL prefix). 1-30 chars: letters, digits, `.`, `_`.
shirtSizeNoT-shirt size — used when DC sends event swag.
spouseNameNoName of your spouse or partner — used only for the DCBKK partner pass. Always private (DC staff only).
businessNameNoName of the main business you run or are primarily focused on right now (max 256 chars). You can list other businesses in `otherBusinesses`.
annualRevenueNoApproximate annual revenue (in U.S. dollars) of your primary business over the last 12 months. Predefined bracket.
businessWebsiteNoPublic website for your primary business — single URL only (max 256 chars).
otherBusinessesNoOther businesses you currently operate. Feel free to share URL, short description, and year started for each (up to 1600 chars).
yearsInBusinessNoHow long you have been on the entrepreneurial path. Used for matching with other members. Predefined bracket.
businessIndustryNoCategory your primary business fits into. Must be one of the predefined industries.
currentChallengeNoYour current business challenge or goal. Used internally to match you with other members who can help (up to 1600 chars).
peopleOfInterestNoWhat kinds of community members you would like to connect with. Used to send recommendations of relevant DCers (up to 1600 chars). Set `peopleOfInterestIsPrivate: true` to keep this visible only to DC staff.
relevantLocationsNoCities or regions you frequently visit. Helps surface trip overlaps with other members (up to 1600 chars).
teamSizeIsPrivateNoVisibility of your team size. `true` = hidden from other DCers (only DC staff can see it); `false` = visible to all DCers.
previousBusinessesNoPrevious business exits and entrepreneurial experience worth listing (up to 1600 chars).
askMeAnythingTopicsNoTopics other members can ask you about, in your field of expertise (up to 1600 chars).
businessDescriptionNoDescription of your primary business. Plain text or HTML, up to 1600 chars.
annualRevenueIsPrivateNoVisibility of your revenue. `true` = hidden from other DCers (only DC staff can see it); `false` = visible to all DCers.
peopleOfInterestIsPrivateNoVisibility of your "who I want to meet" answer. `true` = hidden from other DCers (only DC staff can see it); `false` = visible to all DCers.
Behavior4/5

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

With no annotations, the description carries full burden. It correctly identifies the operation as a WRITE mutation to DC account data and states which fields are immutable. 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 front-loaded with the HTTP method and core purpose. It is compact (5 sentences) and covers key points without excess. Could potentially be more structured, but it's efficient.

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

Completeness4/5

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

Given 30 parameters, no output schema, and no annotations, the description provides sufficient context: what the tool does, which fields are mutable, and the destructive nature. Adequate for an agent to use it correctly.

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

Parameters4/5

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

Schema has 100% coverage with individual parameter descriptions. The tool description adds context about PATCH semantics and immutable fields, which complements the schema well.

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

Purpose5/5

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

The description clearly states it updates profile fields via PATCH, with a specific verb and resource. It distinguishes itself from sibling tools like 'profile' (GET) and 'profile_match_create' (different action).

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

Usage Guidelines4/5

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

Explicitly mentions that only included fields change and lists fields that cannot be updated via API (location, photo, gender). Provides a warning about mutation. However, it does not explicitly contrast with alternative tools like 'profile' for when to use this vs reading.

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

report_issue_createAInspect

POST /report-issue — Report an issue or feedback

Submit a bug report, feedback, or question to the DC team. Optionally include a base64-encoded screenshot (PNG, JPEG, or WebP, up to 4 MB raw).

Privacy note: Screenshots and report text are sent unredacted to the DC team. Don't include passwords, payment details, or other secrets.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesA short description of the issue or feedback (1–4000 chars).
contextNoOptional structured debug context — anything useful for triage (last error, request payload, endpoint, etc.). Up to 32 keys.
severityNoSeverity: bug | feedback | question. Defaults to "bug".
screenshotNoOptional base64-encoded screenshot. Accepts raw base64 OR a data URL (e.g. `data:image/png;base64,...`). PNG, JPEG, or WebP only. Max 4 MB raw, clamped to 4096×4096; re-encoded server-side to strip EXIF.
Behavior5/5

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

No annotations provided, so the description fully addresses behavioral traits. It explicitly states this is a 'WRITE operation' that mutates account data, warns that screenshots and text are sent unredacted, and details screenshot constraints (format, size, EXIF stripping). This is comprehensive.

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

Conciseness5/5

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

The description is concise, with a clear header line, followed by details, privacy note, and mutation warning. Every sentence provides essential information without redundancy. Well-structured for quick consumption.

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

Completeness3/5

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

The description covers usage and constraints but lacks information about what happens after submission (e.g., response format, confirmation, error handling). For a mutation tool, this is a gap. With no output schema, expecting basic success/failure feedback would improve completeness.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaningful context beyond the schema, such as base64 encoding details for screenshot, size limits, and data URL format. It also clarifies the 'context' parameter as 'debug context'. This adds value for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Report an issue or feedback' and 'Submit a bug report, feedback, or question'. It uses specific verbs (report/submit) and identifies the target resource (issues/feedback to DC team). No sibling differentiation needed as no other reporting tools exist.

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

Usage Guidelines4/5

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

The description explains optional features (screenshot inclusion) and provides a privacy note, offering clear context. However, it does not explicitly state when to use this tool versus alternatives, but given no alternative reporting tools in siblings, the guidance is adequate.

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

roomsAInspect

GET /rooms — List your subscribed rooms

Returns every room you are subscribed to (DMs, group DMs, channels you follow, discussions, activities, event rooms), sorted by lastActivityAt descending. Cursor-paginated.

To filter by type use GET /rooms/inbox/:type (e.g. /rooms/inbox/dm for DMs only).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100)
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior4/5

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

No annotations present, so description carries full burden. It discloses cursor-paginated behavior and sorting order. Could mention that it's read-only, but the GET verb implies it. Lacks details on side effects or response structure beyond pagination.

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 short sentences, front-loaded with endpoint and purpose. No wasted words; each sentence adds essential information.

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

Completeness4/5

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

Given no output schema, description explains return types (list of rooms) and sorting. Lacks details on response shape (room object fields) but sufficient for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by explaining cursor usage ('from a previous response's nextCursor') and reinforces limit default. Confirms pagination context beyond schema.

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

Purpose5/5

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

Description clearly states the tool lists subscribed rooms with specific types (DMs, group DMs, channels, etc.) and mentions sorting by lastActivityAt. It distinguishes itself from sibling tools like rooms_inbox or rooms_browse.

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

Usage Guidelines5/5

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

Provides explicit when-to-use (list all rooms) and when-not-to-use via alternative: 'To filter by type use GET /rooms/inbox/:type'. This helps the agent choose correctly.

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

rooms_archive_createAInspect

POST /rooms/:roomID/archive — Archive a room

Archive a room — hides it from the inbox sidebar without unsubscribing. Use unarchive to bring it back. Access: the caller must be a member/subscriber. Idempotent.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

With no annotations provided, the description fully discloses that this is a WRITE operation that mutates data, is idempotent, and requires membership. It explains the behavioral effect (hide from inbox sidebar) but could additionally note what data exactly is changed.

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

Conciseness5/5

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

The description is extremely concise with four short sentences, each adding critical information. It uses formatting (bold, emoji) to highlight access and WRITE nature, and front-loads the main action.

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

Completeness5/5

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

For a simple tool with one parameter, the description covers the action, effect, side effects (idempotent), access requirement, and reversal operation. No gaps are present given the tool's simplicity and lack of output schema.

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

Parameters3/5

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

Schema description coverage is 100% (roomID 'Room ID'), so baseline is 3. The description does not add any parameter-level detail beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'Archive' and the resource 'a room', with the specific effect of hiding from inbox sidebar without unsubscribing. It distinguishes itself from the sibling tool 'rooms_unarchive_create' by explicitly mentioning unarchive.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use (to hide from inbox sidebar without unsubscribing), access requirements (must be a member/subscriber), and the reverse operation (use unarchive). It also notes idempotency.

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

rooms_browseAInspect

GET /rooms/browse/:type — Browse public channels by type

Browse publicly-joinable rooms of a given type that you are NOT yet subscribed to. The same surface the in-app Browse Channels modal shows. DC BLACK rooms are filtered out for DC tier members.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesRoom type to browse. Allowed: `channel`, `discussion`, `quick-question`.
limitNoMax results (1-100)
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior3/5

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

With no annotations, the description carries full burden. It correctly implies a read operation (GET) and mentions filtering behaviors. However, it lacks details on authentication, rate limits, or the absence of destructive effects.

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

Conciseness5/5

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

The description is concise with two sentences that front-load the endpoint and purpose. Every sentence provides value with no redundant information.

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

Completeness3/5

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

The description covers usage context (room type, subscription status, DC BLACK filter) but does not describe the return format or pagination behavior, which is important given the cursor parameter and absence of an output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema for parameters; only 'type' is referenced in context.

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

Purpose5/5

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

The description clearly states the verb 'browse' and the resource 'publicly-joinable rooms by type'. It explicitly notes that it returns only rooms the user is NOT subscribed to, distinguishing it from other room tools like rooms_subscribe_create or rooms.

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 indicates when to use this tool (to discover rooms not yet subscribed to) and notes filtering of DC BLACK rooms. However, it does not explicitly contrast with sibling tools like rooms (which lists subscribed rooms) or rooms_subscribe_create.

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

rooms_by_idAInspect

GET /rooms/:roomID — Get a single room

Get a single room's metadata + its latest daily AND weekly AI summaries (when they exist). Access: members and subscribers of the room, plus any DCer for browsable public channels/discussions/quick-questions. Private rooms, DMs, group DMs, and event/city rooms you are not a member of return 403. Reading this endpoint does not mark the room as read or modify any unread state.

AI summaries: the latest daily digest is embedded under aiSummaryDaily, the latest weekly digest under aiSummaryWeekly. Rooms that don't have a given type yet return null for that slot. For history (older summaries), call GET /rooms/:roomID/summaries/daily or /weekly.

See also: For specific content (did anyone mention X?), POST /search/messages with q= and roomID= is faster than paginating /rooms/:roomID/messages or reading summaries. The AI summaries cover broad activity per window; search is the tool for targeted lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

Discloses that reading does not modify unread state or mark as read, and addresses access restrictions. It explains the return values for summaries (null if absent). No annotations were provided, so the description carries full burden and does a good job, though it does not mention rate limits or data freshness.

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?

Starts with the route and core action, then efficiently covers access, side effects, response structure, and alternative tools. Every sentence adds value, and the structure is clean and front-loaded.

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

Completeness4/5

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

Given one parameter, no output schema, and no annotations, the description covers purpose, usage, behavior, and alternatives quite thoroughly. It lacks explicit mention of rate limits or full response shape, but for a simple single-room retrieval tool, it is nearly complete.

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

Parameters3/5

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

Only one parameter (roomID) with schema description 'Room ID'. Since schema description coverage is 100%, baseline is 3. The description adds context about what the tool returns but does not elaborate on the parameter format or constraints, so no extra value beyond schema.

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

Purpose5/5

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

The description clearly states it retrieves a single room's metadata and AI summaries, using the verb 'Get' and specifying the resource. It distinguishes itself from sibling tools like rooms, rooms_summaries, and search_messages by focusing on single room retrieval with summaries.

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

Usage Guidelines5/5

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

Provides explicit access conditions (members, subscribers, DCers, with clear 403 cases). It specifies that this endpoint does not mark the room as read, and offers alternatives like POST /search/messages for specific content queries and other endpoints for summary history.

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

rooms_inboxAInspect

GET /rooms/inbox/:type — List your rooms by type

Returns your subscribed rooms filtered to a single type. Same shape as GET /rooms but scoped — e.g. /rooms/inbox/dm returns DMs only, /rooms/inbox/group returns group DMs.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesRoom type filter. Allowed: `channel`, `dm`, `group`, `discussion`, `quick-question`, `event`.
limitNoMax results (1-100)
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions the return shape matches GET /rooms, but does not disclose that it only returns subscribed rooms, pagination behavior, or required authentication. Adequate but could be more explicit.

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

Conciseness5/5

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

Two concise, well-structured sentences. The endpoint and purpose are front-loaded, with a clarifying example. No unnecessary content.

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

Completeness4/5

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

Given 3 parameters and no output schema, the description adequately explains the tool's purpose and scope. It references the shape of another tool but does not fully define the return structure. Still complete for a straightforward listing tool.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add additional meaning to parameters beyond what the schema provides (e.g., type allowed values, limit, cursor). No extra 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 explicitly states the tool lists rooms by type, with an HTTP endpoint and concrete examples (DMs, group DMs). It clearly distinguishes from the sibling 'rooms' tool by specifying it returns a filtered subset.

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

Usage Guidelines4/5

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

Indicates this is the scoped version of GET /rooms, implying use when a specific room type is needed. Does not explicitly state when not to use, but the context is clear and alternatives are inferable from sibling tools.

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

rooms_messagesAInspect

GET /rooms/:roomID/messages — List messages in a room

List messages in a room you are a member of. Read-only — no write side effects, no unread-state mutation, no reactions/posts/edits. Cursor-paginated newest-first.

Access: strict — the caller must be a subscribed member of the room (same seen doc check used by the web inbox). For browsable public channels, any DCer can read. Private rooms, DMs (dm), group DMs (group), event rooms, and city/country/mastermind rooms hard-block non-members with 403. Hidden/deleted/sunk messages are excluded.

Pagination: pass ?before=<nextCursor> from a previous response to fetch the next (older) page. Default page size 50, max 50.

See also: For specific content in this room (did anyone mention X?), POST /search/messages with q= and roomID= searches body text directly — far faster than paginating with ?before. This endpoint is the right call when you want a chronological window (last N messages, conversation reconstruction); search is the right call when you want a topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-50)
beforeNoCursor from a previous response's `nextCursor` (encodes the previous page's oldest message timestamp). Pass to fetch the next older page.
roomIDYesRoom ID. Discover from `GET /rooms` (your subscribed list), `GET /inbox/unread`, `trip.roomID` on `GET /trips/:tripID`, or event chat-room IDs on `GET /events/:eventID`.
Behavior5/5

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

No annotations provided, so description carries full burden. It clearly states read-only behavior, no side effects, exclusion of hidden/deleted/sunk messages, and cursor-paginated, newest-first order. This is comprehensive.

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

Conciseness4/5

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

Well-structured with clear sections, front-loaded purpose and key behavior. Each sentence adds value; no waste. Slightly longer than necessary but still efficient for the complexity.

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

Completeness4/5

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

Given no output schema, description covers pagination, access rules, exclusion of certain messages, and sibling differentiation. Could mention response format (list of message objects) but is adequate for agent selection and invocation.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds extra meaning: for 'before' it explains it encodes the previous page's oldest message timestamp; for 'roomID' it lists discovery methods; for 'limit' confirms max 50. Adds value beyond schema.

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

Purpose5/5

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

The description clearly states the tool lists messages in a room with explicit verb ('List') and resource ('messages in a room'). It distinguishes from sibling search_messages by describing use cases (chronological window vs topic search).

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use this tool vs alternatives: 'This endpoint is the right call when you want a chronological window... search is the right call when you want a topic.' Also details access restrictions and pagination usage.

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

rooms_mute_createAInspect

POST /rooms/:roomID/mute — Mute a room

Mute notifications for a room. Sets mutedUntilAt to a far-future timestamp (no expiry) — the room stays muted until explicitly unmuted. The room still appears in the inbox; only notifications are suppressed.

Access: the caller must be a member/subscriber of the room.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that it is a WRITE operation, sets a persistent mute state until explicitly unmuted, and only suppresses notifications (room still visible). This covers key behavioral traits, though it could mention idempotency or rate limits.

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

Conciseness5/5

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

The description is well-structured with a clear first line (HTTP method and path), followed by a precise explanation, access condition, and a warning label. Every sentence is necessary and contributes to understanding, with no extraneous text.

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

Completeness5/5

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

Given the tool's low complexity (single parameter, no output schema) and the context provided (effect, access, mutation warning), the description is fully adequate. No additional details are required.

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

Parameters3/5

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

The schema covers 100% of parameters, and the description implicitly identifies roomID as the path parameter. However, it adds no additional meaning beyond the schema's 'Room ID' description. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (Mute), the resource (a room), and the specific effect: suppressing notifications while keeping the room in the inbox. It explicitly mentions the far-future timestamp and the need for explicit unmuting, distinguishing it from related tools like rooms_unmute_create.

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

Usage Guidelines4/5

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

It provides access requirements (must be a member/subscriber) and a warning about mutation, but does not explicitly guide when to use this tool versus alternatives (e.g., rooms_unmute_create or other notification-related tools). The context is clear enough for most use cases.

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

rooms_pin_createAInspect

POST /rooms/:roomID/pin — Pin a room

Pin a room to the top of the inbox. For subscription-type rooms the caller is auto-subscribed if not already (mirrors the in-app behavior — you can't pin what you don't follow). Access: the caller must already have an interaction history with the room (DMs and group DMs require having received at least one message). Idempotent.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior5/5

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

No annotations provided, so description carries full burden. It explicitly states it's a WRITE operation that mutates data, mentions auto-subscription behavior, and idempotency. This is thorough behavioral disclosure.

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

Conciseness4/5

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

The description is concise and well-structured: method path, action, conditions. Minor redundancy (e.g., 'Pin a room' in both title and body), but overall efficient.

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

Completeness5/5

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

With one parameter and no output schema, the description fully covers behavior, access constraints, and idempotency. Enough for an agent to determine correct usage without ambiguity.

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?

Only one parameter (roomID) with schema description 'Room ID'. Description adds context about roomID's role in the URL and access conditions, going beyond the schema. However, parameter semantics are simple, so a high score is still 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 action: 'Pin a room to the top of the inbox.' It uses a specific verb ('pin') and resource ('room'), and distinguishes from sibling tools like rooms_unpin_create.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: auto-subscription for subscription-type rooms, access condition requiring interaction history, and idempotency. Clearly tells when the tool can be used.

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

rooms_subscribe_createAInspect

POST /rooms/:roomID/subscribe — Subscribe to a room

Subscribe to a public channel, discussion, quick-question room, or event room. The caller is added to the room's seen subcollection with flags.isSubscribed: true and starts receiving its updates in their inbox.

Access: the room must be enabled, non-archived, non-private, non-hidden, and of a subscribable type (channel, discussion, quick-question, event). Event rooms additionally require a valid ticket to the linked event — call /events/:eventID first to verify ticket status. DMs and group DMs cannot be subscribed/unsubscribed via the API; they are managed in-app only.

Idempotent: subscribing when already subscribed is a no-op (returns 200 with the current state).

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that this is a WRITE operation, idempotent, and describes access conditions (room must be non-archived, non-private, etc.). Adds detail about the internal effect (flags.isSubscribed: true). Could mention error responses, but given no output schema, this is adequate.

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

Conciseness4/5

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

Well-structured with bold headings for Access and Idempotent. Concise enough given the necessary detail; no superfluous sentences. A bit verbose but still effective.

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

Completeness4/5

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

Given one required parameter and no output schema, the description covers purpose, access conditions, idempotency, and mutation warning. Lacks details on error scenarios or exact response format, but is sufficient for a simple subscribe action.

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% (roomID with description 'Room ID'). Description adds semantic context: roomID must belong to a subscribable type and event rooms require a valid ticket. This adds value beyond the schema's basic type info.

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

Purpose5/5

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

Clearly states the verb 'subscribe' and resource 'room', specifies subscribable room types (channel, discussion, quick-question, event), and distinguishes from siblings like rooms_unsubscribe_create. The description is specific about the effect (added to seen subcollection).

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

Usage Guidelines4/5

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

Explicitly states when to use (subscribable room types) and when not (DMs/group DMs must be managed in-app). Includes prerequisites for event rooms (valid ticket). Does not directly name alternatives but provides clear context for correct usage.

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

rooms_summariesAInspect

GET /rooms/:roomID/summaries/:type — List past daily or weekly summaries

List past summaries of a given type for a room, newest first. Cursor-paginated — pass cursor from the previous response to fetch the next (older) page.

Each summary covers a non-overlapping window (one per day for daily, one per week for weekly). Use this for catch-up workflows ("show me the last 7 daily summaries before I rejoin the conversation"). Same access gate as GET /rooms/:roomID.

See also: Summaries cover broad activity per window. For specific content (did anyone mention X?), POST /search/messages with q= and roomID= is faster than reading multiple summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesSummary type — `daily` or `weekly`.
limitNoMax results (1-50)
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next (older) page.
roomIDYesRoom ID
Behavior4/5

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

No annotations provided, so description bears full burden. It discloses cursor-paginated behavior, non-overlapping windows, and implies read-only operation. Lacks explicit idempotency statement but is sufficient for a read operation.

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

Conciseness5/5

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

Well-structured with front-loaded HTTP path and summary. Subsequent paragraphs explain pagination and use cases. Every sentence adds unique information; no redundancy or fluff.

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

Completeness3/5

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

No output schema, but description doesn't specify the structure of each summary object. Mentions 'nextCursor' but not other response fields. Adequate for a list tool but leaves some ambiguity about returned data.

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%, providing baseline. Description adds value by explaining cursor usage ('pass cursor from previous response's nextCursor'), default limit, and valid types ('daily' or 'weekly'), going beyond schema.

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

Purpose5/5

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

The description clearly states the tool lists past daily or weekly summaries for a room, using a specific HTTP path. It distinguishes itself from siblings like 'rooms_summary' (singular) by implying it returns multiple summaries, and explicitly mentions an alternative tool for specific content search.

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

Usage Guidelines5/5

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

Provides explicit use cases: 'Use this for catch-up workflows'. Offers clear alternative guidance: 'POST /search/messages ... is faster than reading multiple summaries' for specific content queries. Also mentions access gate consistency.

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

rooms_summaryAInspect

GET /rooms/:roomID/summary/:type — Get the latest daily or weekly summary

Get the latest single summary of a given type for a room.

Type is required — daily and weekly summaries cover different windows and live in separate slots. Pass the type you want as a path segment.

For history (multiple past summaries) use GET /rooms/:roomID/summaries/:type. Same access gate as GET /rooms/:roomID.

See also: AI summaries cover broad activity per window. For specific content (did anyone mention X?), POST /search/messages with q= and roomID= is faster than reading summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesSummary type — `daily` or `weekly`.
roomIDYesRoom ID
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions that the access gate is the same as GET /rooms/:roomID, hinting at authorization, but does not explicitly state whether the operation is read-only or idempotent, nor does it disclose any side effects or rate limits. While the behavior is typical for a GET endpoint, the description could be more explicit.

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 structured into three paragraphs with important information front-loaded. The first paragraph states the endpoint and purpose, the second clarifies the type parameter, and the third provides alternatives. It is not overly verbose, but the third paragraph could potentially be more concise.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no output schema, no annotations), the description covers the purpose, usage, parameter constraints, and alternatives. It does not describe the return format, but this is acceptable since there is no output schema and the tool is a straightforward retrieval of a summary.

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

Parameters4/5

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

Schema coverage is 100% and the description adds meaningful context beyond the schema: it explains that type is a path segment and that daily and weekly summaries cover different windows and live in separate slots. This extra detail helps the agent understand the parameter semantics better than the schema alone.

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

Purpose5/5

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

The description clearly states the verb (GET), resource (/rooms/:roomID/summary/:type), and scope (latest single summary of a given type for a room). It distinguishes from the sibling tool rooms_summaries by specifying that this one retrieves only the latest, while the sibling is for history.

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

Usage Guidelines5/5

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

Explicitly states that type is required and explains the difference between daily and weekly summaries. Provides clear alternatives: use rooms_summaries for history and search_messages for specific content queries. This helps the agent decide when to use this tool versus others.

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

rooms_unarchive_createAInspect

POST /rooms/:roomID/unarchive — Unarchive a room

Unarchive a previously-archived room. Restores it to the inbox sidebar. Access: the caller must be a member/subscriber. Idempotent.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses it's a WRITE operation, mutates data, requires membership, and is idempotent. This is good, but could mention any additional side effects or restrictions.

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

Conciseness5/5

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

The description is concise and well-structured: endpoint, action, effect, access, idempotence, and warning. Every sentence adds value.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description covers purpose, behavior, access, and idempotence. References to sibling tools (archive) are implicit. It's complete.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter 'roomID'. The description does not add meaning beyond the schema's 'Room ID' description, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Unarchive' and the resource 'room', and explains the effect 'Restores it to the inbox sidebar'. It distinguishes from the sibling tool 'rooms_archive_create'.

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

Usage Guidelines4/5

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

The description explains when to use: to unarchive a previously-archived room. It mentions idempotent, but doesn't explicitly state when not to use or provide alternatives. The context is clear.

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

rooms_unmute_createAInspect

POST /rooms/:roomID/unmute — Unmute a room

Unmute a previously-muted room. Clears mutedUntilAt. Access: the caller must be a member/subscriber of the room. Idempotent.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses the side effect of clearing mutedUntilAt, idempotency, and that it's a write operation mutating data. Additional details like rate limits or error conditions are missing but not critical.

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

Conciseness5/5

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

The description is extremely concise with three short paragraphs, using markdown for emphasis. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given only one parameter and no output schema, the description adequately covers purpose, usage, and behavior. It could optionally mention expected response or errors, but it is sufficiently complete.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no extra meaning beyond the schema's 'Room ID' description. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool unmutes a room, with the HTTP method and endpoint. It distinguishes from sibling tools like rooms_mute_create, which performs the opposite action.

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

Usage Guidelines4/5

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

It specifies when to use (unmute a previously-muted room) and includes access requirements and idempotency. It does not explicitly state when not to use, but the context of siblings makes it clear.

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

rooms_unpin_createAInspect

POST /rooms/:roomID/unpin — Unpin a room

Unpin a previously-pinned room. Returns it to its normal place in the inbox sort order. Access: the caller must be a member/subscriber. Idempotent.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior4/5

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

No annotations provided, so the description bears full responsibility. It discloses it's a WRITE (mutating) operation, idempotent, and requires membership. This adequately informs the agent of behavioral traits beyond the basic action.

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

Conciseness5/5

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

Extremely concise: two sentences followed by a warning. All information is front-loaded and every sentence adds value. No redundancy.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description is complete. It covers the action, access condition, idempotency, mutation warning, and effect on inbox order.

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% (roomID described as 'Room ID'). The description adds no additional parameter semantics beyond the endpoint path. Baseline score 3 is appropriate as the schema already covers the parameter.

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

Purpose5/5

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

The description clearly states the tool unpins a room and returns it to normal inbox order. It uses a specific verb 'Unpin' and resource 'room', distinguishing it from the sibling tool rooms_pin_create.

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

Usage Guidelines4/5

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

The description states when to use (to unpin a previously-pinned room). It does not explicitly mention when not to use or alternatives, but the context of pin/unpin versus other room actions is clear from the sibling list.

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

rooms_unsubscribe_createAInspect

POST /rooms/:roomID/unsubscribe — Unsubscribe from a room

Unsubscribe from a public channel, discussion, quick-question, or event room. The caller's seen doc is updated to flags.isSubscribed: false, the badge count is cleared, and the room drops out of the inbox sidebar.

Access: the caller must already be a subscriber. DMs and group DMs cannot be unsubscribed via the API.

Idempotent: unsubscribing when already unsubscribed is a no-op.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIDYesRoom ID
Behavior5/5

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

With no annotations, the description fully discloses effects: updates `seen` doc, clears badge count, removes from inbox. Explicitly marks as a WRITE operation with a warning about data mutation.

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

Conciseness5/5

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

Concise yet comprehensive: single line for endpoint/purpose, bullet points for access, idempotency, and warning. No fluff, every sentence adds value.

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

Completeness5/5

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

Given simple input schema, no output schema, and no annotations, the description fully covers the action, access constraints, idempotency, and mutation details, making it complete for an agent to use.

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

Parameters3/5

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

Only one parameter (roomID) with schema description 'Room ID'. The description adds no further meaning beyond the schema, which already has 100% coverage. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the tool unsubscribes from a room, listing the room types (public channel, discussion, quick-question, event). It distinguishes from siblings like rooms_subscribe_create (subscribe) and other room management tools.

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

Usage Guidelines5/5

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

Clearly specifies when to use (caller must already be a subscriber) and when not to use (DMs and group DMs cannot be unsubscribed). Also mentions idempotency, providing guidance on repeated calls.

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

search_chaptersAInspect

GET /search/chapters — Search chapters

Search DC chapters by city or country name.

Query syntax (q=): plain words match with prefix + typo tolerance. Wrap a phrase in double quotes to require an exact ordered match — e.g. q="remote work". AND/OR/NOT/parentheses are NOT parsed in q= — use the structured filter params below for boolean composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch text. Required.
pageNo1-indexed page number.
limitNoMax hits per page (1-100).
Behavior4/5

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

In the absence of annotations, the description explains search behavior (prefix matching, typo tolerance, exact phrase matching, boolean not supported). This adds significant transparency beyond the schema. However, it does not mention potential rate limits or result count limits beyond pagination.

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

Conciseness5/5

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

The description is concise with 5 sentences, front-loads the tool's purpose, and provides necessary detail without redundancy. Every sentence serves a purpose.

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

Completeness4/5

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

Given no output schema, the description adequately covers input behavior and query syntax. It misses a note about the response format (e.g., list of chapters with IDs), but for a search tool, the input documentation is sufficient.

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

Parameters4/5

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

With 100% schema coverage, the baseline is 3. The description adds value by detailing the query syntax for the 'q' parameter, which goes beyond the schema's simple 'Search text' description. Page and limit parameters are briefly covered but repeat defaults.

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

Purpose5/5

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

The description clearly identifies the tool as searching chapters by city or country name. It distinguishes from sibling tools like search_events and search_profiles by specifying the resource (chapters) and the search criteria (city/country).

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

Usage Guidelines3/5

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

The description provides query syntax guidelines but does not explicitly state when to use this tool over alternatives or when not to use it. The mention of 'structured filter params' is misleading since no such params exist in the schema, but overall the usage context is clear.

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

search_eventsAInspect

GET /search/events — Search events

Search enabled DC events by name, description, host, and venue. No default time filter — pass ?since= or ?until= (ISO 8601 dates) to constrain. They compose: pass both for an explicit window.

Query syntax (q=): plain words match with prefix + typo tolerance. Wrap a phrase in double quotes to require an exact ordered match — e.g. q="remote work". AND/OR/NOT/parentheses are NOT parsed in q= — use the structured filter params below for boolean composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch text. Required.
pageNo1-indexed page number.
limitNoMax hits per page (1-100).
sinceNoEvents ending on or after this date (ISO 8601).
untilNoEvents starting on or before this date (ISO 8601).
cityIDNoEvents whose chapter city is this Google Place ID.
userIDNoScope to events hosted by this DCer.
countryNoISO 3166-1 alpha-2 country code (e.g. `TH`, `MX`).
Behavior3/5

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

Discloses key behavioral traits: no default time filter, query syntax details (prefix+typo tolerance, exact phrase, no boolean parsing). With no annotations, the description carries full burden but omits information on authentication, rate limits, result ordering, or what 'enabled' means.

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 well-structured paragraphs with clear sections for query syntax. Uses bold and code formatting effectively. Every sentence adds value, no filler.

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

Completeness3/5

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

Input parameters are well-covered. However, with no output schema and no description of return value structure, the agent lacks context on what the response contains (e.g., list of events, fields included, pagination). For a search tool, this is a noticeable gap.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaningful context beyond schema: explains composition of time filters, query syntax (e.g., quotes for exact match), and some parameter behavior. This adds value beyond the schema descriptions.

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

Purpose5/5

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

Clearly states search action on enabled DC events by multiple fields. It includes HTTP method and path, and distinguishes from sibling search tools like search_chapters or search_profiles.

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

Usage Guidelines4/5

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

Explicitly explains time filter usage (since, until) and query syntax. Provides guidance on boolean composition limitations. However, it does not explicitly contrast with sibling tools like 'events' or 'search', which might also retrieve events.

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

search_messagesAInspect

GET /search/messages — Search messages (incl. your private DMs)

Search message bodies across every room you can access. This is the key surface for "catch me up on what was said about X" — your private DMs, group DMs, and any room you're a member of are all searchable. Messages from rooms you don't belong to are filtered out before any results return.

Scope to one room with ?roomID= (the room is double-gated against your membership — passing a roomID you're not in returns 403, not silently-empty results). Scope to one author with ?userID=. The two compose: ?roomID=<id>&userID=<id> returns just messages by that author in that one room.

Query syntax (q=): plain words match with prefix + typo tolerance. Wrap a phrase in double quotes to require an exact ordered match — e.g. q="remote work". AND/OR/NOT/parentheses are NOT parsed in q= — use the structured filter params below for boolean composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch text. Required.
pageNo1-indexed page number.
limitNoMax hits per page (1-100).
roomIDNoScope to a single room. Must be a room you are a member of — otherwise returns 403. Discover roomIDs via `GET /rooms`, `GET /inbox/unread`, or `trip.roomID` on `GET /trips/:tripID`.
userIDNoScope to messages authored by this DCer.
Behavior5/5

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

No annotations provided, but description fully compensates: discloses HTTP method (GET), membership filtering, error behavior (403 for unauthorized roomIDs), query syntax with prefix matching and typo tolerance, and that boolean operators are not parsed. Covers behavior beyond what annotations would typically provide.

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

Conciseness5/5

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

Well-structured: starts with method and URL, then scope, then parameter details, then query syntax. Every sentence adds value. No redundancy. Efficient use of formatting (bold for key phrase, code blocks).

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

Completeness4/5

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

Given 5 parameters, 1 required, and no output schema, the description is thorough. Covers behavior, error cases, parameter interactions, and query syntax. Lacks explicit description of return format or pagination details, but the context provided is sufficient for most use cases.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds significant value: explains query syntax in detail, double-gating of roomID, how to discover roomIDs, and composition of roomID and userID. Adds practical guidance beyond schema descriptions.

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

Purpose5/5

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

Description clearly states it searches message bodies across all rooms and DMs, with specific verb 'Search' and resource 'messages'. Distinguishes from siblings like 'search' (general) and 'rooms_messages' (likely fetching messages) by emphasizing cross-room scope and inclusion of private DMs.

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 calls out that this is the key tool for catching up on discussions ('catch me up on what was said about X'), describes what it covers (private DMs, group DMs, rooms), and explains scoping with roomID and userID. Lacks explicit when-not-to-use or comparison with all siblings, but provides strong contextual guidance.

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

search_profilesAInspect

GET /search/profiles — Search profiles

Full-text search across DCer profiles — headlines, bios, business descriptions, expertise, hobbies, etc. Returns matching profile records with privacy gates applied (hidden + guest profiles filtered out).

For structured/AI-driven matchmaking ("DCers in Lisbon who run SaaS"), prefer POST /profile-match — it has a richer ranking pipeline and filters. This endpoint is the plain full-text fallback.

Query syntax (q=): plain words match with prefix + typo tolerance. Wrap a phrase in double quotes to require an exact ordered match — e.g. q="remote work". AND/OR/NOT/parentheses are NOT parsed in q= — use the structured filter params below for boolean composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch text. Required.
pageNo1-indexed page number.
limitNoMax hits per page (1-50).
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behaviors: returns matching profiles with privacy gates (hidden/guest profiles filtered), query syntax (prefix, typo tolerance, phrase matching, no boolean parsing). It does not detail rate limits or side effects, but the read-only nature is implied. Solid transparency.

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 well-structured with a summary line, detailed functionality, usage alternative, and query syntax rules. Every sentence adds value, and the information is front-loaded. No waste.

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

Completeness4/5

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

Given no output schema, the description states return type (matching profile records with privacy gates) but lacks detail on response fields or pagination behavior beyond parameters. It adequately covers what the tool does but could elaborate on output structure. Still sufficiently complete for its simplicity.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already documented. The description adds query syntax details (prefix, typo tolerance, phrase matching) that go beyond the schema's field descriptions. This provides practical guidance for using the q parameter effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 performs full-text search across DCer profiles, specifying the endpoint (GET /search/profiles) and the fields searched (headlines, bios, etc.). It distinguishes from the sibling POST /profile-match, making purpose and differentiation explicit.

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

Usage Guidelines4/5

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

The description explicitly advises when to use search_profiles vs POST /profile-match: plain full-text search vs structured/AI-driven matchmaking. It also notes privacy gates but doesn't cover all search siblings (e.g., search_chapters). The alternative is well-specified, earning a 4.

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

search_roomsAInspect

GET /search/rooms — Search rooms

Search rooms by name, description, and topic. Returns rooms that match the query AND that you have access to (subscribed-or-browsable; private rooms / DMs / group DMs you're NOT a member of are filtered out).

Query syntax (q=): plain words match with prefix + typo tolerance. Wrap a phrase in double quotes to require an exact ordered match — e.g. q="remote work". AND/OR/NOT/parentheses are NOT parsed in q= — use the structured filter params below for boolean composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch text. Required.
pageNo1-indexed page number.
typeNoRoom type filter. Allowed: `channel`, `dm`, `group`, `discussion`, `quick-question`, `event`.
limitNoMax hits per page (1-100).
userIDNoScope to rooms created by this DCer.
Behavior4/5

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

The description discloses that results are filtered by access (subscribed-or-browsable; excludes private rooms not a member of). It also details query behavior (prefix, typo tolerance, exact phrase). With no annotations, this provides good transparency, though pagination behavior and sorting are not mentioned.

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

Conciseness5/5

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

The description is well-organized with clear sections (access filtering, query syntax). It is concise, using no unnecessary words, while providing essential information.

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

Completeness5/5

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

Given the 5 parameters with full schema coverage and no output schema, the description covers search behavior, access restrictions, and query syntax comprehensively. It is complete for a search tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the query syntax for 'q' (prefix, typo tolerance, exact phrase) and that AND/OR/NOT are not parsed, which supplements the schema descriptions.

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

Purpose5/5

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

The description explicitly states 'Search rooms by name, description, and topic.' It clearly identifies the resource (rooms) and differentiates from sibling search tools like search_chapters and search_events.

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

Usage Guidelines4/5

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

The description explains query syntax, including prefix matching, typo tolerance, and exact phrase matching. It also clarifies that AND/OR/NOT are not parsed in q, guiding users to use structured filter params. However, it does not explicitly state when not to use this tool.

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

ticketsAInspect

GET /tickets — List your tickets

Returns your tickets across events, newest first. Defaults to the tickets you're holding (valid plus maybe) — "what am I attending". Pass ?status=valid, ?status=maybe, or ?status=refunded to narrow to one.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
statusNoFilter by a single ticket status. With no value, returns the tickets you're holding (`valid` and `maybe`). `refunded` is available on request.valid,maybe
Behavior4/5

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

No annotations provided, so description self-discloses behavior: returns tickets across events, newest first, default scope, pagination via cursor. Adequate for a read operation.

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

Conciseness5/5

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

Front-loaded with HTTP method and resource, two sentences covering behavior and filtering, no wasted words.

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

Completeness4/5

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

With 3 simple params, no output schema, and low complexity, description covers key aspects: purpose, default behavior, filtering, pagination. Minor gap: no mention of response structure.

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 100%, description adds value by explaining default status combination, pagination cursor, and limit constraints beyond schema.

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

Purpose5/5

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

Clearly states it lists tickets via GET, describes default behavior (valid+maybe, newest first), and distinguishes from siblings like events and search_events.

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

Usage Guidelines4/5

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

Explains when to use (list personal tickets) and how to filter by status. No explicit alternatives mentioned but context implies it's the primary tool for user tickets.

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

tripAInspect

GET /trips/:tripID — Get a single trip

Single-trip read with the full payload. This is the canonical endpoint for "who should I meet on this trip?" — the response embeds a complete discovery block (ranked top-10 picks with AI summaries, the full pool of locals + visitors, events in town, and date-overlapping trips). If you only want the discovery block without the trip body, use GET /trips/:tripID/discovery.

Key discovery fields agents almost always want:

  • discovery.peopleranked top-10 DCers to meet on this trip, each carrying score (higher = better match), mini profile (userID, userName, displayName, photo, headline), reason (local / visiting / event-attendee), overlapDays, detail. Sourced from a vector-search + business-context ranking, not just date overlap.

  • discovery.whyToMeetAI-written "why you should meet them" paragraph for each of the top-10, keyed by userID, each { text, generatedAt }. The most useful AI signal in the whole trip product — agents should surface this verbatim when introducing a match.

  • discovery.fullPool — every visible DCer travelling or local during the trip window (typically 5–10× larger than /trips/overlaps, which only returns date-window matches). Same row shape as people but no score.

  • discovery.overlappingTrips — other DCers travelling at the same time/place, each with mini profile attached so no second fetch is needed. This is the same data that /trips/overlaps returns, embedded here for convenience.

  • discovery.events — events in the destination city during the trip window.

  • discovery.generatedAt — when the discovery cache was last refreshed.

Also included: points — up to 20 venue/idea notes with optional Google Place data, plus a linked roomID for the auto-created trip coordination room.

Hidden + guest profiles are filtered out from all discovery lists. The discovery block is null for newly-created trips until the background sync task runs (~seconds — call POST /trips/:tripID/refresh to force-recompute). Open to any authenticated DCer (you can read other DCers' trips too).

ParametersJSON Schema
NameRequiredDescriptionDefault
tripIDYesThe trip ID
Behavior5/5

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

No annotations provided, so the description fully carries the burden. It discloses that hidden and guest profiles are filtered out, discovery is null for new trips until background sync, and it is open to any authenticated DCer. No contradictions.

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

Conciseness4/5

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

The description is well-structured with bullet points for key fields and front-loads the purpose. While comprehensive, it is slightly verbose with multiple nested lists, but every sentence adds value. Could be marginally more concise.

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

Completeness5/5

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

Given the complexity of the response (nested discovery object, many fields) and no output schema, the description is extremely thorough. It covers all key fields: people, whyToMeet, fullPool, overlappingTrips, events, generatedAt, points, roomID, and filtering/sync behavior. Complete and self-contained.

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

Parameters3/5

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

Schema coverage is 100% with only one parameter (tripID). The description does not add semantic detail beyond the schema, but it provides context for the parameter by explaining the endpoint's purpose. Baseline 3 is appropriate as the schema already documents the parameter adequately.

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

Purpose5/5

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

The description clearly states 'GET /trips/:tripID — Get a single trip' and explains the full payload, including the discovery block and key fields. It distinguishes from siblings like trip_discovery and trips_overlaps by noting alternatives for specific needs.

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 endpoint vs. alternatives: 'If you only want the discovery block without the trip body, use GET /trips/:tripID/discovery.' Also mentions the POST endpoint for forced refresh and that it's open to any authenticated DCer.

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

trip_deleteAInspect

DELETE /trips/:tripID — Delete a trip

Permanently delete one of your trips. Removes the trip doc and its linked chat room (trip.roomID). The destination chapter's upcoming-trip count is recomputed in the background. Owner-only — you can only delete trips you created. The action is irreversible; deleted trips don't go to a trash collection.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripIDYesThe trip ID to delete
Behavior5/5

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

With no annotations, the description discloses all critical behavioral traits: permanent deletion, removal of linked chat room, background recomputation, owner-only constraint, irreversibility, and that it is a WRITE mutation. No contradictions.

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

Conciseness4/5

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

The description is well-structured with a clear heading, explanation, and warning label. It is slightly verbose but each sentence adds value; no redundant information.

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

Completeness5/5

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

Given the simple input schema (1 param) and no annotations, the description fully covers the tool's purpose, side effects, eligibility, and safety notes. No output schema needed as effects are clear.

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 describes the sole parameter 'tripID' as 'The trip ID to delete' (100% coverage). The description adds ownership context but does not elaborate on format or constraints beyond what the schema provides.

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

Purpose5/5

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

The description clearly states 'Delete a trip' and specifies it is a permanent deletion. It distinguishes itself from siblings like 'trip_update' or 'trips_create' by focusing exclusively on deletion.

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

Usage Guidelines4/5

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

The description explicitly states 'Owner-only — you can only delete trips you created,' which tells the agent when it is permissible to use. It implies when not to use (non-owned trips) but does not explicitly compare to alternative tools.

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

trip_discoveryAInspect

GET /trips/:tripID/discovery — Get the discovery block for a trip

Discovery-only read for a trip. Returns the same discovery block as GET /trips/:tripID (people, fullPool, whyToMeet, events, overlappingTrips) without the trip body. Useful for callers that just want "who should I meet on this trip?" — the AI agent gets the ranked top-10 + their whyToMeet paragraphs in a single request.

Use ?include= to subset the response — comma-separated from people,fullPool,whyToMeet,events,overlappingTrips. Default is all. Common patterns:

  • ?include=people,whyToMeet — top-10 picks + their AI-written "why you should meet them" paragraphs (keyed by userID, each carrying { text, generatedAt })

  • ?include=fullPool — every visible DCer travelling/local during the trip window

  • ?include=events — just events in the destination city during the trip window

Open to any authenticated DCer; hidden + guest profiles are filtered out.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripIDYesThe trip ID
includeNoOptional. Comma-separated subset of `people,fullPool,whyToMeet,events,overlappingTrips`. Default = all five.
Behavior4/5

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

No annotations provided, but the description discloses read-only behavior, authentication requirements ('Open to any authenticated DCer'), and filtering of hidden/guest profiles. This gives sufficient transparency for a safe read operation.

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 moderately long but well-structured. It starts with the endpoint and purpose, then explains the return value, then details the include parameter with bullet patterns. Every sentence adds value; there is no redundancy.

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

Completeness4/5

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

Given no output schema, the description compensates by listing the fields in the discovery block and explaining the effect of the include parameter. It covers the main use case and common scenarios. For a read tool with filtering capability, this is sufficient.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the include parameter in detail: listing options, default behavior, and common patterns with examples. This goes beyond the schema's terse description and helps the agent use the parameter effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 is a GET endpoint returning the discovery block for a trip. Distinguishes itself from GET /trips/:tripID by explaining it omits the trip body, and provides the specific fields returned. The verb 'Get' and resource 'discovery block' are unambiguous.

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

Usage Guidelines4/5

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

Explicitly describes when to use: 'Useful for callers that just want who should I meet on this trip?' and contrasts with the full trip endpoint. Provides detailed patterns for the include parameter. Does not state when not to use, but the context is clear enough for an AI agent to choose appropriately.

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

trip_refresh_createAInspect

POST /trips/:tripID/refresh — Trigger a trip refresh

Owner-only sync trigger. Enqueues a deduped background job that recomputes the trip's discovery (overlapping people, events, AI blurbs). Spammy reloads coalesce. Returns 202 Accepted immediately; the cached discovery block on the trip doc updates when the job completes.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripIDYesThe trip ID to refresh
Behavior5/5

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

No annotations exist, so the description fully bears the burden. It discloses it's a WRITE operation, enqueues a background job, returns 202 Accepted immediately, and updates a cached block. Also mentions deduped and coalescing behavior.

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

Conciseness5/5

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

Concise and well-structured: endpoint line, a paragraph explaining behavior, and a warning. Every sentence adds value without redundancy.

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

Completeness5/5

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

Fully covers purpose, usage, behavior, parameters, and side effects. Despite no output schema, the description explains what the caller can expect (202 response and eventual update).

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the single parameter. The tool description adds minimal extra detail beyond the schema, meeting the baseline of 3.

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

Purpose5/5

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

The description clearly states the tool triggers a trip refresh, recomputing discovery data. It specifies the HTTP method and endpoint, and distinguishes from sibling tools like trip_discovery or trip_update by focusing on a unique refresh action.

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

Usage Guidelines4/5

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

Explicitly mentions 'Owner-only sync trigger', indicating who should use it. Notes that spammy reloads coalesce, providing useful usage context. Lacks explicit when-not-to-use or alternatives, but this tool is distinct among siblings.

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

tripsAInspect

GET /trips — List your trips

Returns your upcoming trips by default. Add ?past=true to include past trips.

For "who should I meet on this trip?" fetch GET /trips/:tripID (or the discovery-only GET /trips/:tripID/discovery) — both return the ranked top-10 DCers + AI-written summaries + the full pool of locals and visitors in town during the trip window. The list response below does NOT include the discovery block (lazy by design — discovery is a much heavier payload).

ParametersJSON Schema
NameRequiredDescriptionDefault
pastNoInclude past trips.
limitNoMax results (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the operation is a GET (read-only), that it excludes the heavy discovery block for efficiency, and implies pagination via cursor. It does not contradict any annotations (none exist).

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

Conciseness5/5

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

The description is three sentences, well-structured, and front-loaded with the primary purpose. It uses bold to highlight the alternative endpoint, and every sentence adds value. No wasted words.

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

Completeness5/5

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

Given the absence of an output schema, the description sufficiently covers the list endpoint's behavior: default scope, pagination via cursor, and the critical distinction from detail endpoints. It explains why discovery is omitted, which is important context. The 3 parameters are all addressed.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that the 'past' parameter defaults to false and that '?past=true' is needed to include past trips. While limit and cursor are not elaborated beyond schema, this slight addition warrants a 4.

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

Purpose5/5

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

The description clearly states the tool lists trips via 'GET /trips — List your trips'. It specifies the default behavior (upcoming trips) and differentiates from sibling tools by noting that the detail endpoints (e.g., GET /trips/:tripID) include discovery information, while this list response does not.

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: use ?past=true for past trips, and for discovery-related queries (who to meet), use the detail endpoints. It also notes the lazy design choice to avoid heavy payloads, helping the agent decide when to use this tool versus trip_discovery.

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

trips_createAInspect

POST /trips — Create a trip

Create a new trip. Provide exactly one of placeID or eventID — the server resolves the location (city, country, country code) automatically. Use GET /places/search to find a placeID by city/country name first, or pass an eventID from /events to create a trip to that event's city.

Trip points (optional points array, up to 20 per trip): each item is { note: string (max 280 chars), noteHTML?: string, placeID?: string }. The optional placeID is resolved against Google Places at write time and the full Place object (city, country, lat/lon, name, etc.) is stored on the trip — so reads don't do any lookups. noteHTML preserves the same rich text field the web trip editor stores for formatted notes, links, and mentions; note remains the required plain-text fallback. Notes without a placeID are valid ("remember to book a coworking space"). Pass an unknown / expired Google placeID → 400 with a clear error.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoTrip note
pointsNoOptional. Up to 20 trip points (venues / ideas / notes). Each item: `{ note: string (max 280 chars), noteHTML?: string, placeID?: string }`. The optional `placeID` is resolved against Google Places at write time. Notes without a place are valid.
endDateYesEnd date (ISO 8601)
eventIDNoDC event ID. Server uses the event's city placeID. **Pass exactly one of `placeID` or `eventID`** — sending both rejects with 400.
placeIDNoGoogle Place ID for the destination. Look one up via `GET /places/search`. **Pass exactly one of `placeID` or `eventID`** — sending both rejects with 400.
startDateYesStart date (ISO 8601)
Behavior4/5

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

With no annotations, the description carries full burden. It clearly states it's a WRITE operation that mutates data, explains error behavior for unknown/expired placeID (400), and details the resolution of placeID at write time. However, it does not mention idempotency or potential side effects of multiple calls.

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

Conciseness4/5

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

The description is front-loaded with the main action and uses clear sectioning. It is relatively long but every sentence adds necessary context. Minor redundancy could be trimmed, but overall efficient.

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

Completeness3/5

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

Given the complexity (6 params, 2 required, nested points array), the description thoroughly covers input behavior and constraints. However, no output schema is provided and the description does not explain what the response contains (e.g., the created trip object). This is a notable gap.

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 schema coverage is 100%, but the description adds significant value beyond the schema: mutual exclusivity of placeID/eventID, resolution behavior, points structure with noteHTML vs note, and error handling. This helps the agent understand parameter interactions.

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

Purpose5/5

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

The description explicitly states 'POST /trips — Create a trip' and explains it creates a new trip. It distinguishes from sibling tools like trip_update, trip_delete, and trips (list) by specifying the creation action and the need for either placeID or eventID.

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: 'Provide exactly one of placeID or eventID', explains how to look up a placeID via GET /places/search, and warns that sending both will reject. It also clarifies the optional nature of points and the constraints (up to 20, note length).

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

trips_overlapsAInspect

GET /trips/overlaps — Find overlapping trips

Find other members whose trips overlap with yours by city + date range. This is a narrow date-window match, NOT the AI-ranked discovery pool. For the full set of DCers you could meet on a trip — including locals in town and AI-written "why you should meet them" summaries — fetch GET /trips/:tripID/discovery (or GET /trips/:tripID, which embeds the same discovery block). The discovery pool is typically 5–10× larger than /trips/overlaps because it includes locals and event attendees in addition to date-overlap visitors, and it carries ranked top-10 picks with AI summaries that this endpoint does not.

Use /trips/overlaps for the simple "who is travelling here at the same time as me" question. Use /trips/:tripID/discovery for "who should I meet on this trip?".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax trips to check (1-20)
Behavior4/5

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

Despite no annotations, the description discloses that the tool does NOT provide AI summaries and that the discovery pool is larger. However, it does not mention if the tool is read-only or any side effects. Still, it gives sufficient behavioral context for a simple endpoint.

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

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured, and front-loaded with the core purpose. Every sentence adds value, and the comparison with the alternative tool is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 param, no output schema), the description is comprehensive. It explains the scope, limitations, and relationship to sibling tools, ensuring an agent can select it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (limit) with 100% schema coverage. The description does not add extra meaning beyond the schema's description. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states 'Find overlapping trips' and specifies it is a narrow date-window match. It clearly distinguishes from the discovery endpoint, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: use /trips/overlaps for simple overlapping trips and /trips/:tripID/discovery for AI-ranked recommendations. This directly addresses when to use which tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trip_updateAInspect

PATCH /trips/:tripID — Update a trip

Update one or more fields on an existing trip. Only include the fields you want to change. To change destination, provide either placeID or eventID and the full location will be re-resolved.

Trip points: passing points replaces the entire array (it's not a patch within the array). Up to 20 items, same shape as POST /trips: { note: string (max 280 chars), noteHTML?: string, placeID?: string }. To clear all points, pass points: [].

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoUpdated note
pointsNoOptional. Replace the entire `points` array (not a patch within). Up to 20 items, same shape as `POST /trips`. Pass `[]` to clear all points.
tripIDYesThe trip ID to update
endDateNoNew end date (ISO 8601)
eventIDNoNew destination — DC event ID (uses event's city). Pass `null` to unlink without changing the location.
placeIDNoNew destination — Google Place ID
startDateNoNew start date (ISO 8601)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly notes it is a WRITE operation and mutates data, and explains the behavior of destination re-resolution and points replacement. However, it lacks details on authentication requirements, error handling, idempotency, or what happens if the trip does not exist. With no annotations, the description carries the full burden but provides only moderate behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with 4 sentences plus an endpoint header and warning. Each sentence adds essential information. It uses formatting effectively to highlight important points like the points behavior and the write warning. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers input parameters and usage, but lacks information about the output or return value. Since there is no output schema, the description should explain what the tool returns (e.g., the updated trip object). It also does not mention error cases. This gap reduces completeness for a mutation 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 input schema has 100% coverage, so baseline is 3. The description adds significant value beyond the schema: it clarifies that only include fields to change, explains how destination change triggers re-resolution, and details points replacement behavior. This additional context justifies a score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an update operation for a trip, with the verb 'Update' and resource 'trip'. It distinguishes itself from sibling tools like trips_create and trip_delete by focusing on modifying existing trips. The endpoint pattern reinforces this purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage instructions: only include fields to change, how to handle destination updates with placeID or eventID, and that points replacement is not a patch. It warns about the write nature but does not explicitly state when to use this over alternatives like trip_delete or trips_create, though context implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

virtual_eventAInspect

GET /virtual-events/:sessionID — Get Live Call details

Returns the same payload shape as one entry from GET /virtual-events for a single online Live Call — sessionID, name, description, kind (which audience tier the session is open to), scheduledAt / scheduledEndAt (ISO 8601), duration in minutes, attendeeCount, chatRoomID, isLive, meetUrl (the video-call join link, returned regardless of your RSVP state), myRsvp (your current yes/no/maybe or null), and status.

DC BLACK callers also see DC BLACK-only sessions; DC tier callers get tier_restricted (403) on those.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIDYesThe Live Call session ID. Find IDs via `GET /virtual-events`.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries the full burden. It discloses the response payload in detail, notes that meetUrl is always returned, and mentions tier restrictions resulting in 403 for DC callers. It implies read-only behavior but does not explicitly state destructions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly long but each sentence adds value. It front-loads the HTTP method and path, then details the return fields. Some minor redundancy (e.g., 'Get Live Call details' in first line) but overall efficient for the information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description thoroughly lists all return fields with explanations, covers tier restrictions, and notes that the meetUrl is returned regardless of RSVP state. No output schema is provided, so the description fully compensates.

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 has one parameter with description (100% coverage), so baseline is 3. The description adds value by stating how to find the sessionID: 'Find IDs via GET /virtual-events'. This provides context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's a GET endpoint returning details of a single Live Call. It specifies the HTTP method, path, and the full payload shape, distinguishing it from siblings like 'virtual_events' (list) and 'virtual_event_rsvp' (RSVP).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for fetching a single event's details, but does not explicitly state when to use it vs. alternatives. It mentions that IDs can be found via 'GET /virtual-events' but lacks explicit when-not or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

virtual_event_attendeesAInspect

GET /virtual-events/:sessionID/attendees — List Live Call attendees

List the attendees of a Live Call — the DCers who RSVPd yes or maybe (the same set behind attendeeCount, mirroring how GET /events/:eventID/attendees counts RSVPs). Profiles use the standard other-person shape (identical to GET /events/:eventID/attendees and GET /profile-match): public fields plus privacy-gated annualRevenue + teamSize where the member shares them. Hidden and guest profiles are filtered out.

Access: any active DCer who can see the Live Call. DC BLACK-only calls stay tier-gated — DC-tier callers get tier_restricted (403).

Pagination: page with ?limit= (1-100, default 100) plus the opaque ?cursor= from the previous response's nextCursor (null when there are no more).

See GET /virtual-events/:sessionID for the call itself, and GET /events/:eventID/attendees for the in-person equivalent.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
sessionIDYesThe Live Call session ID. Find IDs via `GET /virtual-events`.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully covers behavior: pagination details, access control, profile shape, filtering of hidden/guest profiles, and relationship to other endpoints. 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?

Well-structured with headers for access and pagination, front-loads the main purpose, and no superfluous sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains return shape (profile fields, optional privacy-gated data) and pagination cursor. References related endpoints for additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds context: sessionID source from GET /virtual-events, limit default and range, and cursor usage for pagination. Adds marginal value over schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the function: list attendees of a Live Call. Includes specific verb 'list', resource 'attendees', and distinguishes from sibling tools like event_attendees and virtual_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: when to use (for Live Call attendees), alternatives (in-person equivalent, call details endpoint), and access constraints (tier-gated, filtered profiles).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

virtual_event_rsvpAInspect

POST /virtual-events/:sessionID/rsvp — RSVP to Live Call

RSVP to a Live Call. The user is added to the matching attendance list on the session doc (participantIDs for yes, maybeIDs for maybe, notIDs for no) and removed from the others.

Three statuses:

  • yes — you intend to attend; you'll show up in attendeeCount.

  • maybe — soft attendance signal.

  • no — you're declining. Use this to back out after a prior yes or maybe.

Note: the meetUrl (join link) on GET /virtual-events/:sessionID is not gated on your RSVP — it's returned whenever the host has set one, regardless of attendance state. RSVPing is purely an attendance signal.

Idempotent — re-RSVPing with the same status is a no-op.

⚠️ WRITE operation: this mutates your DC account data.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesYour RSVP status for this session.
sessionIDYesThe Live Call session ID. Find IDs via `GET /virtual-events`.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with no annotations, the description discloses that it is a write operation (mutates DC account data), is idempotent, explains the effect on session document arrays, and clarifies that meetUrl is not gated on RSVP. This provides full behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-organized with endpoint, purpose, list of statuses with descriptions, a note about meetUrl, and idempotency warning. Every sentence adds value; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, behavior, parameters, and idempotency thoroughly. However, it lacks description of the return value (no output schema), which is a minor gap for a write operation.

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?

Input schema has 100% coverage, but the description adds significant meaning: explains sessionID source, status enum effects (yes/participantIDs, maybe/maybeIDs, no/notIDs), and idempotent behavior. This adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it RSVPs to a Live Call, explains the effect (adds to attendance lists), and lists three statuses. It differentiates from siblings like event_rsvp and event_meetup_rsvp by specifying virtual events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use each status and clarifies that meetUrl is not gated on RSVP. However, it does not explicitly state when to use this tool versus alternatives like event_rsvp or virtual_event_attendees, nor does it mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

virtual_eventsAInspect

GET /virtual-events — List Live Calls

Returns upcoming Live Calls (online sessions like Connect Calls, Happy Hour, Welcome Call, plus DC BLACK-only calls). Add ?past=true to include past calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
pastNoInclude past Live Calls.
limitNoMax results (1-100).
cursorNoCursor from a previous response's `nextCursor`. Pass to fetch the next page.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It mentions the past parameter but fails to describe read-only nature, pagination behavior (cursor is in schema but not explained), or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler; front-loaded with key verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks return value description and pagination behavior details; adequate for basic use but incomplete for an endpoint with cursor and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 3 params with descriptions; description adds context that past parameter toggles between upcoming/past results, enhancing meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List Live Calls' with specific examples (Connect Calls, Happy Hour, etc.) and distinguishes from siblings like virtual_event (singular) and events (physical).

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?

Implies usage for listing upcoming virtual events but does not explicitly compare to siblings (e.g., events for physical events) or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.