Koskamo

Patchwell MCP

Patchwell provides an MCP server offering three AI agent tools: transcription with word-level timestamps and speaker labels, data cleaning for messy spreadsheets with a detailed change log, and web research with cited sources and confidence scores. It supports prepaid usage-based pricing.

Endpoint and access

OAuth sign-in: the first time you connect, your client opens the vendor's own authorization prompt in a browser.

Patchwell MCP logo, by PatchwellVendor evidenceStreamable HTTPOAuth sign-inEndpoint checked 2026-11-07Operated by Patchwell
You need:Get a free API key
MCP endpoint (Streamable HTTP)
https://patchwell.io/mcp/
Vendor documentation

What its tools do

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

Read-only (1)

Can change data (3)

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 patchwell.io ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Transcribe audio or video files to text with word timings
  • Clean and standardize messy CSV or Excel data exports
  • Research market topics with cited source links

Source and maintenance

Vendor evidenceRegistry 1.1.0
Maintenance checked

Protocol and capabilities

Server
Patchwell 1.30.0
MCP protocol negotiated in check
2025-11-25
Tools
4 advertised
Resources
Sign-in required
Resource templates
Sign-in required
Prompts
Sign-in required
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Tools

4 advertised

transcribe
Advertised by the server during the last successful anonymous check.
Open-world

Transcribe speech in an audio or video file. Use it when you need the words in a recording, quotes with their time, who said what, or subtitles. Returns text, sentence segments, each word with start/end seconds, confidence and speaker (`spk`: 1, 2, ... told apart by voice), `turns` (speaker, start, end, text), `speakers` with talk time, SRT and VTT with speaker labels, and `flags` listing any phrase the guards removed (Whisper's invented phrases over silence and repetition loops) with its original text and time. Files over about 100 seconds of processing return {"status": "running", "job_id"}: call get_job_result with it. Price: $0.008 per audio minute; failed downloads are free.

transcribe input schema
{
  "type": "object",
  "title": "transcribeArguments",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "title": "Url",
      "description": "Direct http(s) link to an audio or video file: mp3, wav, m4a, ogg, flac, mp4, mov, webm and most others. Up to 3 hours. YouTube page links don't work; pass the media file itself."
    },
    "language": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Language",
      "default": null,
      "description": "Two-letter language code such as en, es or ja. Leave it out to detect the language from the audio."
    }
  }
}
transcribe annotations
{
  "title": "Transcribe audio or video",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
research
Advertised by the server during the last successful anonymous check.
Open-world

Research a question on the live web and get an answer in which each sentence cites the page it came from. Use it for facts you can't answer from memory or that may have changed. Returns `answer` (sentences with [url] citations), `sources`, `gaps` (what the sources couldn't confirm) and `confidence` (high/medium/low). Takes about a minute; a slow question returns {"status": "running", "job_id"} for get_job_result. Declines questions about private individuals (addresses, contact details, relatives, profiles) and returns a `category` saying why. Price: $0.15 per answered question; declined and unanswered questions are free.

research input schema
{
  "type": "object",
  "title": "researchArguments",
  "required": [
    "question"
  ],
  "properties": {
    "context": {
      "type": "string",
      "title": "Context",
      "default": "",
      "description": "Optional background: who the answer is for, what you already know, or constraints such as country or date range."
    },
    "question": {
      "type": "string",
      "title": "Question",
      "description": "The question in plain language, up to 4,000 characters. Ask about topics, markets, products, prices, companies, regulations, places, events or published research."
    }
  }
}
research annotations
{
  "title": "Research a question with cited sources",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_job_result
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch the result of a long call that returned {"status": "running", "job_id"}. Call it every 20 to 30 seconds until status is 'done'; the finished result has the same shape as the original tool's. Free.

get_job_result input schema
{
  "type": "object",
  "title": "get_job_resultArguments",
  "required": [
    "job_id"
  ],
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id",
      "description": "The job_id from a transcribe, research or clean_data call that returned status 'running'."
    }
  }
}
get_job_result annotations
{
  "title": "Get a research result",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
clean_data
Advertised by the server during the last successful anonymous check.
Open-world

Clean a messy spreadsheet or JSON export into typed, deduplicated records with a log of each change. Use it before you analyse, import or act on tabular data. It works out each column's type from the values, normalises emails, phones, dates, money, names and states, repairs broken encodings, and merges duplicate records. Returns `rows`, `changes` (row, column, before, after, rule), `review` (rows held back, with the reason), `columns`, `clusters` (likely typos), a JSON `schema`, a reusable `recipe` and `stats`, whose counts always add up to the input rows. Price: $2 per 1,000 rows, minimum $0.02.

clean_data input schema
{
  "type": "object",
  "title": "clean_dataArguments",
  "properties": {
    "url": {
      "type": "string",
      "title": "Url",
      "default": "",
      "description": "Public http(s) link to a CSV, TSV, XLSX or JSON file, up to 100 MB. Use this or content_base64."
    },
    "hints": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Hints",
      "default": null,
      "description": "Force a column's type, e.g. {\"Joined\": \"date\"}. Types: email, phone, date, money, number, us_state, name, boolean, text."
    },
    "recipe": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Recipe",
      "default": null,
      "description": "The `recipe` from an earlier run. Pass it to clean a new file with the same column types and rules."
    },
    "filename": {
      "type": "string",
      "title": "Filename",
      "default": "",
      "description": "File name with extension (e.g. customers.csv). Required with content_base64 so the format is known."
    },
    "required": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Required",
      "default": null,
      "description": "Columns a row must have; rows missing one go to the review list."
    },
    "dedupe_on": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Dedupe On",
      "default": null,
      "description": "Columns that identify a record; rows matching on them merge into one. Default: the email column, else the whole row."
    },
    "phone_format": {
      "type": "string",
      "title": "Phone Format",
      "default": "national",
      "description": "'national' like (415) 555-0100, or 'e164' like +14155550100."
    },
    "phone_region": {
      "type": "string",
      "title": "Phone Region",
      "default": "US",
      "description": "Two-letter country for phone numbers written without a country code, e.g. US, GB, DE."
    },
    "content_base64": {
      "type": "string",
      "title": "Content Base64",
      "default": "",
      "description": "The file itself, base64-encoded, for small files you hold locally. Use this or url."
    }
  }
}
clean_data annotations
{
  "title": "Clean a CSV or Excel file",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Sign-in required

No prompt definitions available.

Resources

Sign-in required

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
4845 ms
95th percentile latency
4845 ms

Maintenance history

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

  • · probe · passed · 4845 ms · metadata changed · refuses unauthenticated resources/list (HTTP 401)

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 patchwell-mcp https://patchwell.io/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 patchwell-mcp --url https://patchwell.io/mcp/

Cursor

Merge this server into .cursor/mcp.json in your project, then enable patchwell-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "patchwell-mcp": {
      "url": "https://patchwell.io/mcp/"
    }
  }
}

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start patchwell-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "patchwell-mcp": {
      "type": "http",
      "url": "https://patchwell.io/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 patchwell-mcp https://patchwell.io/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://patchwell.io/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": {
    "patchwell-mcp": {
      "serverUrl": "https://patchwell.io/mcp/"
    }
  }
}

Let your agent find its tools

Find servers like Patchwell 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 Patchwell 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