Server Details
Let agents send content-free push notifications to a paired phone via MCP.
- Status
- Healthy
- Uptime
- 100.0% over 73 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- alfongj-com/yo-plugin
- GitHub Stars
- 0
TDQS
Scored across 5 tools
Most tools have clearly distinct purposes (register, check, yo), but cancel_registration and revoke_self both terminate a connection and could be confused at a glance. The descriptions do clarify their different conditions and timing, reducing ambiguity.
Four of five tools follow a consistent snake_case verb_noun pattern (cancel_registration, check_registration, register_agent, revoke_self). The single-word 'yo' deviates from that pattern, though it is still readable and unique.
Five tools is well-scoped for a focused agent-registration and notification service. Each tool earns its place: register, check, cancel, revoke, and send notification.
The tool set covers the full lifecycle: registration, status polling, cancellation, permanent revocation, and sending the core Yo notification. No obvious gaps for the stated domain.
Available Tools
5 toolscancel_registrationAInspect
Abort a pairing you started with register_agent. Works while pending and after approval: an already-approved connection is revoked (the API key stops working) so a pairing approved by the wrong account can be undone. Available until the pairing expires, and for 15 minutes after you pick up the API key; later than that, use revoke_self. Then call register_agent again.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_token | Yes | The claim_token returned by register_agent (authorizes the cancellation) | |
| pairing_code | Yes | The pairing code returned by register_agent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, which signals mutability. The description adds crucial behavioral context: the tool revokes the API key for already-approved pairings, works both pending and after approval, and has a specific time window. This goes well beyond what annotations provide, making the side effects and constraints 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 concise, consisting of three sentences that each carry essential information. It front-loads the primary purpose, then adds timing and alternative guidance, and finally suggests the follow-up action, all without redundancy or unnecessary 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?
Despite having no output schema, the description fully covers the operational scope: what the tool does, when it is usable, what happens after use (API key stops working), and what to do next. The sibling tools and parameter schema provide enough context to invoke correctly without additional clarification.
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 complete descriptions for both parameters (claim_token and pairing_code) with 100% coverage. The description does not add additional parameter-level detail, but the schema fully documents them, 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 opens with a specific verb and resource: 'Abort a pairing you started with register_agent.' It clearly distinguishes the tool from the sibling revoke_self by explicitly naming the alternative, ensuring an agent understands which operation this tool performs.
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, including when the tool is valid ('Available until the pairing expires, and for 15 minutes after you pick up the API key') and when to use an alternative ('later than that, use revoke_self'). It also instructs to call register_agent again afterward, giving complete context for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_registrationAInspect
Check the status of a pairing code from register_agent. On the first poll after the user approves, the response includes the api_key exactly once — store it immediately in your secret mechanism — plus paired_with, the account the agent is now connected to, which you MUST show the user.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_token | No | The claim_token returned by register_agent; required to receive the api_key | |
| pairing_code | Yes | The pairing code returned by register_agent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses critical, non-obvious behavior: the api_key appears exactly once, must be stored immediately, paired_with identifies the connected account, and the user must be shown that account. This goes well beyond the minimal annotations (readOnlyHint false).
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: the first states purpose, the second immediately highlights the critical response handling. No filler or redundant restatement of schema fields.
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 covers the essential return values (api_key, paired_with) and required user action. It doesn't describe pending states or error scenarios, but for a small polling tool it is largely self-contained.
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?
Both parameters already have full descriptions in the schema, so the description adds little beyond naming pairing_code as coming from register_agent. It doesn't explain claim_token in its own words or add any new parameter-level 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?
Description opens with a specific verb and resource: 'Check the status of a pairing code from register_agent.' This clearly distinguishes it from siblings like cancel_registration or register_agent by indicating a polling/read step in the registration flow.
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 gives clear usage context: poll after register_agent, with a specific behavior on the first poll after approval. It does not explicitly list exclusions or alternatives, but the intended workflow is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentAInspect
Register this agent with Yo (unauthenticated). Returns a pairing URL and code to show the user, who approves the connection in the Yo app. Then poll check_registration to obtain the API key.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Agent platform (e.g. "cursor", "devin", "claude-code") | |
| description | No | Short description of what this agent does | |
| proposed_name | Yes | Proposed display name for the agent (e.g. "banana", "devin-home-repo") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the sparse annotations (readOnlyHint=false, openWorldHint=false). It discloses the return type, the user approval flow, and the need for polling asynchronously. This adequately informs the agent about the tool's operational characteristics, though it doesn't cover edge cases like duplicate registrations.
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 purpose and flows logically to the return value and next steps. Every clause contributes necessary information without redundancy, making it appropriately concise.
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 simple tool (no output schema, all parameters documented, no nested objects), the description fully conveys the expected flow: register, receive pairing info, user approval, then poll a sibling tool. This is complete for an agent to 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 with clear descriptions for all three parameters (platform, description, proposed_name), including examples. The description adds no additional parameter explanation, so it meets the baseline for schema-heavy contexts without going beyond.
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 ('Register this agent with Yo'), the resource (agent with Yo), and the unauthenticated nature. It also distinguishes itself from sibling tools by describing the return value (pairing URL and code) and the follow-up step (poll check_registration), making it clear this is the initial registration step.
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 a clear usage context: use this to start registration, then poll check_registration for the API key. It explicitly mentions the alternative/sequel tool, which helps an agent decide when to use it. However, it doesn't mention when not to use it (e.g., if already registered), so it misses explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_selfAInspect
Permanently revoke THIS agent using its API key as the Bearer token. Use when you discover (at any time) that paired_with is not your owner’s account and cancel_registration no longer works. The key stops working immediately; call register_agent to start over.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true — revocation is immediate and irreversible |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that revocation is permanent, immediate, and makes the key stop working. While annotations only indicate readOnlyHint=false, the description goes further by explaining the irreversible effect and the auth mechanism (API key as Bearer token), adding significant value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding necessary information: the action, the condition to use it, and the consequence/next step. No filler or redundant wording.
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 param and no output schema, the description covers the purpose, usage condition, effect, and recovery path. It lacks only minor details like return value or error cases, but these are not critical given the tool's simplicity.
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% and the single parameter (confirm) is fully described in the schema itself. The tool description does not add additional parameter semantics, but does not need to because the schema already provides complete meaning.
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 'revoke' and identifies the resource as 'THIS agent', clearly distinguishing it from sibling tools like cancel_registration. It also explicitly contrasts with cancel_registration, making its unique purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'when you discover ... that paired_with is not your owner's account and cancel_registration no longer works.' It also provides an alternative next step ('call register_agent to start over'), giving clear directional guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yoAInspect
Send a Yo push notification to your owner. Recommended: include a short subject explaining what the notification is about, and a context_url when there is a useful link to open. The subject appears on the lock screen and in the app; avoid secrets. Requires an agent API key as the Bearer token.
| Name | Required | Description | Default |
|---|---|---|---|
| subject | No | Recommended: a short, specific subject explaining why you are notifying the user (1–120 characters, counted as Unicode code points), e.g. "PR ready for review". Plain text, one line; avoid secrets because it appears on the lock screen. Optional for compatibility with older agents. | |
| context_url | No | Optional https or app deep-link URL opened when the user taps the notification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and openWorldHint=false, so the description carries real extra weight: it discloses the auth requirement ('Requires an agent API key as the Bearer token') and the privacy consequence that the subject appears on the lock screen and in the app, hence 'avoid secrets'. It stops short of describing delivery, rate limits, or failure behavior.
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, front-loaded with the action, then recommendations, then the auth caveat. Nothing is padding, though the parameter recommendations partially duplicate the schema descriptions.
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, zero-required tool with no output schema, the description covers purpose, both parameters, authentication, and the lock-screen/secret caveat. Minor gaps remain around result reporting and send frequency 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?
Schema description coverage is 100%, so the schema already documents length limits, Unicode code-point counting, and https/deep-link formatting. The description restates the recommended usage of both fields (why to include a subject, when a context_url is useful) but adds little 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?
The description opens with a specific verb, resource and target: 'Send a Yo push notification to your owner.' That is unambiguous and cannot be confused with the sibling registration/revocation tools, none of which send messages.
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 implies the use case (notify the owner) and gives parameter-level recommendations ('include a short subject...', 'a context_url when there is a useful link'), but never states when to notify versus not to, nor any frequency/appropriateness limits. With no true alternative tool to route between, this is adequate but thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
yo1 field changed- added
Input schema / properties / subjectAdded value: +{ + "description": "Recommended: a short, specific subject explaining why you are notifying the user (1–120 characters, counted as Unicode code points), e.g. \"PR ready for review\". Plain text, one line; avoid secrets because it appears on the lock screen. Optional for compatibility with older agents.", + "minLength": 1, + "type": "string" +}
2 tool updates
- Added
cancel_registration - Added
revoke_self
1 tool update
- Changed
check_registration1 field changed- added
Input schema / properties / claim_tokenAdded value: +{ + "description": "The claim_token returned by register_agent; required to receive the api_key", + "maxLength": 64, + "type": "string" +}
3 tool updates
- Removed
cancel_registration - Changed
check_registration1 field changed- removed
Input schema / properties / claim_tokenRemoved value: -{ - "description": "The claim_token returned by register_agent; required to receive the api_key", - "maxLength": 64, - "type": "string" -}
- Removed
revoke_self
5 tool updates
- First observed
cancel_registration - First observed
check_registration - First observed
register_agent - First observed
revoke_self - First observed
yo
Related MCP Connectors
Push notifications for AI agents - send instant iPhone notifications from any MCP client.
Send push to Android, iOS and the web, and ask a trusted phone to approve a login, from your agent.
- mcp-serverOAuthnet.vybit
Push notifications with personalized sounds - manage and trigger your vybits via MCP
Reach your own phone from an AI agent: notifications, approval questions, reminders, ring, files.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables sending push notifications to phones and other devices from any MCP client, with tools for validating users, listing sounds, checking limits, and managing emergency receipts.MIT

Hark MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents and MCP clients to send and update live notifications to one or all paired devices, ask the user a question, and wait for a response they tap or type on Android, macOS, or the web.125,289 npmMIT- AlicenseAqualityBmaintenanceEnables agents to publish messages to MQTT topics, which can be turned into phone notifications via the NotifyMQTT Android app.2MIT
- AlicenseDqualityDmaintenanceEnables MCP agents to send desktop notifications for completed tasks, failures, and important updates, providing visible and reliable feedback.123 npm2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.