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
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 186 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
claude mcp add signal-found-sf-mcp -- uvx sf-mcp
{
"mcpServers": {
"signal-found-sf-mcp": {
"command": "uvx",
"args": [
"sf-mcp"
]
}
}
} {
"servers": {
"signal-found-sf-mcp": {
"command": "uvx",
"args": [
"sf-mcp"
]
}
}
} codex mcp add signal-found-sf-mcp -- uvx sf-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"signal-found-sf-mcp": {
"type": "local",
"command": [
"uvx",
"sf-mcp"
],
"enabled": true
}
}
} openclaw mcp add signal-found-sf-mcp --command uvx --arg sf-mcp
mcp_servers:
signal-found-sf-mcp:
command: "uvx"
args: ["sf-mcp"] {
"McpServers": {
"signal-found-sf-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"sf-mcp"
]
}
}
} assistant mcp add signal-found-sf-mcp -t stdio -c uvx -a sf-mcp
{
"mcpServers": {
"signal-found-sf-mcp": {
"command": "uvx",
"args": [
"sf-mcp"
]
}
}
} 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
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cancel_url | – | – | – |
| checkout_plan | string | – | – |
| client_id | – | – | – |
| history_limit | integer | – | – |
| include_checkout_preview | boolean | – | – |
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | – |
| client_id | – | – | – |
| customer_name | string | yes | – |
| product_slug | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| confirmed_count | integer | – | – |
| product_slug | string | yes | – |
| uninterested_count | integer | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversion_notes | – | – | – |
| funnels | – | – | – |
| market_position_patch | – | – | – |
| product_slug | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
configure_targeting ~80
Read/update subreddit targeting and keywords for a product.
| Name | Type | Req | Description |
|---|---|---|---|
| check_subreddits | boolean | – | – |
| client_id | – | – | – |
| keyword_search_params | – | – | – |
| keywords | – | – | – |
| product_slug | string | yes | – |
| setup_keywords | boolean | – | – |
| setup_subreddits | boolean | – | – |
| 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`
| Name | Type | Req | Description |
|---|---|---|---|
| auto_login | boolean | – | – |
| business_name | string | yes | – |
| string | yes | – | |
| 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)
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| folder_id | – | – | – |
| idempotency_key | – | – | – |
| product_name | string | yes | – |
| session_id | – | – | – |
| website_url | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| include_conversations | boolean | – | – |
| limit | integer | – | – |
| product_slug | string | yes | – |
| 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).
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| limit | integer | – | – |
| product_slug | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| awaiting_response | – | – | – |
| blacklist_state | – | – | – |
| blacklisted | – | – | – |
| client_id | – | – | – |
| conversation_id | – | – | – |
| conversion_state | – | – | – |
| conversion_states | – | – | – |
| customer_name | – | – | – |
| limit | integer | – | – |
| notes | – | – | – |
| product_slug | string | yes | – |
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversation_id | string | yes | – |
| product_slug | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversation_id | string | yes | – |
| product_slug | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | – |
| client_id | – | – | – |
| include_conversations | boolean | – | – |
| limit | integer | – | – |
| product_slug | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| artifact | – | – | – |
| client_id | – | – | – |
| product_slug | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| product_slug | string | yes | – |
| session_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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).
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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).
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | – |
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`
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversion_notes | – | – | – |
| product_slug | string | yes | – |
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)
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| funnels | – | – | – |
| product_slug | string | yes | – |
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
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| keywords | – | – | – |
| product_slug | string | yes | – |
| 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`
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| market_position_patch | – | – | – |
| product_slug | string | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| product_slug | string | yes | – |
| run_quality_check | boolean | – | – |
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cancel_url | string | – | – |
| checkout_plan | string | – | – |
| client_id | – | – | – |
| inbound_per_day | integer | – | – |
| outbound_per_day | integer | – | – |
| product_slug | string | yes | – |
| start_now | boolean | – | – |
| success_url | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| lookback_days | integer | – | – |
| minimum_worst_outbound | integer | – | – |
| target_campaign_nickname | – | – | – |
| target_end_date | – | – | – |
| target_product_slug | string | yes | – |
| target_start_date | – | – | – |
| transfer_outbound_per_day | integer | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | – | – |
| approve_targeting | boolean | – | – |
| clarification_mode | string | – | – |
| clarifying_answers | array | yes | – |
| clarifying_questions | array | yes | – |
| client_id | – | – | – |
| conversation_mode | string | – | – |
| conversation_transcript | array | yes | – |
| conversion_notes | object | yes | – |
| funnels | array | yes | – |
| keyword_search_params | – | – | – |
| keywords | array | yes | – |
| market_position | object | yes | – |
| product_slug | string | yes | – |
| session_id | string | yes | – |
| subreddit_groups | array | yes | – |
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?"
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| batch_from_working_leads | boolean | – | – |
| batch_id | – | – | – |
| client_id | – | – | – |
| crm_reply_to | – | – | – |
| generate_message | boolean | – | – |
| limit | – | – | – |
| message | – | – | – |
| product_slug | string | yes | – |
| 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']}]
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| keyword_search_params | – | – | – |
| keywords | – | – | – |
| product_slug | string | yes | – |
| session_id | string | yes | – |
| 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'}]
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversion_notes | – | – | – |
| funnels | – | – | – |
| market_position | – | – | – |
| product_slug | string | yes | – |
| session_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversation_id | string | yes | – |
| notes | – | yes | – |
| product_slug | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| conversation_id | string | yes | – |
| note | – | yes | – |
| product_slug | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | – | – | – |
| include_ai_insights | boolean | – | – |
| lookback_days | integer | – | – |
| product_slug | string | yes | – |
| sample_size | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
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.