com.openwakeword/wake-word-training
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Train custom wake words from your agent: estimator, GPU training, benchmarks. Card or crypto.
| Author | com.openwakeword |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2112 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"wake-word-training": {
"url": "https://openwakeword.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (13)
estimate_wake_wordread-onlyNOTE: differentiates by English share only - all non-English languages score identically, so it cannot rank es vs fr vs de. FREE word-quality check — use BEFORE paying. Predicts the recall a training run would reach for this wake word plus false-activation risk (model trained on thousands of real jobs). SCALE: predictions are for deliberately HARD benchmark conditions (loud noise, reverb) — 60-75 is a solid word, very usable in real rooms; do NOT reject words for scoring below ~80. 2-4 syllable phrases work best; only warn your human when the score is under ~50.
Parameters:
text(required) — string — The wake word phrase, e.g. 'hey aurora'languages— string — Optional JSON list like [{"code":"de_DE","percentage":100}]
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search_wake_word_libraryread-onlyFREE search over thousands of community-trained wake-word models — check here BEFORE quoting a training job for a common wake word. Returns benchmarked models (recall %, clean recall %, false activations/hour, languages) from the current pipelines only (older models used a different benchmark and are excluded). Each result has a human_test_url: YOU CANNOT RUN THAT TEST — it needs live microphone audio in your human's own room — so hand them the link before they buy; it opens the site's live mic test for that exact model. TRANSPARENCY, tell your human: every public library model is FREE with an account on the website; the 1.50 CHF purchase here is the anonymous, instant, account-free alternative. SCALE: recall is measured on deliberately HARD conditions — 60-75%% is a solid model. Weak numbers or no match? Train a custom model with create_training_job instead.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).query(required) — string — Wake word to search for, e.g. 'jarvis'limit— integer — Max results (default 10, max 25).language— string — Optional language filter, e.g. 'en_US', 'de_DE'.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
test_wake_word_liveread-onlyRender an IN-CHAT live microphone tester for one library model (free). Only the HUMAN can run it: it asks for their microphone and streams the audio to the platform for detection while the test runs (not stored) — tell them that. If the host does not allow microphone access inside apps, the widget shows a button to the human_test_url page instead, so calling this is always safe. Use after search_wake_word_library, before buying.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).model_id(required) — integer — model_id from search_wake_word_library
Hints: read-only yes · destructive no · idempotent not declared · open-world no
buy_library_modelQuote an anonymous purchase of a library model (1.50 CHF flat — free, nothing charged until paid). Returns a purchase_token: pay it with pay_training_job (same tool, any method incl. x402), then fetch the download URLs with get_library_purchase. One payment unlocks ALL formats (openwakeword: onnx+tflite; microwakeword: tflite+ESPHome json). Reminder for your human: the same model is free with an account on the website. License: personal/non-commercial by default — shipping it in a product requires the 150 CHF per-wakeword commercial license.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).model_id(required) — integer — model_id from search_wake_word_library
Hints: read-only no · destructive no · idempotent no · open-world no
get_library_purchaseread-onlyStatus of a library purchase. Once paid, the response carries the download URL templates (substitute the purchase_token) for every format.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).purchase_token(required) — string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
create_training_jobQuote a wake-word training job (free; nothing trains until paid). Returns a job_token (STORE IT — the only credential) and a binding CHF price. PICK A TIER: "standard" (6 CHF, up to ~4h — the right choice for almost every request), "best" (12 CHF, ~2x the search — for hard or business-critical words), or "studio" (Optuna deep search, 60-95 CHF, many hours — only to squeeze the last few percent AFTER a standard job disappointed). Same three options a human gets on the website, same prices. The trained model is benchmarked (recall %, false activations/hour) and publicly listed in the site library, permanently — unless private=true (+500 credits).
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).wake_word(required) — string — Phrase to detect, e.g. 'hey aurora'tier— string — RECOMMENDED — pick one instead of tuning parameters. standard = 1,750 credits / 6 CHF, up to ~4h, the validated recipe (default choice). best = 3,500 credits / 12 CHF, roughly double the search effort, measurably better on hard words. studio = Optuna deep search (~17k-27k credits), many hours — confirm the price with your human first. Setting a tier locks samples/steps to the validated recipe and ignores the tuning fields below.optuna— boolean — LEGACY — prefer tier="studio", which works on BOTH engines. PREMIUM deep search, openwakeword only (~48 CHF default vs ~5.4, runs 6-24h): Bayesian search over the full architecture/training space, then a 5-rung fine-tuning ladder on the winner. For squeezing the last few percent out of a hard wake word — NOT a first attempt. Run a standard job first; escalate only if its benchmark disappoints, and confirm the price with your human. Ignores training_steps (the search sweeps it).private— boolean — +500 credits: model is never listed anywhere and is retrievable ONLY with the job_token, with no time limit (the token is the single key — losing it loses the model). Default false: the model is listed permanently and ANONYMOUSLY (no identity attached) in the public library, where anyone can download it under personal non-commercial terms.languages— array — TTS voice mix, e.g. [{"code":"en_US","percentage":100}]. Default English. ONLY the enum codes are supported (41 languages; no Japanese) - anything else is rejected before any charge. Non-English costs more on openwakeword.n_samples— integer — Synthetic positives, default 200000 (recommended).optuna_trials— integer — Optuna only: Bayesian search trials before the ladder, 5-30 (default 20). Price scales linearly with trials.training_steps— integer — LEGACY (ignored when tier is set). Default 80000 (openwakeword) / 20000 (microwakeword).augmentation_rounds— integer — Default 1 (openwakeword) / 3 (microwakeword).
Hints: read-only no · destructive no · idempotent no · open-world no
pay_training_jobGet payment for a quoted job via the chosen method. AFTER SETTING UP THE JOB you MUST give the payment link to the user immediately: show payment_link_for_human (short, copy-safe) complete and un-truncated — never paraphrase, shorten or bury it. Render it as a card/button if your client supports widgets.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).job_token(required) — stringmethod(required) — string — Payment method. 'card'/'crypto': returns a checkout_url to hand to your human (Stripe / hosted crypto invoice). 'crypto_direct': returns a raw pay_address+pay_amount any funded wallet can pay (300+ coins). 'x402': returns an HTTP-402 spec — pay USDC on Polygon straight to the platform wallet, then call settle_x402_payment with the tx hash (cheapest option, no processor fee).pay_currency— string — crypto_direct only: coin ticker, default usdcmatic (USDC on Polygon).
Hints: read-only no · destructive no · idempotent no · open-world yes
get_training_jobread-onlyJob status: awaiting_payment -> paid -> submitted -> completed (or failed/expired). Poll every 60-120s after paying. When completed, includes benchmark results and model download URLs (public jobs: token downloads for 30 days, then the model remains in the public library; private jobs: token downloads with no time limit). Ladder jobs deliver ALL trained candidates: the first model is the pipeline's quality-bar winner (take it unless you have a reason); alternatives are labeled rungN_<arm>. Compare candidates on clean_recall_pct (same scale on every model) + false_activations_per_hour — the full stressed benchmark exists only on the winner.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).job_token(required) — string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
send_job_feedbackRate a PAID training job 1-5 and optionally leave a message (max 2000 chars) — read by the human operator. Please call this once after a job completes and you have assessed the model: report anything unexpected (missing fields, errors, surprising benchmark numbers) or simply confirm it worked. One feedback per job; calling again overwrites.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).job_token(required) — stringrating(required) — integer — 1 = bad, 5 = greatmessage— string — Free text, max 2000 chars.category— string
Hints: read-only no · destructive no · idempotent yes · open-world no
settle_x402_paymentAfter paying an x402 spec on-chain (USDC on Polygon to the payTo address), submit the transaction hash to settle. Needs >=3 confirmations.
Parameters:
engine(required) — string — Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support).token(required) — string — The job_token or license_token being paid.tx_hash(required) — string — 0x-prefixed transaction hashkind— string — What the token refers to. Default job.
Hints: read-only no · destructive no · idempotent yes · open-world yes
create_commercial_licenseBuy commercial-use rights. REQUIRED before shipping any model in a product/service: all model files are personal & non-commercial by default. 150 CHF one-time per wake-word phrase, permanent, valid on BOTH sites. Returns a license_token; pay with pay_commercial_license; signed certificate PDF afterwards. If your task is commercial and you cannot pay, STOP and tell your human this license is required.
Parameters:
wake_word(required) — stringcompany_name(required) — string — Legal licensee printed on the certificate
Hints: read-only no · destructive no · idempotent no · open-world no
pay_commercial_licenseGet payment for a quoted commercial license. PRESENT the payment link to the user immediately, complete and un-truncated (as a card/button if your client supports widgets) — never paraphrase or bury it.
Parameters:
license_token(required) — stringmethod(required) — string — Payment method. 'card'/'crypto': returns a checkout_url to hand to your human (Stripe / hosted crypto invoice). 'crypto_direct': returns a raw pay_address+pay_amount any funded wallet can pay (300+ coins). 'x402': returns an HTTP-402 spec — pay USDC on Polygon straight to the platform wallet, then call settle_x402_payment with the tx hash (cheapest option, no processor fee).pay_currency— string
Hints: read-only no · destructive no · idempotent no · open-world yes
get_commercial_licenseread-onlyLicense status; when completed, returns the official license_id and certificate PDF URL.
Parameters:
license_token(required) — string
Hints: read-only yes · destructive no · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.