Skip to main content
Glama

send_message_request_response

Idempotent

Accept or decline a message request from an unknown sender. Set accept to true to share your profile, or false to decline without blocking.

Instructions

Accept or decline a message request from someone not in your contacts. sender (required, E.164) is who sent the request; accept (required): true accepts, which shares your profile with them; false declines (deletes the request) and turns profile sharing off. Declining does not block them — use block_contact for that. The decision is recorded locally and synced to your linked devices; the sender is not sent a message. Returns status 'message request accepted' or 'message request declined' and sender.

Input Schema

NameRequiredDescriptionDefault
acceptYestrue to accept (shares your profile), false to decline (does not block)
senderYesPhone number (E.164) of the contact who sent the message request

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.43.0
    • changedInput schema / properties / accept / description
      Previous value: -"true to accept and start chatting, false to decline/block"New value: +"true to accept (shares your profile), false to decline (does not block)"
    • changedInput schema / properties / sender / description
      Previous value: -"Phone number of the contact who sent the message request"New value: +"Phone number (E.164) of the contact who sent the message request"
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: accept shares your profile, decline deletes the request and turns profile sharing off, the decision is recorded locally and synced to linked devices, and no message is sent to the sender. This is unusually rich behavioral context for a mutating tool.

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

Conciseness5/5

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

Front-loaded with the core action, then consequences, then the sibling disambiguation, then return values. Dense but every clause earns its place with no redundancy.

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

Completeness5/5

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

With no output schema, the description supplies the return values ('message request accepted'/'declined' plus sender). Side effects, device sync, and the non-blocking distinction are all covered, so nothing needed to call it correctly is missing.

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

Parameters3/5

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 both parameters (E.164 sender, accept semantics). The description restates this but adds little syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States the specific verbs (accept/decline) and the exact resource (a message request from someone not in your contacts), which is distinct from every sibling. An agent can identify the operation without opening the schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: declining 'does not block them — use block_contact for that,' naming the alternative and the condition that selects it. Both accept and decline outcomes are spelled out, leaving nothing to inference.

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