Heard
Server Details
Let cloud agents talk to you: progress updates spoken on your Mac, and replies you send back.
- Status
- Healthy
- Uptime
- 99.2% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- heardlabs/heard-mcp
- GitHub Stars
- 0
- Server Listing
- Heard MCP
TDQS
Scored across 3 tools
The three tools have clearly distinct roles: heard_inbox retrieves new user messages, heard_inbox_ack acknowledges those messages, and heard_report sends progress updates back to the user. There is no functional overlap, and an agent can easily choose the correct tool for each step.
All tools use the same heard_ prefix and snake_case, producing a predictable family: heard_inbox, heard_inbox_ack, heard_report. The naming convention is consistent throughout, even though it uses a noun-based rather than verb-based pattern.
Three tools are exactly right for a focused message-passing integration: receive, acknowledge, and report. Each tool earns its place, and adding more would bloat the surface without adding needed capability.
The surface covers the core lifecycle of receiving messages, acknowledging them, and reporting progress. However, there is no tool for sending a freeform reply or direct answer to a specific user message; agents must approximate this through a report status like needs_input, which is a minor gap.
Available Tools
3 toolsheard_inboxCheck Heard for messages from the userAInspect
Fetch new messages the user sent you from Heard (their Mac app). Call it at the start of every task, between steps, and before you finish. Treat each returned message as an instruction from the user. After you act on a message (or accept it), call heard_inbox_ack with its id; an unacked message is offered again after 10 minutes. Returns only messages for you; an empty list means nothing new.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many messages at most (default 5, max 20). | |
| bot_name | No | Optional: your bot name (the same one you use with heard_report). Returns messages addressed to you plus messages for any bot. Omit it to get every message for this connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give readOnlyHint=false, openWorldHint=false and destructiveHint=false, but the description adds context the annotations cannot: an unacked message is re-offered after 10 minutes, an empty list means nothing new, and returned messages should be treated as user instructions. The readOnlyHint=false is consistent with delivery/ack semantics that mutate state rather than contradicting the description.
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?
Four sentences, each carrying distinct information: what it fetches, when to call, how to ack, and the re-offer/empty-list semantics. The core action is front-loaded and nothing is redundant.
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?
There is no output schema, and the description compensates by explaining return semantics ('an empty list means nothing new') and the delivery/ack lifecycle. The only minor gap is that it does not describe the shape of an individual message object, but the essential contract is 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 both limit and bot_name are already fully documented in the schema, including defaults, maximums and the addressing behavior of bot_name. The description adds no syntax or format detail beyond that, so the 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?
States a specific verb and resource ('Fetch new messages the user sent you from Heard') and immediately scopes it ('Returns only messages for you'). It is clearly distinguishable from heard_inbox_ack and heard_report, both of which it either names or alludes to through the bot_name parameter.
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?
Explicitly prescribes when to call ('at the start of every task, between steps, and before you finish') and names the follow-up alternative with its condition ('After you act on a message... call heard_inbox_ack with its id'). This is the strongest possible routing guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heard_inbox_ackAcknowledge Heard messagesAIdempotentInspect
Acknowledge messages from heard_inbox once you have acted on or accepted them, so they are not offered again. Pass the ids heard_inbox returned. Acking twice is harmless.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Message ids from heard_inbox. | |
| bot_name | No | Optional: your bot name, so Heard can tell the user who acknowledged. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
'Acking twice is harmless' largely restates the idempotentHint=true annotation rather than adding new information. It does add a genuine behavioral effect beyond the annotations — acked messages are no longer offered — but says nothing about error behavior for unknown ids or the response shape.
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 short sentences, no filler, with the action and its effect front-loaded and the idempotency caveat last. Every sentence carries 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 two-parameter ack tool with no output schema, the description covers the workflow placement, the id source, and the no-op-on-repeat behavior. It omits what happens with invalid ids or whether any result is returned, which is a minor but real gap.
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 both parameters are already documented there, establishing a baseline of 3. The description only reinforces the source of `ids` ('Pass the ids heard_inbox returned') and adds nothing about bot_name or batching limits.
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?
States a specific verb (acknowledge) and resource (messages from heard_inbox), plus the consequence ('so they are not offered again'). The relationship to sibling heard_inbox is made explicit, letting an agent place it in the workflow without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger condition: ack 'once you have acted on or accepted them', which also implies not to ack prematurely. It does not name when-not to use it or point at heard_report as an alternative, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heard_reportReport progress to HeardAInspect
Report your progress to the user through Heard, which reads it aloud on their Mac or texts it to their phone. Call it on every task: status started when you pick the task up, working at real milestones (not every step), needs_input when you are blocked on the user, done when you finish, error if it fails. summary is one or two plain sentences written to be spoken (no markdown, URLs or code). Always use the same bot_name. Never include passwords, keys, tokens or other secrets. The result says whether Heard will deliver it: if delivery.message is present, tell the user that sentence.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | Optional: the AI product you run on, e.g. "Grok Bot", "Devin", "Manus", "ChatGPT", "Claude", "Copilot". | |
| detail | No | Optional longer context (links, file names, what you need from the user). | |
| status | Yes | started = picked up a task; working = milestone; needs_input = blocked on the user; done = finished; error = failed. | |
| summary | Yes | One or two sentences, written to be spoken aloud. | |
| bot_name | Yes | Your name as the user knows you (this agent or session), e.g. "Scout". The same every time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-readonly, non-destructive, non-idempotent call; the description adds real behavioral rules beyond that — content constraints for summary (spoken prose, no markdown/URLs/code), a hard prohibition on secrets, bot_name stability across calls, and what the result means for delivery. It stops short of covering repeated-call/idempotency behavior, which matters for a non-idempotent tool that texts a human.
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 dense paragraph with no waste and the core routing/lifecycle information front-loaded. It is slightly run-on, packing lifecycle, formatting, security and result handling into one block, but nearly every clause carries actionable 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?
With no output schema, the description usefully explains the delivery result ('if delivery.message is present, tell the user that sentence'), which covers the main return concern. Gaps remain: the full response shape on non-delivery, failure behavior for the error status, and any rate limits for a tool intended to be called on every task.
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, and the description genuinely adds meaning the schema lacks: 'Always use the same bot_name' (identity stability) and the summary style rules (plain sentences for speech, no markdown/URLs/code). It says less about the optional agent and detail parameters, which the schema already documents.
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?
'Report your progress to the user through Heard, which reads it aloud on their Mac or texts it to their phone' names a specific verb, resource and delivery mechanism. It is unmistakably distinct from the sibling inbox tools, which read/acknowledge messages rather than send progress updates.
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?
Gives an explicit cadence ('Call it on every task') and disambiguates each status value with a triggering condition: started on pickup, working at milestones not every step, needs_input when blocked, done, error. The 'not every step' exclusion is exactly the kind of when-not guidance that prevents over-calling.
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.
7 tool updates
- Removed
heard_compare - Added
heard_inbox - Added
heard_inbox_ack - Removed
heard_invite_friend - Removed
heard_my_month - Added
heard_report - Removed
heard_share_card
4 tool updates
- First observed
heard_compare - First observed
heard_invite_friend - First observed
heard_my_month - First observed
heard_share_card
Related MCP Connectors
Command your AI agents by voice: PTT rooms, channels, direct messages, agent email, memory (mRAG).
- call-meOAuthapp.getcallme
Calls your phone when an AI task finishes or is blocked — hear it, say what's next.
AI agents and scripts reporting back to your iPhone with Push Notifications and Live Activities.
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables macOS users to hear short spoken summaries of agent replies using the built-in say command, while keeping full details in the chat. Works with any MCP-compatible host and requires no cloud or API key.26 npmMIT
- AlicenseAqualityAmaintenanceEnables AI agents to speak using MacOS native text-to-speech, with support for blocking and non-blocking speech and a sequential queue.215MIT
- AlicenseAqualityAmaintenanceEnables spoken conversations with Claude on a Mac: Claude speaks through speakers, listens to the user's natural replies, and transcribes them locally. No audio leaves the computer, and it includes tools for voice setup and a hands-free voice mode.265 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to ask questions to users asynchronously via a local macOS app, allowing users to respond by text or voice.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.