Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.signal-found/sf-mcp

PYPI · SF-MCP · SCANNED SEP 20

Reddit outreach at scale — find prospects, send 1000s of DMs/day, and manage your CRM via AI agents.

Available components

0 this week 63 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 0 of 29 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency45
Schema Quality & AI Usability73
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 3257 tokens (~81/item across 40 items; 40 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "send_reddit_message" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.signal-found/sf-mcp server?

io.github.signal-found/sf-mcp runs locally as a PyPI package, launched with uvx sf-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · sf-mcp

# add to Claude Code
claude mcp add signal-found-sf-mcp -- uvx sf-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "signal-found-sf-mcp": {
      "command": "uvx",
      "args": [
        "sf-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "signal-found-sf-mcp": {
      "command": "uvx",
      "args": [
        "sf-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add signal-found-sf-mcp -- uvx sf-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "signal-found-sf-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "sf-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add signal-found-sf-mcp --command uvx --arg sf-mcp
# ~/.hermes/config.yaml
mcp_servers:
  signal-found-sf-mcp:
    command: "uvx"
    args: ["sf-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "signal-found-sf-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "sf-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add signal-found-sf-mcp -t stdio -c uvx -a sf-mcp
// mcp.json
{
  "mcpServers": {
    "signal-found-sf-mcp": {
      "command": "uvx",
      "args": [
        "sf-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 18 Sept 26 0
    • Stability: 0.97 → pass security
  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 11 Sept 26 0
    • Stability: 0.97 → pass security
  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Sept 26 −14
    • Malware scan: pass → unverified security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/sf-mcp@0.1.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 29 packages
Packages resolved 29
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 40 exposed · ~3,257 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
agent_quickstart ~37

Zero-context onboarding playbook for agents using this MCP server. Returns the recommended call sequence, common guardrails, and recovery hints.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

billing_and_credits ~69

Get billing + credits overview, and optionally create a checkout session preview/action.

NameTypeReqDescription
cancel_url
checkout_planstring
client_id
history_limitinteger
include_checkout_previewboolean
success_url

Structured output declared, but exposes no named fields.

No examples provided.

change_crm_state ~52

Change a customer's CRM conversion state (category) for a product.

NameTypeReqDescription
categorystringyes
client_id
customer_namestringyes
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

compare_confirmed_vs_uninterested ~60

Pull sample confirmed and uninterested conversations and return side-by-side message snippets.

NameTypeReqDescription
client_id
confirmed_countinteger
product_slugstringyes
uninterested_countinteger

Structured output declared, but exposes no named fields.

No examples provided.

configure_product_strategy ~57

Read/update product strategy assets: market position, conversion notes, and funnels.

NameTypeReqDescription
client_id
conversion_notes
funnels
market_position_patch
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

configure_targeting ~80

Read/update subreddit targeting and keywords for a product.

NameTypeReqDescription
check_subredditsboolean
client_id
keyword_search_params
keywords
product_slugstringyes
setup_keywordsboolean
setup_subredditsboolean
subreddit_groups

Structured output declared, but exposes no named fields.

No examples provided.

create_new_account ~90

Create a brand-new Signal Found client account for onboarding. Requires: - `business_name` - `email` Returns created `client_id` and (by default) logs this MCP session into it. Next step after success: - call `create_new_product`

NameTypeReqDescription
auto_loginboolean
business_namestringyes
emailstringyes
source

Structured output declared, but exposes no named fields.

No examples provided.

create_new_product ~133

Create a product and initialize the agent onboarding session context. The response includes: - product creation result - context packet (existing artifacts + screenshot uri) - prompt pack + version metadata Prerequisite: - authenticated session via `login_with_client_id` (or provide `client_id` explicitly) Next step after success: - call `run_full_agentic_onboarding` (or run staged tools manually)

NameTypeReqDescription
client_id
folder_id
idempotency_key
product_namestringyes
session_id
website_urlstringyes

Structured output declared, but exposes no named fields.

No examples provided.

crm_customers_by_state ~60

List CRM customer data filtered by conversion states with explicit dedupe diagnostics.

NameTypeReqDescription
client_id
include_conversationsboolean
limitinteger
product_slugstringyes
states

Structured output declared, but exposes no named fields.

No examples provided.

crm_state_stats ~45

Return CRM state statistics (unique deduped customer counts by conversion_state).

NameTypeReqDescription
client_id
limitinteger
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

crm_workbench ~164

CRM read/write operations (no reply generation and no DM sending). Use `action` to select operation; each action has its own required fields. This tool intentionally excludes outbound messaging behaviors. Supported actions: - list_customers - prospect_stats - get_conversation_by_id - update_conversion_state - update_blacklist - get_notes - update_notes

NameTypeReqDescription
actionstringyes
awaiting_response
blacklist_state
blacklisted
client_id
conversation_id
conversion_state
conversion_states
customer_name
limitinteger
notes
product_slugstringyes
username

Structured output declared, but exposes no named fields.

No examples provided.

current_client_context ~21

Return the currently authenticated client context for this MCP server session.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_conversation_by_id ~45

Get conversation messages for a conversation ID inside a product scope.

NameTypeReqDescription
client_id
conversation_idstringyes
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_conversation_notes ~43

Get notes for a CRM conversation in a product scope.

NameTypeReqDescription
client_id
conversation_idstringyes
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_deduped_crm_by_category ~66

Retrieve deduped CRM records by single state or lead-category bucket.

NameTypeReqDescription
categorystringyes
client_id
include_conversationsboolean
limitinteger
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_onboarding_prompt_pack ~102

Fetch server-curated prompt contracts that define required onboarding outputs. Use this when an agent needs exact formatting/expectations before generating: - clarifications - conversation transcript - market positioning - keywords/subreddits Use `artifact` for focused contracts: - clarifications - market_position - conversation - keywords - subreddits

NameTypeReqDescription
artifact
client_id
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_onboarding_status ~85

Canonical onboarding progress view for a product/session. Returns: - current phase - next required action - prompt-pack ack state - targeting approval state - missing artifacts + readiness blockers Use this for recovery if a previous onboarding run was partial or failed.

NameTypeReqDescription
client_id
product_slugstringyes
session_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_product_tree ~30

Get nested folders and products for a client, equivalent to frontend product tree.

NameTypeReqDescription
client_id

Structured output declared, but exposes no named fields.

No examples provided.

list_campaigns ~34

List campaigns for a client (active/inactive, product mapping, budget, and warning signals).

NameTypeReqDescription
client_id

Structured output declared, but exposes no named fields.

No examples provided.

list_conversion_states ~26

Return canonical CRM conversion states available for recategorization.

NameTypeReqDescription
client_id

Structured output declared, but exposes no named fields.

No examples provided.

list_products ~32

List all products for a client (slug, display_name, product_unique, folder_id).

NameTypeReqDescription
client_id

Structured output declared, but exposes no named fields.

No examples provided.

login_with_client_id ~65

Authenticate MCP session to a Signal Found client account. Run this at the start of each session before business tools. Most tools require authenticated context and will use this session client id unless you pass an explicit `client_id` argument.

NameTypeReqDescription
client_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

logout_client_context ~21

Clear the active authenticated client context for this MCP server session.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

modify_conversion_notes ~92

Read or update conversion notes with explicit required key names. How to use: - Call without `conversion_notes` to inspect current notes. - For updates, provide all three canonical keys for consistency. Expected keys (string values): - `Product Name` - `Payment Terms/Plans` - `General Notes`

NameTypeReqDescription
client_id
conversion_notes
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

modify_funnels ~102

Read or replace funnels with explicit shape validation. How to use: - Call without `funnels` to inspect current funnel list. - Update is replace-style: provide the full intended funnels list. Expected item shape: - `url` (string) - `description` (string) - `primary_use_case` (string) - `qualification` (optional string)

NameTypeReqDescription
client_id
funnels
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

modify_keywords ~139

Read or update keyword targeting with optional search parameters. How to use: - Call without `keywords` to inspect current keywords config. - Update writes explicit keyword list and optional search params. Expected payload shape: - `keywords`: list[str] - `search_params` (optional): - `sort`: one of `relevance|hot|top|new|comments` - `time_filter`: one of `hour|day|week|month|year|all` - `per_keyword_limit`: int

NameTypeReqDescription
client_id
keywords
product_slugstringyes
search_params

Structured output declared, but exposes no named fields.

No examples provided.

modify_market_positioning ~125

Read or update market positioning with explicit format guidance. How to use: - Call without `market_position_patch` to inspect current data before editing. - Send only keys you want to change (patch semantics). Expected patch keys (string values): - `one_line_pitch` - `icp` - `competitive_alternatives` - `uniqueness` - `value_proof` - `market_category` - `trends` - `additional_info`

NameTypeReqDescription
client_id
market_position_patch
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

modify_subreddits ~106

Read or update subreddit targeting groups. How to use: - Call without `subreddit_groups` to inspect current targeting. - Update expects `groups` format used by onboard API targeting endpoint. Expected `subreddit_groups` item shape: - `subreddits`: list of subreddit names (without `r/` prefix preferred).

NameTypeReqDescription
client_id
product_slugstringyes
run_quality_checkboolean
subreddit_groups

Structured output declared, but exposes no named fields.

No examples provided.

onboarding_campaign_decision ~116

Evaluate readiness and optionally start campaign immediately. If not ready and blocked on credits, also returns a checkout link. Use this after onboarding reaches targeting approval. Set `start_now=true` to attempt campaign launch.

NameTypeReqDescription
cancel_urlstring
checkout_planstring
client_id
inbound_per_dayinteger
outbound_per_dayinteger
product_slugstringyes
start_nowboolean
success_urlstring

Structured output declared, but exposes no named fields.

No examples provided.

portfolio_close_rate ~27

Compute close rate across all products based on CRM conversion states.

NameTypeReqDescription
client_id

Structured output declared, but exposes no named fields.

No examples provided.

rebalance_resources_to_product ~95

Shift outbound/day budget from the worst active campaign to a target product campaign.

NameTypeReqDescription
client_id
lookback_daysinteger
minimum_worst_outboundinteger
target_campaign_nickname
target_end_date
target_product_slugstringyes
target_start_date
transfer_outbound_per_dayinteger

Structured output declared, but exposes no named fields.

No examples provided.

run_full_agentic_onboarding ~258

Execute the full staged onboarding flow end-to-end in one call. Intended for zero-context agents that want a safe default path. This tool orchestrates: - prompt-pack version + ack - clarifications (questions/mode/answers) - conversation (mode/transcript/extract) - artifact validation + writes - targeting submit (+ optional approve) - readiness snapshot Requirements: - `clarifying_questions` must have exactly 3 items - pass valid schema payloads for artifacts/targeting On partial failure, returns `failed_stage`, `retry_hint`, and completed stages.

NameTypeReqDescription
agent_idstring
approve_targetingboolean
clarification_modestring
clarifying_answersarrayyes
clarifying_questionsarrayyes
client_id
conversation_modestring
conversation_transcriptarrayyes
conversion_notesobjectyes
funnelsarrayyes
keyword_search_params
keywordsarrayyes
market_positionobjectyes
product_slugstringyes
session_idstringyes
subreddit_groupsarrayyes

Structured output declared, but exposes no named fields.

No examples provided.

sales_control_tower ~53

Command-center summary for a client: products, campaign health, close-rate, and recommendations. Best first operational tool after login when the user asks for "what should we do next?"

NameTypeReqDescription
client_id

Structured output declared, but exposes no named fields.

No examples provided.

send_reddit_message ~212

Send Reddit DMs to scraped leads via the Signal Found Chrome extension. Three modes (exactly one must be set): - target_username: cold DM to a specific Reddit user - crm_reply_to: reply to an existing CRM conversation - batch_from_working_leads=True: send to all uncontacted working leads for this product Message content: provide a manual message, or set generate_message=True (default) to auto-generate using the product's market positioning and conversion notes via Phase 2. In batch mode, pre-computed suggested_response values are reused when available. Requires a Chrome extension connected and active on Reddit. Fails immediately if none is online.

NameTypeReqDescription
batch_from_working_leadsboolean
batch_id
client_id
crm_reply_to
generate_messageboolean
limit
message
product_slugstringyes
target_username

Structured output declared, but exposes no named fields.

No examples provided.

sf_health ~53

Preflight check for MCP -> onboard_api connectivity and auth context. Use this first in a new session to confirm: - backend is reachable - current MCP session auth state - whether a default client id is configured

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

submit_agent_targeting ~137

Persist targeting artifacts (keywords/subreddits) and return policy/preview. Prerequisites: - prompt pack must be acknowledged for `session_id` - artifacts should already be saved for best results Typical next step: - approve targeting (done automatically by `run_full_agentic_onboarding` when enabled) Formats: - keywords: list[str] - subreddit_groups: [{'subreddits': ['name1','name2']}]

NameTypeReqDescription
client_id
keyword_search_params
keywords
product_slugstringyes
session_idstringyes
subreddit_groups

Structured output declared, but exposes no named fields.

No examples provided.

submit_onboarding_artifacts ~158

Validate and persist core onboarding artifacts for a product/session. Prerequisites: - prompt pack must be acknowledged for `session_id` - payloads should match the artifact schemas below Common use: - called by `run_full_agentic_onboarding` - can also be used for staged/recovery runs Expected formats: - market_position: patch object with market position keys - conversion_notes: {'Product Name','Payment Terms/Plans','General Notes'} - funnels: [{'url','description','primary_use_case', optional 'qualification'}]

NameTypeReqDescription
client_id
conversion_notes
funnels
market_position
product_slugstringyes
session_idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

update_conversation_notes ~48

Update notes for a CRM conversation in a product scope.

NameTypeReqDescription
client_id
conversation_idstringyes
notesyes
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

upsert_conversation_note ~49

Create/update a conversation note for a product scope conversation.

NameTypeReqDescription
client_id
conversation_idstringyes
noteyes
product_slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

voice_of_customer_report ~70

Produce a voice-of-customer report combining outcome metrics and confirmed/uninterested conversation samples.

NameTypeReqDescription
client_id
include_ai_insightsboolean
lookback_daysinteger
product_slugstringyes
sample_sizeinteger

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the io.github.signal-found/sf-mcp server?

io.github.signal-found/sf-mcp is listed in the public MCP registry as io.github.signal-found/sf-mcp. Reddit outreach at scale, find prospects, send 1000s of DMs/day, and manage your CRM via AI agents. This page covers its PyPI package (sf-mcp).

Is the io.github.signal-found/sf-mcp server safe to use?

io.github.signal-found/sf-mcp scores 63 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.signal-found/sf-mcp server expose?

io.github.signal-found/sf-mcp exposes 40 tools: sf_health, login_with_client_id, current_client_context, agent_quickstart, logout_client_context, and 35 more. Their descriptions and schemas cost roughly 3,257 tokens of context every time the server is loaded.

Is the io.github.signal-found/sf-mcp server still maintained?

io.github.signal-found/sf-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.signal-found/sf-mcp server under?

io.github.signal-found/sf-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.