Koskamo

Smoke Run MCP

Smoke Run is a revenue-integrity service that runs a synthetic customer down a website's money path to report where steps break, reporting in dollars. It provides tools to run revenue checks, read money systems, and view findings, operating as a read-only teardown of public sites without writing or completing charges.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Smoke Run MCP logo, by Smoke RunVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Smoke Run
You need:no signup and no key for the free teardownPass a key as a bearer token or as the api_key argument to lift the free daily limit
MCP endpoint (Streamable HTTP)
https://getsmokerun.com/api/mcp
Vendor documentation

What its tools do

4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

4 of 4 have a description · 4 of 4 declare behavior hints · 4 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to getsmokerun.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Run a revenue check on a public website to find broken money paths
  • Read the revenue stack including payment processors and tracking
  • View latest findings and list checks with an API key

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
smokerun 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Smoke Run is a read-only revenue-integrity service for agents. run_revenue_check(url) is free and needs no key: it loads a public site as a synthetic visitor, follows the money path, and returns a dollar-proof teardown of where revenue is at risk, with a confidence label on each finding. get_money_system(url) reads the revenue stack a public site runs on. Both submit nothing, charge nothing and store nothing. get_latest_findings and list_checks read an account history and need an API key. Pass a key as a bearer token or the api_key argument to lift the free daily limit.

Tools

4 advertised

run_revenue_check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Runs a read-only, from-outside revenue-path teardown of a public website and returns a dollar-proof report. Free and needs no key. It loads the site as a visitor, follows the money path (landing, call to action, lead form, checkout reachability, analytics presence), and reports where revenue is at risk. Each finding carries a confidence label: confirmed means it was reproduced from outside, likely means it was inferred from the public page, and unverifiable from outside means only a connected check can confirm it. Dollar figures are a conservative monthly floor and attach only to confirmed or likely findings. It never submits a form and never completes a charge.

run_revenue_check input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2048,
      "description": "A public website address, for example https://example.com."
    },
    "api_key": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional. A Smoke Run API key. It lifts the free daily limit and is not required for a single check."
    }
  },
  "additionalProperties": false
}
run_revenue_check output schema
{
  "type": "object",
  "properties": {
    "proof": {
      "type": "object",
      "properties": {
        "window": {
          "type": "string"
        },
        "siteUrl": {
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "severity",
              "whatBroke",
              "where",
              "evidence"
            ],
            "properties": {
              "fix": {
                "type": "string",
                "description": "What to change."
              },
              "where": {
                "type": "string",
                "description": "Where on the money path it was seen."
              },
              "evidence": {
                "type": "string",
                "description": "Redacted, owner-readable evidence."
              },
              "severity": {
                "enum": [
                  "critical",
                  "warning",
                  "ok"
                ],
                "type": "string"
              },
              "whatBroke": {
                "type": "string",
                "description": "Plain-English statement of what is wrong."
              },
              "confidence": {
                "enum": [
                  "confirmed",
                  "likely",
                  "unverifiable_from_outside"
                ],
                "type": "string",
                "description": "confirmed: reproduced from outside. likely: inferred from the public page. unverifiable_from_outside: only a connected check can confirm it; carries no dollar figure."
              },
              "estMonthlyLoss": {
                "type": "number",
                "description": "Conservative monthly dollar floor. Present only on confirmed or likely findings."
              }
            },
            "additionalProperties": true
          }
        },
        "headline": {
          "type": "string"
        },
        "generatedAt": {
          "type": "string"
        },
        "dollarsAtRisk": {
          "type": "number"
        }
      },
      "description": "Keyed callers only. The dollar proof: siteUrl, headline, dollarsAtRisk, window, findings, generatedAt.",
      "additionalProperties": true
    },
    "runId": {
      "type": "string",
      "description": "Keyed callers only. The stored check id, readable later with get_latest_findings, list_checks or GET /api/v1/checks/{id}."
    },
    "status": {
      "enum": [
        "complete",
        "inconclusive"
      ],
      "type": "string",
      "description": "inconclusive means the scan could not finish; it carries no findings, no dollar figure and says nothing about whether the money path works."
    },
    "window": {
      "type": "string",
      "description": "The period the dollar figure covers, for example \"per month\"."
    },
    "siteUrl": {
      "type": "string"
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "severity",
          "whatBroke",
          "where",
          "evidence"
        ],
        "properties": {
          "fix": {
            "type": "string",
            "description": "What to change."
          },
          "where": {
            "type": "string",
            "description": "Where on the money path it was seen."
          },
          "evidence": {
            "type": "string",
            "description": "Redacted, owner-readable evidence."
          },
          "severity": {
            "enum": [
              "critical",
              "warning",
              "ok"
            ],
            "type": "string"
          },
          "whatBroke": {
            "type": "string",
            "description": "Plain-English statement of what is wrong."
          },
          "confidence": {
            "enum": [
              "confirmed",
              "likely",
              "unverifiable_from_outside"
            ],
            "type": "string",
            "description": "confirmed: reproduced from outside. likely: inferred from the public page. unverifiable_from_outside: only a connected check can confirm it; carries no dollar figure."
          },
          "estMonthlyLoss": {
            "type": "number",
            "description": "Conservative monthly dollar floor. Present only on confirmed or likely findings."
          }
        },
        "additionalProperties": true
      }
    },
    "headline": {
      "type": "string"
    },
    "generatedAt": {
      "type": "string",
      "description": "ISO 8601 timestamp."
    },
    "moneySystem": {
      "type": "object",
      "required": [
        "payment",
        "crm",
        "email",
        "booking",
        "analytics",
        "hasForm",
        "https",
        "tracking"
      ],
      "properties": {
        "crm": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "email": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "https": {
          "type": "boolean"
        },
        "booking": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "hasForm": {
          "type": "boolean"
        },
        "payment": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tracking": {
          "enum": [
            "client_pixel_seen",
            "likely_server_side",
            "none_detected"
          ],
          "type": "string"
        },
        "analytics": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true
    },
    "findingCount": {
      "type": "integer",
      "description": "Total findings, which can exceed the number returned in findings."
    },
    "dollarsAtRisk": {
      "type": "number",
      "description": "Conservative monthly floor, summed from confirmed and likely findings only."
    },
    "confidenceNote": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
