harmonica-mcp
OfficialAI agents can create, run, and analyze Harmonica structured deliberation sessions end-to-end.
Create and update sessions with topic, goal, context, custom facilitation prompts, pre-session questions, project grouping, distribution targets, widgets, and results-visibility settings.
Discover and inspect sessions: list, search, get details, list participants, get pre-session questions, fetch participant responses, and get AI-generated summaries.
Generate or regenerate session summaries on demand.
Facilitate conversations programmatically: send messages as a participant and get AI facilitator replies, or submit pre-session answers to start a thread.
Manage projects/workspaces: create, list, get, rename/update, delete, and publish a project as a public sensemaking topic.
Manage templates: list available session templates and install OFL method specs as runnable chain templates with dry-run support.
List Telegram groups registered for session distribution.
Access personal calendar meeting data: list meetings, fetch transcripts and speaker turns, and view/update meeting processing restrictions.
List Telegram groups registered to the user's Harmonica account.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@harmonica-mcpCreate a session about Q2 goals with the goal to align priorities."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Harmonica MCP Server
MCP server enabling AI agents to create and query Harmonica deliberation sessions.
Harmonica is a structured deliberation platform where groups coordinate through AI-facilitated async conversations. Create a session with a topic and goal, share a link with participants, and each person has a private 1:1 conversation with an AI facilitator. Responses are synthesized into actionable insights. Learn more.
Quick Start
1. Get an API key
Sign up for Harmonica (free)
Go to Profile > API Keys > Generate API Key
Copy your
hm_live_...key — it's only shown once
2. Configure your MCP client
Add to your MCP client config (e.g. Claude Code, Cursor, Windsurf):
{
"mcpServers": {
"harmonica": {
"command": "npx",
"args": ["-y", "harmonica-mcp"],
"env": {
"HARMONICA_API_KEY": "hm_live_your_key_here"
}
}
}
}3. Start a deliberation
Ask your AI agent to create a session:
Create a Harmonica session about "Team Retrospective" with the goal "Review Q1 and identify improvements"
Share the join URL with participants. Once they've responded, use get_responses and get_summary to see the results.
Related MCP server: conclave
Tools
Tool | Description |
| Create a new deliberation session and get a shareable join URL (optional: |
| Update session metadata (topic, goal, context, critical, prompt; |
| List your deliberation sessions (filter by status, search) |
| Get full session details (includes facilitation prompt) |
| Get pre-session questions (data collection form) |
| Get participant responses |
| Get AI-generated summary |
| Search by topic or goal |
| List Telegram groups registered to the user's account (no parameters) |
| Install an OFL method spec (method.md) as a runnable chain template |
| Create a project (workspace) to group related sessions |
| List the projects (workspaces) you have access to |
| Get a project by id, with the ids of its linked sessions |
| List personal calendar meetings captured by the Harmonica notetaker |
| Get the persisted transcript and speaker turns for a personal calendar meeting |
| Get effective processing restrictions, pending candidates, and history for an owned meeting |
| Set restrictions or review a pending transcript-derived candidate for an owned meeting |
| Rename a project or update its description (editor access) |
| Soft-delete a project; its sessions are left intact (owner access) |
| Create a draft topic in an Unconference project and mirror it to the connected brain repository (editor access) |
| Publish a project as a public sensemaking topic ( |
From Source
git clone https://github.com/harmonicabot/harmonica-mcp.git
cd harmonica-mcp
npm install && npm run buildThen use node /path/to/harmonica-mcp/dist/index.js instead of npx -y harmonica-mcp in your config.
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Your Harmonica API key |
| No |
| API base URL |
Roadmap
One-command install via
npx add-mcp(auto-detects Claude Code, Cursor, Windsurf)HTTP transport — zero-install setup, just add a URL
Inbound context — feed external data into sessions via MCP
Session templates discovery tool
TypeScript and Python client SDKs
See Also
harmonica-chat — Conversational Harmonica companion for Claude Code — design, create, and manage sessions (
/harmonica-chat)Harmonica docs — Full platform documentation and API reference
License
MIT
Available Tools
21 toolschat_messageA
Send a message in a Harmonica session conversation and get the AI facilitator response. Creates a new participant thread if first message.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Message content | |
| session_id | Yes | Session ID (UUID) | |
| participant_id | Yes | Unique participant identifier | |
| participant_name | Yes | Display name for the participant |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the side effect of creating a new participant thread on the first message, which is valuable. However, it does not mention error conditions, whether the operation is idempotent, permission requirements, or specifics about the response format beyond the vague 'get the AI facilitator response.' This is adequate but has clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant content. The first sentence states the primary action and outcome, and the second adds a key side effect. Information is front-loaded and very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations, yet the description provides a complete enough picture for a simple messaging tool. It explains the action, the response, and the thread-creation behavior. It could go further by describing the response structure or error handling, but given the low complexity, the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 any parameter-specific meaning beyond what the schema already provides; it only names content, session_id, participant_id, and participant_name in passing. There is no additional syntactic or contextual detail, so the schema fully carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Send') and resource ('Harmonica session conversation') and clearly states the tool's action and outcome: sending a message and getting the AI facilitator response. The additional detail about creating a new participant thread on first message differentiates it from sibling tools like get_responses or list_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: to send a message in a session and receive the facilitator's response. It does not explicitly name alternatives or exclude other tools, but the context is clear enough for an agent to select it for message-sending tasks. No exclusions are stated, so it falls short of a 5 but meets the 'clear context' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
Create a Harmonica project (workspace) you own. Use the returned project ID to publish it as a public sensemaking topic via publish_sensemaking_topic, or to scope sessions/templates to the project. Reuse an existing project by passing its ID to those tools instead of creating a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Project title | |
| description | No | Optional project description (markdown) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses ownership ('you own'), the return value (project ID), and intended usage of that value. It does not detail error scenarios or side effects, but the core behavior is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every clause adds value. It avoids repetition and directly addresses usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation, the description covers the essential context: creation, ownership, return value, and relationships to other tools. It also provides reuse guidance, making it complete despite the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, so the description does not need to explain them. The description adds no parameter-specific semantics beyond the schema's own descriptions, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Create a Harmonica project (workspace) you own.' It distinguishes from sibling tools by specifying 'you own' and explaining the project's role in publishing and session scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Reuse an existing project by passing its ID to those tools instead of creating a new one.' It also explains when to use the returned project ID for publish_sensemaking_topic or scoping sessions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sessionB
Create a new Harmonica deliberation session and get a shareable join URL
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What this session aims to achieve | |
| topic | Yes | Session topic | |
| prompt | No | Custom facilitation prompt | |
| context | No | Background context for participants | |
| critical | No | Critical question or constraint | |
| questions | No | Pre-session questions (e.g. name, role, email). Participants answer these before chatting. Pass `type: "Email"` and `required: true` to validate contact details up front. | |
| project_id | No | Attach the new session to a project (workspace) by id, so it is grouped under that project. You must have editor access to the project. Create one with create_project or find one with list_projects. | |
| template_id | No | Template ID to use | |
| distribution | No | Distribution targets for channel integrations | |
| widgets_enabled | No | Enable AI-emitted Polls and ratings widgets (SingleSelect, MultiSelect, RatingScale, RankingList) during the session. Default false. | |
| cross_pollination | No | Enable idea sharing between participant threads | |
| results_visibility | No | Who can see aggregated results. "host" = owner only; "participants" = anyone who completed (drives end-of-chat "See what others said" link); "public" = anyone with the URL. Defaults to "participants" for MCP-created sessions (programmatic use case usually wants distributed visibility); pass "host" explicitly to keep results private. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden. It mentions the output ('shareable join URL') as a positive, but it does not disclose side effects (e.g., persistent record creation), permissions, or any behavioral nuances. 'Create' implies mutation, but the description does not elaborate on the creation's implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose and output. It contains no fluff or redundant information, and every word earns its place. The brevity is appropriate given the rich schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters and no output schema, the description is quite thin. It only states the action and the return (a URL) but does not elaborate on what a 'Harmonica deliberation session' entails, prerequisites (e.g., template/project), or how the session behaves after creation. The schema fills in parameter meanings, but the description fails to provide broader operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 12 parameters, so the baseline is 3. The tool description itself adds no parameter information beyond the schema, but the schema is rich enough to compensate. The description does not contribute extra 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create'), the resource ('Harmonica deliberation session'), and the outcome ('get a shareable join URL'). This distinguishes it from sibling tools like update_session, get_session, and create_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention when to use it over other session tools or any prerequisites. The only usage hints come from the parameter descriptions in the schema, not from the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectA
Soft-delete a Harmonica project (workspace): it is archived (status=deleted) and the sessions inside it are left intact, just ungrouped. Requires owner access. This never deletes any sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project (workspace) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It thoroughly discloses the operation's behavior: the project is archived with status=deleted, sessions are left intact and ungrouped, and it requires owner access. It also explicitly states 'This never deletes any sessions,' which is important safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and every clause adds value (soft-delete behavior, session impact, access requirement). No redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, side effects, permissions, and explicit exclusions (never deletes sessions). It provides sufficient context for an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter, describing it as 'Project (workspace) ID'. The description repeats the workspace context but adds no additional semantic detail beyond what the schema already provides. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Soft-delete a Harmonica project (workspace)' and distinguishes it from hard deletion by explaining it archives the project and leaves sessions intact. This differentiates it from sibling tools like update_project and get_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: it is a soft-delete that never deletes sessions and requires owner access. However, it does not explicitly name alternatives or state when not to use this tool, though the soft-delete nature implies the exclusion of permanent deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_summaryA
Generate or regenerate the AI summary for a Harmonica session. Uses the session's custom summary_prompt if set, otherwise the default. Requires editor role.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID (UUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It discloses the editor role requirement and the custom summary_prompt behavior, and the word 'regenerate' implies overwriting. It does not explicitly state that the existing summary is replaced, but that is implied by the term.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: three short clauses convey the action, the prompt dependency, and the permission requirement. There is no unnecessary wording or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the core action, the permission requirement, and the behavioral nuance of custom prompt usage. It doesn't specify the return value or explicitly mention overwriting, but these are not critical for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents session_id with 100% coverage, so the description adds no additional parameter semantics. This meets the baseline of 3 for high schema coverage; no extra details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Generate or regenerate') and a specific resource ('AI summary for a Harmonica session'). This differentiates it from sibling tools like get_summary, which reads a summary, and chat_message or other write tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context on when to use the tool (for generating or updating a summary) and mentions the editor role requirement. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectA
Get a single Harmonica project (workspace) by id, including the ids of the sessions linked to it.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project (workspace) ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It says the tool returns the project and linked session IDs, which is useful. However, it does not disclose error behavior (e.g., if the project ID is invalid), permission requirements, or any side effects (though 'get' implies none). This is moderately transparent; a 3 fits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, concise, and front-loaded with the action and resource. Every phrase adds value; no filler. Scores 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (1 param, no output schema). The description explains both the input (project by id) and the output (project with linked session IDs), which is sufficient for correct use. It does not mention error cases or authentication, but these are not essential for a basic getter. Therefore a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents project_id with description 'Project (workspace) ID'. The tool description simply says 'by id' and does not add parameter details beyond the schema. With 100% schema coverage, the baseline is 3, and the description adds no extra parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get') on a specific resource ('a single Harmonica project (workspace) by id') and adds what is included ('including the ids of the sessions linked to it'). This distinguishes it from sibling list_projects (which gets all projects) and get_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the use case: fetch one project by ID. It does not explicitly name alternative tools or when-not-to-use, but the contrast with list_projects is evident from 'single' and 'by id'. It provides clear context but no explicit exclusions, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_questionsA
Get pre-session questions (data collection form) for a Harmonica session
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID (UUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Get' clearly indicates a read-only operation, and 'pre-session questions (data collection form)' tells the user what to expect. However, it doesn't mention potential errors or auth requirements, but for a simple getter 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy. It is front-loaded with the action and resource, and every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, no output schema), the description explains what is returned (pre-session questions) and for which context (Harmonica session). It doesn't detail the exact structure of the return value, but that is not necessary for such a simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter session_id with a clear description '(UUID)'. The tool description does not add any additional 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get pre-session questions (data collection form)' with a specific verb and resource, and clarifies the domain context 'for a Harmonica session'. It distinguishes from sibling tools like get_responses and submit_questions by specifying 'pre-session questions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a Harmonica session' provides clear context for when to use this tool, but no explicit alternatives or exclusions are mentioned. Since there are sibling tools like get_responses and submit_questions, a brief 'when not to use' would be helpful but isn't strictly necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_responsesA
Get participant responses for a Harmonica session. Returns full conversation threads. Use filters to avoid fetching all data at once for large sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by participant name (partial match) | |
| sort | No | Sort by join date (default: oldest) | |
| limit | No | Max number of participants to return | |
| since | No | Only participants who joined after this ISO date | |
| session_id | Yes | Session ID (UUID) | |
| min_messages | No | Minimum user message count (skip bounces) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that the tool returns full conversation threads and warns about large data volume, but it does not mention side effects (e.g., read-only nature), pagination behavior, or error conditions. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, followed by return characteristics and practical guidance. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a clear purpose and performance tip, but it does not fully clarify the relationship between 'participant responses' and 'full conversation threads', nor how the filters map to the response data. It is adequate given the rich schema, but leaves some ambiguity about the data structure and tool boundaries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 6 parameters, including filter semantics. The tool description itself does not add detail about individual parameters, so it neither enhances nor detracts from the schema's explanations. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves participant responses for a Harmonica session and returns full conversation threads. It specifies the resource and action, distinguishing it from list_participants and get_summary. However, it does not explicitly name alternative tools for comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by recommending the use of filters to avoid fetching all data at once for large sessions. This implies a performance consideration but stops short of explicit when-to-use vs. alternative tools or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionB
Get details of a specific Harmonica session
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID (UUID) |
TDQS
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 only says 'Get details', which conveys a read-only action but adds little beyond the tool name. It does not disclose return format, error behavior, permissions, or scope of details, leaving significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It earns its place by stating the tool's core function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, but the description is vague about what 'details' includes. Without an output schema, the description should clarify the scope of returned information to be fully complete, but the basic purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the only parameter, session_id, as a required UUID string with 100% description coverage. The description adds no additional parameter semantics, but the schema covers the necessary meaning, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get details of a specific Harmonica session', using a specific verb and resource. While it does not explicitly mention alternatives, the word 'specific' implies retrieval of a single session versus listing, which distinguishes it from sibling list_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'specific session' implies use when a single session's details are needed, providing some context. However, no explicit guidance is given about when not to use it or which alternatives (list_sessions, search_sessions) might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_summaryA
Get the AI-generated summary for a Harmonica session
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session ID (UUID) |
TDQS
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 adds the 'AI-generated' context but does not disclose behavior when no summary exists, authentication needs, or return format. The read-only nature is inferred but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler words, efficiently stating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool, the description is largely sufficient. It lacks guidance on edge cases like missing summaries or differentiation from generate_summary, but covers the core purpose adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter with a clear description ('Session ID (UUID)'). The description adds 'Harmonica session' context but no additional syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies a distinct resource ('AI-generated summary for a Harmonica session'), clearly distinguishing it from siblings like get_session and generate_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies retrieval of an existing summary but does not explicitly state when to use this tool versus generate_summary or get_session. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_method_specA
Install an OFL method spec (the contents of a method.md file) as a runnable Harmonica chain template. Pass the full method.md text as method_md. Use dry_run to preview the generated chain_config without writing anything. Chain templates need a paid (Pro/LTD) account; Free is capped at 3 steps.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite a template that has local admin edits since install. Default false. | |
| dry_run | No | If true, return the generated chain_config without creating a template. Default false. | |
| registry | No | Registry the spec came from. Default 'Open-Facilitation-Library/method-specs'. | |
| is_public | No | Make the installed template public. Default false — drafts and CC-licensed specs should stay private. | |
| method_md | Yes | Full contents of the method.md spec file (YAML frontmatter + body). | |
| template_id | No | Update this existing template (PATCH) instead of creating a new one. | |
| update_if_exists | No | If no template_id, update an owned chain template with the same title instead of creating a duplicate. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the non-destructive nature of dry_run, the paid-account requirement, and the Free tier step cap. It does not explicitly state what the tool returns on success or how it handles conflicts beyond parameter hints, but it provides meaningful context beyond minimal descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, with the purpose front-loaded in the first sentence. Every sentence provides useful information (e.g., method_md input, dry_run preview, account constraints) with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters and no output schema, so the description should ideally explain return values or fallback behavior. It provides useful operational context (dry_run, account limits) but does not mention what is returned on success/failure or what happens when an existing template is overwritten. This is an adequate but incomplete contextual picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 repeats some param details (method_md content, dry_run behavior) that are already present in the schema without adding new meaning. It does not explain parameters in a way that materially enhances the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Install') and clearly identifies the resource ('OFL method spec') and the resulting artifact ('runnable Harmonica chain template'). It is easily distinguished from the session/project-oriented sibling tools, which are unrelated in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (installing a method spec) and includes important operational guidance: using dry_run to preview without writing, and noting the paid-account requirement with a free tier cap of 3 steps. It does not explicitly name alternatives or exclusion scenarios, but no obvious alternative exists among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_participantsA
List participants in a Harmonica session with metadata (name, message count, timestamps) but WITHOUT full conversations. Use this first to find participants, then get_responses with filters for specific ones.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by participant name (partial match) | |
| sort | No | Sort by join date (default: oldest) | |
| since | No | Only participants who joined after this ISO date | |
| session_id | Yes | Session ID (UUID) | |
| min_messages | No | Minimum user message count (skip bounces) |
TDQS
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 behavioral traits: it returns metadata but not full conversations, and the verb 'List' implies a read-only operation. While it doesn't explicitly mention side effects or safety, the non-mutating nature is strongly implied and the exclusion of conversations is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, followed by actionable guidance. Every sentence contributes value, no fluff or redundant phrasing. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains what is returned: metadata with name, message count, and timestamps. It also sets expectations by explicitly stating what is not included (full conversations). Considering the moderate complexity of a filtered list tool, this is sufficient for an agent to understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 context beyond the schema by mentioning 'metadata (name, message count, timestamps)', which semantically aligns with parameters like session_id, min_messages, and since. It also describes the intended use of filters ('find participants') but does not duplicate each parameter's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List participants in a Harmonica session with metadata (name, message count, timestamps) but WITHOUT full conversations.' This specific verb+resource combination distinguishes it from sibling tools like get_responses, which retrieves full conversations. The explicit exclusion of full conversations further clarifies its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this first to find participants, then get_responses with filters for specific ones.' This tells the agent when to use the tool and directs it to a specific alternative for a follow-up action, making the workflow clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List the Harmonica projects (workspaces) you have access to. A project groups related sessions and can be published as a public sensemaking topic. Returns title + id for each.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (default 20) | |
| offset | No | Pagination offset (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden. It discloses that it only returns 'title + id' and that it is scoped to projects the user has access to. However, it does not describe anything about pagination defaults, ordering, or whether archived projects are included. For a read-only list tool this is adequate but lacks richer behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that front-load the action ('List...') and then add a brief explanation of what a project is and the return fields. Every sentence contributes useful information without redundancy or bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 optional params, no output schema), the description is nearly complete: it states the resource, the scope ('you have access to'), and the return shape ('title + id'). It could have explicitly mentioned the available pagination params, but since the schema already documents them, the description is sufficient for a list endpoint. A perfect score is held back because it does not mention any potential errors or limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for both parameters (limit and offset) with clear descriptions. The tool description does not add any meaning beyond the schema—it simply mentions 'title + id' for the return, which is not parameter-related. Baseline of 3 is appropriate per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb-resource pair: 'List the Harmonica projects (workspaces) you have access to.' It clearly distinguishes from siblings like list_sessions by focusing on projects/workspaces, and adds context that projects group sessions and can be published as a sensemaking topic. This makes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement 'you have access to' sets a clear context for when to use the tool (i.e., to retrieve the user's accessible projects). It implies the tool is for listing, not for retrieving detailed session data, but it does not explicitly mention alternatives or when-not-to-use it. This is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsB
List Harmonica deliberation sessions you have access to
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (default 20) | |
| query | No | Search by topic or goal | |
| status | No | Filter by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only mentions the access scope. It does not disclose pagination behavior (despite a limit parameter), response format, or any side effects. The description is too minimal to inform the agent of behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward list operation with well-documented parameters, but the description lacks usage guidance and behavioral details, making it only minimally complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with clear descriptions for limit, query, and status. The description adds no extra parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'List' as a specific verb, names the resource 'Harmonica deliberation sessions', and scopes to 'you have access to', clearly differentiating from get_session (singular) and search_sessions (advanced search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs search_sessions or get_session. It doesn't mention exclusions or alternatives, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_telegram_groupsA
List Telegram groups registered to your Harmonica account for session distribution
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. The verb 'List' implies a read-only operation, but it doesn't explicitly state side-effect-free or disclose auth/rate limits. It adds scope context but lacks deeper behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence that front-loads the verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, no-parameter, no-output-schema list operation, the description fully communicates purpose and scope, making it easy for an agent to select and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description correctly avoids listing parameters that don't exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and resource 'Telegram groups', adding scope with 'registered to your Harmonica account for session distribution.' It clearly distinguishes from sibling tools like list_sessions or list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use (listing Telegram groups for session distribution) and no alternative tool exists for this purpose. It doesn't explicitly state exclusions, 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.
list_templatesA
List Harmonica session templates available to your account (public global templates + templates you own / can access). Use to discover what facilitation patterns are configured in the platform — pass the returned id to create_session as template_id to launch a session with that template's stored facilitation_prompt. Returns id, title, description, and template_type (single | chain) for each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the access scope, implies a read-only list operation, and describes the return fields. It omits rate limits or pagination, but for a simple list tool this is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose/scope, usage workflow, and return format. It is front-loaded with the primary action, and every sentence earns its place without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, what it returns, and how to use it. It is complete for an agent to select and invoke correctly, even without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is vacuously 100% and the baseline is 4. The description adds downstream context by explaining how the returned id is used in create_session, enriching the meaning of the output beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Harmonica session templates with scope (public global templates + templates you own/access). It distinguishes from siblings like list_sessions by focusing on templates and explicitly mentions return fields, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool to discover facilitation patterns and then pass the returned id to create_session. It gives a clear workflow but does not name alternative tools or provide exclusion criteria, though the guidance is strong enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_sensemaking_topicA
Author and publish a Harmonica project as a public sensemaking topic — the /explore hub entry + the /t/[slug] opinion-landscape page built from the project's sessions. Pass enabled: true with a slug (here or already saved) to publish. Requires editor access to the project. Listing on /explore is a separate admin-curated step.
| Name | Required | Description | Default |
|---|---|---|---|
| faq | No | Up to 10 FAQ entries shown on the topic page. | |
| slug | No | URL handle for /t/[slug] — lowercase words separated by single hyphens. Required to publish (in this call or already saved). | |
| intro | No | Host-authored background paragraph shown on the topic page. | |
| theme | No | Topic category powering the /explore hub filter. | |
| title | No | Public topic title (defaults to the project title). | |
| enabled | No | Set true to publish (make /t/[slug] live + build the snapshot), false to unpublish. | |
| project_id | Yes | Project (workspace) ID, e.g. from create_project | |
| description | No | Short public description / framing. | |
| reasoning_lens_enabled | No | Opt the embedding-based Reasoning lens in. | |
| knowledge_statements_enabled | No | Source opinion-map statements from project knowledge (claims + tensions). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the outcome (live /t/[slug] page built from project sessions), the precondition (editor access), and an important behavioral caveat (listing on /explore is separate). It does not describe edge cases like idempotency or error behavior, but for a publish action the key behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the purpose, the publication trigger, and a key permission/caveat. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a publish action with 10 parameters, the description covers the main behavior, preconditions, and a caveat. The schema documents parameter details, so the description focuses on process. It lacks mention of what happens if the slug already exists or whether unpublish is the inverse, but these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning beyond the schema by explaining that slug can be provided in this call or already saved on the project, and it links enabled:true as the publication trigger. This clarifies the relationship between two key parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+outcome: 'Author and publish a Harmonica project as a public sensemaking topic.' It clearly distinguishes this from sibling tools by specifying the two artifacts created (/explore hub entry and /t/[slug] opinion-landscape page).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: to publish, pass enabled:true with a slug; requires editor access. It also notes that /explore listing is a separate admin-curated step, managing expectations. It does not explicitly name alternative tools for similar actions, but the unique publish action makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sessionsA
Search Harmonica sessions by topic or goal keywords
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keywords | |
| status | No | Filter by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the action ('Search') and scope, but does not describe whether results are partial or complete, how keywords are matched, whether pagination exists, or any side effects. As a read-only search, 'Search' implies non-mutation, but details are absent, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant information. It conveys the action, target, and scope efficiently, earning a top score for conciseness and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with two fully documented parameters and no output schema. However, the description does not indicate what the search returns (e.g., a list of sessions) or include any usage caveats. Given no annotations and no output schema, the completeness is adequate but has gaps around return format and behavioral expectations beyond the core search action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for both parameters (query and status), but the description adds semantic value by specifying that the query is about 'topic or goal keywords', which is more nuanced than the schema's generic 'Search keywords'. This helps the agent understand the intended use of the query parameter beyond its simple type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Harmonica sessions by topic or goal keywords', identifying a specific verb (Search), resource (sessions), and search scope (topic/goal keywords). This distinguishes it from siblings like list_sessions (likely lists all sessions) and get_session (fetches a specific session), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by topic or goal keywords' clarifies when to use this tool: when you need to find sessions based on thematic or goal-oriented keywords. It does not explicitly state when not to use it or name alternatives, but the contextual guidance is clear enough for the agent to decide between searching and listing/fetching sessions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_questionsA
Submit pre-session question answers and start a facilitated conversation. Returns the opening facilitator message.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | Array of question answers | |
| session_id | Yes | Session ID (UUID) | |
| participant_id | Yes | Unique participant identifier | |
| participant_name | Yes | Display name for the participant |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It discloses a concrete action and return value, but it does not mention side effects, idempotency, or whether certain conditions (e.g., session state) must hold. This is acceptable high-level transparency but leaves important behavioral details undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action, and includes the key return value. Every word earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description sufficiently states what it does and what it returns, and the schema covers the parameters. However, the lack of an output schema means the description should also convey any return nuances; it does mention the opening facilitator message, which is helpful. Minor details like prerequisite session state are not covered, but overall the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all four parameters with descriptions, so baseline is 3. The tool description adds no parameter-specific information beyond what the schema provides, so it neither improves nor degrades the semantic clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('submit') and resource ('pre-session question answers'), and it adds the outcome ('start a facilitated conversation') and return value. This distinguishes it from sibling tools like chat_message or get_questions, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('pre-session') but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. It is not misleading, but the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectA
Rename a Harmonica project (workspace) or update its description. Requires editor access. Pass at least one of title / description.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New project title | |
| project_id | Yes | Project (workspace) ID | |
| description | No | New project description (markdown). Pass an empty string to clear it. |
TDQS
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 the editor access requirement and the 'at least one' precondition. However, it does not describe the return value, side effects, or behavior on missing/invalid parameters beyond the schema, leaving some behavioral expectations unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the primary action and resource, followed by essential constraints. Every phrase adds value: the operation, the alias, the access requirement, and the parameter precondition. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter update tool with no output schema, the description plus schema covers the essential usage. It includes permission and parameter preconditions. It lacks any mention of return values or error behavior, but this is acceptable for a straightforward update operation given the schema's thorough parameter documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic context by framing title as 'rename' and description as 'update', and by highlighting the 'at least one' constraint that is not apparent from the schema's optional fields. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Rename a Harmonica project (workspace) or update its description.' It uses specific verbs and resources, and distinguishes itself from sibling tools like create_project, delete_project, and get_project by focusing on updating an existing project's title/description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: renaming or updating a project's description. Also mentions a prerequisite ('Requires editor access') and a usage condition ('Pass at least one of title / description'). It does not explicitly name alternative tools for exclusion, but the resource specificity makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sessionA
Update session metadata. Mirrors the v1 PATCH /api/v1/sessions/[id] ALLOWED_UPDATE_FIELDS surface. Requires editor role.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Updated session goal | |
| topic | No | Updated session topic | |
| prompt | No | Updated custom facilitation prompt | |
| context | No | Updated background context | |
| critical | No | Updated critical question or constraint | |
| questions | No | Pre-session questions. Replaces the existing pre-survey wholesale. | |
| project_id | No | Move the session into a project (workspace) by id, or pass `null` to detach it from all projects. Requires editor access to the target project. Attaching does not remove the session from any OTHER project it belongs to. | |
| session_id | Yes | Session ID (UUID) | |
| template_id | No | Template id that backs this session. Editing without recomposing the prompt (POST /sessions/[id]/regenerate-facilitation-prompt) leaves prompt + template out of sync. Pass `null` to detach. | |
| distribution | No | Distribution targets for channel integrations | |
| prompt_summary | No | Short summary of the facilitation prompt (HAR-859). Usually written together with `prompt` by the regenerate-facilitation-prompt flow; setting manually outside that flow can confuse the Brief-drift banner. | |
| summary_prompt | No | Updated custom summarization prompt | |
| intro_video_url | No | Optional intro video URL embedded on the session landing page. Pass `null` to clear. | |
| welcome_message | No | Markdown welcome message shown on the session landing page before participants enter chat. | |
| widgets_enabled | No | Enable AI-emitted Polls and ratings widgets (SingleSelect, MultiSelect, RatingScale, RankingList). Default false. | |
| meta_description | No | Session-specific OG meta description for landing-page link previews. | |
| cross_pollination | No | Enable/disable idea sharing between participant threads | |
| results_visibility | No | Who can see aggregated results. "host" = owner only; "participants" = anyone who completed; "public" = anyone with the URL. | |
| prompt_generated_from | No | Snapshot of the Brief fields that produced the current `prompt` (HAR-859). Brief-drift detection compares this against current topic/goal/critical/context. | |
| platform_guidelines_override | No | Per-session override of the Platform Guidelines block in the facilitation prompt (HAR-868). Pass `null` to fall back to the platform default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds 'Requires editor role' and 'Mirrors the v1 PATCH surface,' implying partial-update semantics. However, it doesn't mention return values, idempotency, or global side effects. Rated 3 because it provides some context but not full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence front-loads the core purpose ('Update session metadata') and adds only essential extra context (API surface, role requirement). No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 20 parameters with rich per-parameter descriptions in the schema, including behavioral caveats like wholesale replacement of questions and template/prompt out-of-sync risks. The main description adds the API surface and role requirement. Missing return-value info, but the schema covers most contextual needs. Given the absence of an output schema, a brief mention of the response would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific detail beyond the ALLOWED_UPDATE_FIELDS reference, but the schema itself documents every parameter thoroughly. No need for more from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update session metadata' is a specific verb+resource, clearly distinguishing it from siblings like create_session, get_session, and list_sessions. The API endpoint reference reinforces the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context: use to update existing session metadata. States prerequisite 'Requires editor role.' Does not explicitly exclude alternatives, but the purpose is unambiguous relative to sibling tools. Lacks when-not-to-use guidance, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
21 tool updates
v0.12.0- First observed
chat_message - First observed
create_project - First observed
create_session - First observed
delete_project - First observed
generate_summary - First observed
get_project - First observed
get_questions - First observed
get_responses - First observed
get_session - First observed
get_summary - First observed
install_method_spec - First observed
list_participants - First observed
list_projects - First observed
list_sessions - First observed
list_telegram_groups - First observed
list_templates - First observed
publish_sensemaking_topic - First observed
search_sessions - First observed
submit_questions - First observed
update_project - First observed
update_session
TDQS
Each tool targets a distinct resource and action (e.g., get_summary vs generate_summary are clearly read vs write; get_session vs get_responses vs list_participants have different purposes). The descriptions reinforce the boundaries, making misselection unlikely.
All tool names follow a consistent verb_noun pattern (e.g., list_sessions, create_session, delete_project, publish_sensemaking_topic). There are no mixed conventions or vague verbs, making the API predictable.
With 21 tools, the set is on the heavier side but still scoped to the Harmonica platform's features (sessions, projects, templates, participants, messaging, publishing). It borders the 'heavy' threshold but remains functional.
The toolset covers most lifecycle needs: sessions have create/read/search/update, projects have full CRUD, summaries have get/generate, and participation via chat_message. Minor gaps exist (e.g., no session deletion, no explicit participant management), but these are workable.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
MCP server for generating rough-draft project plans from natural-language prompts.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables multi-model debate and consensus building through a single tool. It orchestrates multiple AI models from various providers to debate topics and reach validated conclusions with real-time progress tracking.203MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables an AI orchestrator to convene a council of other AIs via their CLIs, deliberate, and synthesize consensus.4GPL 3.0
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to run a deterministic orchestration loop with decomposition, subagent execution, and review feedback across multiple LLM backends.55MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for AI agents to conduct multi-LLM roundtable discussions, returning structured common, divergent, and unique perspectives.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/harmonicabot/harmonica-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server