Patchwell
Cited web research, transcription with word timestamps, and CSV/Excel cleaning with a change log.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"patchwell": {
"url": "https://patchwell.io/mcp/"
}
}
}Remote endpoints
https://patchwell.io/mcp/streamable-httphttps://patchwell.io/connect/streamable-httpWhat it can do
Tool inventory
Tools (4)
🟢transcribe(url, language)
Transcribe speech in an audio or video file. Use it when you need the words in a recording, quotes with their time, or subtitles. Returns text, sentence segments, each word with start/end seconds and confidence, SRT and VTT, 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.
Input Schema
{
"type": "object",
"properties": {
"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.",
"title": "Url",
"type": "string"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Two-letter language code such as en, es or ja. Leave it out to detect the language from the audio.",
"title": "Language"
}
},
"required": [
"url"
],
"title": "transcribeArguments"
}🟢research(question, context)
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.
Input Schema
{
"type": "object",
"properties": {
"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.",
"title": "Question",
"type": "string"
},
"context": {
"default": "",
"description": "Optional background: who the answer is for, what you already know, or constraints such as country or date range.",
"title": "Context",
"type": "string"
}
},
"required": [
"question"
],
"title": "researchArguments"
}🟢get_job_result(job_id)
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.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"description": "The job_id from a transcribe, research or clean_data call that returned status 'running'.",
"title": "Job Id",
"type": "string"
}
},
"required": [
"job_id"
],
"title": "get_job_resultArguments"
}🟡clean_data(url, filename, content_base64, dedupe_on, required, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"url": {
"default": "",
"description": "Public http(s) link to a CSV, TSV, XLSX or JSON file, up to 100 MB. Use this or content_base64.",
"title": "Url",
"type": "string"
},
"filename": {
"default": "",
"description": "File name with extension (e.g. customers.csv). Required with content_base64 so the format is known.",
"title": "Filename",
"type": "string"
},
"content_base64": {
"default": "",
"description": "The file itself, base64-encoded, for small files you hold locally. Use this or url.",
"title": "Content Base64",
"type": "string"
},
"dedupe_on": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Columns that identify a record; rows matching on them merge into one. Default: the email column, else the whole row.",
"title": "Dedupe On"
},
"required": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Columns a row must have; rows missing one go to the review list.",
"title": "Required"
},
"hints": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Force a column's type, e.g. {\"Joined\": \"date\"}. Types: email, phone, date, money, number, us_state, name, boolean, text.",
"title": "Hints"
},
"recipe": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "The `recipe` from an earlier run. Pass it to clean a new file with the same column types and rules.",
"title": "Recipe"
},
"phone_region": {
"default": "US",
"description": "Two-letter country for phone numbers written without a country code, e.g. US, GB, DE.",
"title": "Phone Region",
"type": "string"
},
"phone_format": {
"default": "national",
"description": "'national' like (415) 555-0100, or 'e164' like +14155550100.",
"title": "Phone Format",
"type": "string"
}
},
"title": "clean_dataArguments"
}Community
Evidence