run_revenue_check annotations
{
  "title": "Run a revenue check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_latest_findings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the most recent revenue-path check for a given site, including its dollar-proof findings. Reads an account history, so it needs a Smoke Run API key. Returns an empty result when no check has been run for that site yet.

get_latest_findings input schema
{
  "type": "object",
  "required": [
    "siteUrl"
  ],
  "properties": {
    "siteUrl": {
      "type": "string",
      "maxLength": 2048,
      "description": "A public website address, for example https://example.com."
    }
  },
  "additionalProperties": false
}
get_latest_findings output schema
{
  "type": "object",
  "required": [
    "found",
    "proof"
  ],
  "properties": {
    "found": {
      "type": "boolean",
      "description": "False when no check has been run for that site yet."
    },
    "proof": {
      "type": [
        "object",
        "null"
      ],
      "description": "The dollar proof of the latest check, or null when found is false."
    },
    "runId": {
      "type": "string"
    },
    "siteUrl": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
get_latest_findings annotations
{
  "title": "Get latest findings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_money_system
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Detects the revenue stack a public site runs on (payment processor, CRM or lead destination, email provider, booking tool, analytics and ad pixels) from its public page, and returns the funnel map. Free and needs no key. Each node notes what a connected check can verify end to end.

get_money_system input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2048,
      "description": "A public website address, for example https://example.com."
    },
    "api_key": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional. A Smoke Run API key. It lifts the free daily limit and is not required for a single check."
    }
  },
  "additionalProperties": false
}
get_money_system output schema
{
  "type": "object",
  "required": [
    "siteUrl",
    "detected",
    "map"
  ],
  "properties": {
    "map": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "kind",
          "title",
          "detected",
          "detail",
          "paidProof"
        ],
        "properties": {
          "kind": {
            "enum": [
              "form",
              "payment",
              "crm",
              "email",
              "booking",
              "analytics"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "detected": {
            "type": "boolean"
          },
          "paidProof": {
            "type": "string",
            "description": "What a connected check can verify end to end for this node."
          }
        },
        "additionalProperties": true
      }
    },
    "siteUrl": {
      "type": "string"
    },
    "detected": {
      "type": "boolean",
      "description": "False when nothing could be read from the page; the map is then empty, not an error."
    }
  },
  "additionalProperties": true
}
get_money_system annotations
{
  "title": "Get money system",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_checks
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists recent revenue-path checks for the authenticated account, newest first. An optional siteUrl narrows the list to one site.

list_checks input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "Optional. Max rows."
    },
    "siteUrl": {
      "type": "string",
      "maxLength": 2048,
      "description": "Optional. Narrow the list to one site."
    }
  },
  "additionalProperties": false
}
list_checks output schema
{
  "type": "object",
  "required": [
    "checks"
  ],
  "properties": {
    "checks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "runId",
          "siteUrl",
          "status",
          "dollarsAtRisk",
          "mode",
          "startedAt",
          "finishedAt"
        ],
        "properties": {
          "mode": {
            "enum": [
              "monitor",
              "teardown"
            ],
            "type": "string"
          },
          "runId": {
            "type": "string"
          },
          "status": {
            "enum": [
              "healthy",
              "at_risk",
              "broken",
              "inconclusive"
            ],
            "type": "string"
          },
          "siteUrl": {
            "type": "string"
          },
          "startedAt": {
            "type": "string"
          },
          "finishedAt": {
            "type": "string"
          },
          "dollarsAtRisk": {
            "type": "number"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}
list_checks annotations
{
  "title": "List checks",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
471 ms
95th percentile latency
471 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 471 ms · metadata changed · 4 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http smoke-run-mcp https://getsmokerun.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add smoke-run-mcp --url https://getsmokerun.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable smoke-run-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "smoke-run-mcp": {
      "url": "https://getsmokerun.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "smoke-run-mcp": {
      "type": "streamableHttp",
      "url": "https://getsmokerun.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start smoke-run-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "smoke-run-mcp": {
      "type": "http",
      "url": "https://getsmokerun.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http smoke-run-mcp https://getsmokerun.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://getsmokerun.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "smoke-run-mcp": {
      "serverUrl": "https://getsmokerun.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Smoke Run MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Smoke Run MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing