woodstitch-mcp
An MCP server for the Woodstitch API: paid human listeners judge your text-to-speech audio in blinded studies, and your agent gets a number back with a confidence interval.
Two tasks, and only two: pairwise preference (a listener hears two clips of the same text and picks one, forced choice) and human-vs-AI detection (one clip, human or AI, confidence 1–4). Not offered: MOS, CMOS, MUSHRA or any 1–5 scale.
Install
Get an API key at https://woodstitch.com/app/api-keys, then:
Claude Code
claude mcp add woodstitch -e WOODSTITCH_API_KEY=ws_live_... -- uvx woodstitch-mcp
Claude Desktop / Cursor / any MCP client (mcpServers entry):
{
"woodstitch": {
"command": "uvx",
"args": ["woodstitch-mcp"],
"env": {"WOODSTITCH_API_KEY": "ws_live_..."}
}
}
pipx run woodstitch-mcp or pip install woodstitch-mcp && woodstitch-mcp work too.
Requires Python 3.10+.
Tools
| Tool | What it does | Money |
|---|---|---|
woodstitch_templates |
What is measured and what is not (no key needed) | – |
woodstitch_pricing |
Rate card and worked examples (no key needed) | – |
woodstitch_account |
Balance and spend | – |
woodstitch_upload_files |
Upload local audio, get file ids | – |
woodstitch_create_eval |
Create and price a study; dry_run to price only |
charges nothing |
woodstitch_start_eval |
Start the study | spends money |
woodstitch_get_eval |
Progress and provisional score | – |
woodstitch_get_results |
Final numbers | – |
woodstitch_export |
Every judgement as rows (json or csv, optionally to a file) | – |
woodstitch_cancel_eval |
Stop early, pay only for work done | – |
woodstitch_list_evals, woodstitch_list_files, woodstitch_delete_file |
housekeeping | – |
Safeguards built in
woodstitch_start_evalrequiresuser_confirmed_amount_usd, the quoted total the user agreed to, and sends it to the API as the hard ceilingmax_total_usd. If the quote is higher than what the user confirmed, the API refuses (over_max) and nothing starts. An agent cannot start a study the user has not seen the price of.- Every POST carries an
Idempotency-Key, so a retried call never creates or starts a study twice. - The server's instructions tell the model that interim numbers are provisional and that stopping early on a threshold is optional stopping.
Typical session
woodstitch_upload_files(["a/001.wav", "b/001.wav", ...])or use public URLs.woodstitch_create_eval(pairs=[{"id":"001","a":"file_…","b":"file_…","passage":"001","system_a":"base","system_b":"candidate"}, …], ratings_per_pair=5)→ quote, nothing charged.- Show the user the total. On yes:
woodstitch_start_eval(eval_id, user_confirmed_amount_usd=<total>). woodstitch_get_eval(eval_id)now and then; first judgements usually land within minutes.woodstitch_get_results(eval_id)whenstatusiscompleted;woodstitch_exportfor the rows.
Method, listener pay and controls: https://woodstitch.com/research/methodology. Machine-readable API spec: https://woodstitch.com/openapi.json.
Development
uv venv && . .venv/bin/activate && uv pip install -e .
WOODSTITCH_API_KEY=ws_live_... woodstitch-mcp # stdio server
MIT © Woodstitch LLC
Metadata
Release files for woodstitch-mcp 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| woodstitch_mcp-0.1.2.tar.gz | 9.4 kB | Without provenance | Details for woodstitch_mcp-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| woodstitch_mcp-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for woodstitch_mcp-0.1.2-py3-none-any.whl |
Total release size: 18.3 kB
Release files / woodstitch_mcp-0.1.2.tar.gz
| Download URL | woodstitch_mcp-0.1.2.tar.gz |
|---|---|
| Size | 9.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
701ce7bdae7bcf9eef4de6a766fcc8763b572cfbef61cb3a4c693424bb0cf888
|
|
BLAKE2b-256 checksum How to use checksums |
3b8e39cba4d3471db43460ee87913a885a7ded953bc1c79c2a11d33ceb3417e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / woodstitch_mcp-0.1.2-py3-none-any.whl
| Download URL | woodstitch_mcp-0.1.2-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae4eb5c787e17dddcea9250a86d07b840f3efa8d3c4bf00f9a1e7b93a980b9e9
|
|
BLAKE2b-256 checksum How to use checksums |
9568cd3a18511640b056d7db056d613f327428c6af55a1606620b53c9d19f717
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for woodstitch-mcp 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.