Skip to main content
Glama
billyfranklim1

mcp-evolution

Send Presence

send_presence

Send typing, recording, or status updates to a WhatsApp chat to simulate user activity. Control the duration of the presence indicator.

Instructions

Send a presence update (typing, recording, etc.) to a chat via the pinned instance.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
numberYesRecipient JID or phone number (e.g. 5511999999999 or group@g.us)
presenceYesPresence status to show: composing (typing), recording (audio), paused, available, unavailable
delayNoHow long to show the presence in milliseconds

Implementation Reference

  • Handler function 'registerSendPresence' that registers the 'send_presence' tool. It builds a payload with number, presence, and optional delay, then calls the Evolution API POST /chat/sendPresence/{instanceName}.
    export function registerSendPresence(server: McpServer, client: EvolutionClient): void {
      server.registerTool(
        "send_presence",
        {
          title: "Send Presence",
          description: "Send a presence update (typing, recording, etc.) to a chat via the pinned instance.",
          inputSchema: schema,
        },
        async (args) => {
          try {
            const payload: Record<string, unknown> = {
              number: args.number,
              presence: args.presence,
            };
            if (args.delay !== undefined) payload["delay"] = args.delay;
            const data = await client.post(`/chat/sendPresence/${client.instanceName}`, payload);
            return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
          } catch (e) {
            if (e instanceof McpError) return { isError: true, content: [{ type: "text" as const, text: e.message }] };
            throw e;
          }
        }
      );
    }
  • Input schema for the 'send_presence' tool: number (PhoneOrJidSchema), presence (enum: composing/recording/paused/available/unavailable), and optional delay (non-negative integer).
    const schema = {
      number: PhoneOrJidSchema,
      presence: z.enum(["composing", "recording", "paused", "available", "unavailable"])
        .describe("Presence status to show: composing (typing), recording (audio), paused, available, unavailable"),
      delay: z.number().int().nonnegative().optional().describe("How long to show the presence in milliseconds"),
    };
  • Registration call for send_presence tool in the tools index, under the 'Chat' section.
    registerSendPresence(server, client);
  • Import statement for registerSendPresence from the send-presence module.
    import { registerSendPresence } from "./send-presence.js";
Behavior2/5

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

No annotations provided; description only states the action and does not disclose behavioral traits like side effects, authentication needs, or error behavior.

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

Conciseness4/5

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

Single sentence, front-loaded with action. Could be slightly more detailed, but overall concise.

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

Completeness3/5

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

Lacks context about 'pinned instance' and behavior. For a simple tool, description is adequate but leaves room for improvement.

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 covers 100% of parameters with descriptions. Description adds minimal extra value beyond schema examples.

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

Purpose4/5

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

The description clearly states the action ('send a presence update') and gives examples of presence types. However, 'via the pinned instance' is somewhat ambiguous without further context.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., other send_* tools). Usage is only implied by the tool's purpose.

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

Install Server

Other Tools

Latest Blog Posts

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/billyfranklim1/mcp-evolution'

If you have feedback or need assistance with the MCP directory API, please join our Discord server