PrivacyFlow MCP Server
OfficialClick 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., "@PrivacyFlow MCP Serversend a Signal message to +1234567890 saying 'Meeting at 3pm'"
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.
PrivacyFlow MCP Server
MCP server for PrivacyFlow — encrypted messaging via Signal, SimpleX, and Session.
Setup
Prerequisites
Node.js >= 18
A PrivacyFlow API key from the PrivacyFlow dashboard
Installation
npm install -g privacyflow-mcp-serverAlternatively, use npx for on-demand execution without installing:
npx -y privacyflow-mcp-serverConfiguration
Set the following environment variables:
Variable | Required | Default | Description |
| Yes | — | Your PrivacyFlow API key |
| No |
| API base URL |
| No |
| Auth header: |
Usage
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"privacyflow": {
"command": "npx",
"args": ["-y", "privacyflow-mcp-server"],
"env": {
"PRIVACYFLOW_API_KEY": "pf_live_your_key_here",
"PRIVACYFLOW_BASE_URL": "https://api.privacyflow.app"
}
}
}
}OpenCode (.opencode.json)
{
"mcp": {
"privacyflow": {
"type": "local",
"command": "npx",
"args": ["-y", "privacyflow-mcp-server"],
"env": {
"PRIVACYFLOW_API_KEY": "pf_live_your_key_here",
"PRIVACYFLOW_BASE_URL": "https://api.privacyflow.app"
},
"enabled": true
}
}
}Cursor
Add to your Cursor MCP config (~/.cursor/mcp.json):
{
"mcpServers": {
"privacyflow": {
"command": "npx",
"args": ["-y", "privacyflow-mcp-server"],
"env": {
"PRIVACYFLOW_API_KEY": "pf_live_your_key_here",
"PRIVACYFLOW_BASE_URL": "https://api.privacyflow.app"
}
}
}
}Related MCP server: XMTP MCP Server
Tools
Tool | Description |
| Check API health and version |
| Verify API key validity and list authorized app IDs |
| List authorized apps with names, active state, and configured messengers |
| Poll incoming messages from your app queue |
| Send messages via PrivacyFlow |
Resources
privacyflow://docs/api— API endpoint documentationprivacyflow://docs/contact-formats— Signal/Session/SimpleX contact ID formats
Prompts
privacyflow_reply_to_message— Reply to a polled message preserving routing fieldsprivacyflow_broadcast— Broadcast a message to multiple contacts
Development
npm install # Install dependencies
npm run dev # Run with tsx (development)
npm run build # Build TypeScript
npm test # Run testsTesting with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsLicense
MIT
Available Tools
5 toolsprivacyflow_check_healthA
Check the health of the PrivacyFlow API. Returns status and version information. No authentication required.
| 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 takes on the full burden of behavioral disclosure. It states that no authentication is required, which is a key behavioral trait, and specifies the return content (status and version). It does not explicitly say 'read-only' or discuss failure modes, but for a health-check tool this is adequate.
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 includes all essential information without unnecessary detail. Every word earns its place.
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 simplicity (no params, no output schema), the description is nearly complete: it explains what the tool does, what it returns, and the auth requirement. It could optionally describe what 'status' means, but this is a minor omission for a health check.
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 is 4. The description adds no parameter information, but there are no parameters to describe. The schema is empty, so minimal description is needed here.
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 ('Check the health') with a specific resource ('PrivacyFlow API'), and clearly differentiates from sibling tools by indicating it returns status and version information. This is distinct from authentication, app listing, and messaging 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?
The description provides clear context for when to use this tool (to check health) and a key usage note (no authentication required). It does not explicitly mention alternatives or exclusions, but the sibling tools are obviously different, so the usage context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
privacyflow_list_appsA
List all PrivacyFlow apps authorized by your API key. Each app includes its appId, name, active state, and configured messengers (with groupId and provisioning status). Use this to discover which appIds you can pass to privacyflow_send_messages and which messengers each app supports. No input required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 data returned (appId, name, active state, messengers with groupId/provisioning status) and the no-input requirement. While it doesn't mention potential side effects or rate limits, the scope of a list operation is well-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?
The description is three sentences, front-loaded with the main action, and contains no filler. Every sentence adds value: what it does, what it returns, and how to use it.
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, zero-parameter list tool, the description is complete. It covers the purpose, the return content, the use case, and input requirements. The absence of an output schema is compensated by explicitly listing the fields included.
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 zero parameters, so baseline is 4. The description adds explicit confirmation with 'No input required,' reinforcing what the empty schema already suggests. No additional param 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: 'List all PrivacyFlow apps authorized by your API key.' It uses a specific verb (list) and resource (apps), and distinguishes from siblings by explicitly referencing discovery of appIds for privacyflow_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?
The description provides clear context on when to use the tool: 'Use this to discover which appIds you can pass to privacyflow_send_messages and which messengers each app supports.' It mentions an alternative by name but stops short of explicit exclusion or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
privacyflow_poll_messagesA
Poll incoming messages from your PrivacyFlow app queues. Returns messages from all apps authorized by your API key. Messages are consumed on poll (destructive read). Supports Signal, SimpleX, and Session messengers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of messages to poll (1-50, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the burden of behavioral disclosure. It explicitly states that messages are 'consumed on poll (destructive read),' which is a critical operational trait, and it notes that the tool returns messages from all authorized apps. It does not mention rate limits or response format, but the key destructive behavior is clearly communicated.
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 focused sentences: the first names the action and resource, the second clarifies scope, and the third highlights destructive consumption and supported messengers. There is no fluff or repetition, and it reads well.
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 tool with no output schema, the description covers the essential context: what it polls, the scope of returned messages, the destructive read semantics, and supported messaging protocols. It could optionally describe the response shape, but at this complexity level the description is largely 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?
The input schema has 100% coverage for the single 'limit' parameter, including a clear description, default, and range. The tool description adds no parameter-specific semantics beyond what the schema already provides, so the baseline 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 starts with the specific verb 'Poll' and identifies the resource as 'incoming messages from your PrivacyFlow app queues.' It clearly distinguishes this from siblings like send_messages, list_apps, and check_health by focusing on message retrieval/consumption.
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 makes the basic purpose clear and mentions that it returns messages from authorized apps, but it does not explicitly state when to use this tool instead of a sibling alternative, nor does it provide exclusions or prerequisites beyond the implied API key authorization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
privacyflow_send_messagesSend MessagesA
Send one or more messages through PrivacyFlow. Accepts an array of message objects. Each message requires appId, contactId, message, and messenger (signal/simplex/session). Optionally include groupId for group replies. Maximum 50 messages per call, 10,000 characters per message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It mentions message limits, required fields, and optional groupId, but does not describe delivery guarantees, error behavior, authentication requirements, or response format. For a mutating operation, this is only partial transparency, though the limits are a useful addition.
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 well-structured, with each sentence adding necessary detail: purpose, structure, required/optional fields, and limits. It is immediately front-loaded with the core purpose and contains no redundant 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 tool with no output schema and no annotations, the description covers input structure, required parameters, optional group reply, and hard limits. It lacks details on return values or error semantics, but for a send action this is acceptable. The description is nearly complete for practical 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 is empty, so the description is the sole source of parameter information. It explicitly lists required fields (appId, contactId, message, messenger), provides allowed enum values for messenger (signal/simplex/session), and notes an optional groupId for group replies. This fully compensates for the missing 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 identifies the action ('Send one or more messages through PrivacyFlow') with a specific verb and resource. It distinguishes itself from sibling tools (check_health, verify_api_key, list_apps, poll_messages) which are all non-messaging operations.
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 (sending messages) and details optional group usage. It does not explicitly state when not to use or point to alternatives, but the sibling tools are clearly distinct, making usage obvious. The constraints (max 50 messages, 10,000 chars) also inform practical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
privacyflow_verify_api_keyA
Verify that the configured PrivacyFlow API key is valid and return the list of authorized app IDs. No side effects.
| 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. It states 'No side effects', which is a useful behavioral disclosure. However, it does not describe what happens when the key is invalid (e.g., error behavior, response format), leaving a notable gap for a verification tool.
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 includes the key behavioral note ('No side effects'). Every word earns its place without redundancy.
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 no output schema, the description partially explains the return value ('list of authorized app IDs') but does not specify the success/error states or response format. Since there are no annotations, this omission makes the description incomplete for understanding full 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?
There are zero parameters, so the baseline is 4. The description adds value by clarifying that the tool operates on a 'configured' API key, indicating the existence of pre-existing configuration rather than taking parameters at call time. This contextualizes the lack of 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 uses a specific verb ('Verify') and resource ('configured PrivacyFlow API key'), and specifies the return value ('list of authorized app IDs'). This clearly distinguishes it from siblings like privacyflow_check_health (health check) and privacyflow_list_apps (listing apps), 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 when you need to validate the API key and see authorized apps, but it does not explicitly contrast with sibling tools or state when to use this versus alternatives. There is no 'use this instead of...' guidance, so the usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action: health check, API key validation, app listing, polling incoming messages, and sending messages. Descriptions clearly differentiate the purpose of each tool, with no meaningful overlap.
All tools follow a consistent pattern: the 'privacyflow' prefix followed by a verb_noun structure (check_health, verify_api_key, list_apps, poll_messages, send_messages). This uniform naming makes the toolset predictable and easy to navigate.
With exactly 5 tools, the server is well-scoped for a messaging integration service. Each tool covers a necessary operation (health, auth, discovery, receive, send) without unnecessary bloat or redundancy.
The toolset covers the core lifecycle of a messaging service: authentication, app discovery, sending, and receiving messages. Minor gaps exist (e.g., no explicit message acknowledgment or per-app filtering on poll), but these are reasonable workarounds and do not cripple the primary workflows.
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
Collaboration layer for AI agents. Publish assets, send messages, manage threads and contacts.
17-model LLM gateway + 350+ data/KYB/sanctions tools. Pay-per-call USDC via x402, no API key.
Unified inbox MCP for WhatsApp, Telegram, Email, voice — read/send messages, search, AI agents.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI models to interact with messages from various messaging platforms (Mobile, Mail, WhatsApp, LinkedIn, Slack, Twitter, Telegram, Instagram, Messenger) through a standardized interface.316MIT
- AlicenseAqualityNot gradedmaintenanceEnables AI agents to interact with the XMTP decentralized messaging network. Supports sending encrypted messages, managing conversations, and streaming real-time messages to any XMTP-enabled wallet address.623
- AlicenseNot gradedqualityCmaintenanceEnables async, authenticated messaging between AI agents with explicit authorization and persistent inbox.3MIT
- AlicenseAqualityCmaintenanceEnables LLM agents to send, receive, and discover contacts on the agentic message bus via native tools.5MIT
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/privacyflow-app/privacyflow-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server