Skip to main content
Glama
privacyflow-app

PrivacyFlow MCP Server

Official

PrivacyFlow MCP Server

MCP server for PrivacyFlow — encrypted messaging via Signal, SimpleX, and Session.

Setup

Prerequisites

Installation

npm install -g privacyflow-mcp-server

Alternatively, use npx for on-demand execution without installing:

npx -y privacyflow-mcp-server

Configuration

Set the following environment variables:

Variable

Required

Default

Description

PRIVACYFLOW_API_KEY

Yes

Your PrivacyFlow API key

PRIVACYFLOW_BASE_URL

No

https://api.privacyflow.app

API base URL

PRIVACYFLOW_API_KEY_HEADER

No

authorization

Auth header: authorization or x-api-key

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

privacyflow_check_health

Check API health and version

privacyflow_verify_api_key

Verify API key validity and list authorized app IDs

privacyflow_list_apps

List authorized apps with names, active state, and configured messengers

privacyflow_poll_messages

Poll incoming messages from your app queue

privacyflow_send_messages

Send messages via PrivacyFlow

Resources

  • privacyflow://docs/api — API endpoint documentation

  • privacyflow://docs/contact-formats — Signal/Session/SimpleX contact ID formats

Prompts

  • privacyflow_reply_to_message — Reply to a polled message preserving routing fields

  • privacyflow_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 tests

Testing with MCP Inspector

npx @modelcontextprotocol/inspector node build/index.js

License

MIT

Available Tools

5 tools
privacyflow_check_healthA

Check the health of the PrivacyFlow API. Returns status and version information. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of messages to poll (1-50, default 10)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

A4.3/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI models to interact with messages from various messaging platforms (Mobile, Mail, WhatsApp, LinkedIn, Slack, Twitter, Telegram, Instagram, Messenger) through a standardized interface.
    3
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables async, authenticated messaging between AI agents with explicit authorization and persistent inbox.
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLM agents to send, receive, and discover contacts on the agentic message bus via native tools.
    5
    MIT

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/privacyflow-app/privacyflow-mcp-server'

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