Speakeroo speaking coach
AI speaking coach: feedback on speeches from text or audio, plus topics, pronunciation and rubrics.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"speaking-coach": {
"url": "https://mcp.speakeroo.app/mcp"
}
}
}リモートエンドポイント
https://mcp.speakeroo.app/mcpstreamable-httpできること
ツール一覧
ツール(7)
🟢analyze_transcript(transcript, context, topic)
Coach a speech from its text. Returns weak and filler words with firmer alternatives, rhetorical devices, delivery and rhetoric feedback, grammar/vocabulary/coherence scores (1-10) on the Speakeroo rubric, and word-level issues with the excerpt and a fix. Input: 30-1500 words. Text cannot show pace, pauses, pitch or pronunciation; use analyze_speech with a recording for those. Free, 5 text analyses a day per network, shared with refine_transcript.
入力スキーマ
{
"type": "object",
"properties": {
"transcript": {
"type": "string",
"maxLength": 20000,
"description": "What was said, as plain text: 30-1500 words. Paste a speech transcript or a draft you plan to say out loud."
},
"context": {
"description": "What the speech is for, so the feedback is calibrated to it. Defaults to general.",
"type": "string",
"enum": [
"general",
"impromptu",
"presentation",
"speech",
"interview",
"ielts",
"conversation"
]
},
"topic": {
"description": "The question or prompt being answered, e.g. an IELTS cue card or interview question",
"type": "string",
"maxLength": 500
}
},
"required": [
"transcript"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"callToAction": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"text",
"url"
],
"additionalProperties": false
},
"coaching": {
"anyOf": [
{
"type": "object",
"properties": {
"deliveryMoments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"excerpt": {
"type": "string"
},
"label": {
"type": "string"
},
"sentiment": {
"type": "string",
"enum": [
"strength",
"improvement"
]
},
"type": {
"type": "string",
"enum": [
"emphasis",
"effective_pause",
"missed_pause",
"rush",
"slow_deliberate",
"flat_spot",
"vocal_contrast",
"energy_build",
"warmth",
"tension"
]
}
},
"required": [
"description",
"excerpt",
"label",
"sentiment",
"type"
],
"additionalProperties": false
}
},
"feedback": {
"type": "object",
"properties": {
"delivery": {
"type": "string"
},
"rhetoric": {
"type": "string"
},
"weakWords": {
"type": "string"
}
},
"required": [
"delivery",
"rhetoric",
"weakWords"
],
"additionalProperties": false
},
"rhetoricalDevices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"device": {
"type": "string",
"enum": [
"rhetorical_question",
"anaphora",
"epistrophe",
"epizeuxis",
"triad",
"antithesis",
"climax",
"metaphor",
"simile",
"hyperbole",
"personification",
"alliteration"
]
},
"effect": {
"type": "string"
},
"excerpt": {
"type": "string"
}
},
"required": [
"device",
"effect",
"excerpt"
],
"additionalProperties": false
}
},
"weakWords": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"hedging",
"minimizer",
"permission_seeking",
"apologetic",
"excessive_qualifier"
]
},
"count": {
"type": "number",
"description": "How many times it was said"
},
"suggestion": {
"type": "string",
"description": "A firmer way to say it; empty means drop the word"
},
"text": {
"type": "string"
}
},
"required": [
"category",
"count",
"suggestion",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"deliveryMoments",
"feedback",
"rhetoricalDevices",
"weakWords"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Weak and filler words, rhetorical devices and delivery/rhetoric feedback"
},
"context": {
"type": "string"
},
"issues": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"excerpt": {
"type": "string"
},
"explanation": {
"type": "string"
},
"fix": {
"type": "string",
"description": "The corrected wording; empty when the fix is to drop it"
},
"type": {
"type": "string"
}
},
"required": [
"excerpt",
"explanation",
"fix",
"type"
],
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Word-level grammar, vocabulary and filler issues with the excerpt and a fix"
},
"language": {
"anyOf": [
{
"type": "object",
"properties": {
"areas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"area": {
"type": "string",
"enum": [
"pacing",
"coherence",
"vocabulary",
"grammar",
"pronunciation",
"engagement",
"accuracy"
]
},
"description": {
"type": "string"
},
"examples": {
"type": "array",
"items": {
"type": "object",
"properties": {
"analysis": {
"type": "string"
},
"quote": {
"type": "string"
}
},
"required": [
"analysis",
"quote"
],
"additionalProperties": false
}
},
"recommendation": {
"type": "string"
},
"score": {
"type": "number",
"description": "1-10"
},
"strands": {
"type": "array",
"items": {
"type": "object",
"properties": {
"evidence": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
}
},
"required": [
"evidence",
"name",
"score"
],
"additionalProperties": false
}
}
},
"required": [
"area",
"description",
"examples",
"recommendation",
"score",
"strands"
],
"additionalProperties": false
}
},
"summary": {
"type": "object",
"properties": {
"improvements": {
"type": "array",
"items": {
"type": "string"
}
},
"strengths": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"improvements",
"strengths"
],
"additionalProperties": false
}
},
"required": [
"areas",
"summary"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Grammar, vocabulary and coherence scores on the Speakeroo rubric"
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Parts that could not be produced this time; the rest of the result stands"
},
"wordCount": {
"type": "number"
}
},
"required": [
"callToAction",
"coaching",
"issues",
"language",
"unavailable",
"wordCount"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢refine_transcript(transcript, context, topic)
Rewrite a speech into a clear structure (PREP, STAR, problem-solution, rule of three and others) chosen to fit it. Returns the rewritten sections, the structure with a 1-10 score for how well the original already followed it, a summary of what changed and one delivery tip. Input: 30-1500 words. Shares the daily text allowance with analyze_transcript.
入力スキーマ
{
"type": "object",
"properties": {
"transcript": {
"type": "string",
"maxLength": 20000,
"description": "What was said, as plain text: 30-1500 words. Paste a speech transcript or a draft you plan to say out loud."
},
"context": {
"description": "What the speech is for, so the feedback is calibrated to it. Defaults to general.",
"type": "string",
"enum": [
"general",
"impromptu",
"presentation",
"speech",
"interview",
"ielts",
"conversation"
]
},
"topic": {
"description": "The question or prompt being answered, e.g. an IELTS cue card or interview question",
"type": "string",
"maxLength": 500
}
},
"required": [
"transcript"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"callToAction": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"text",
"url"
],
"additionalProperties": false
},
"refinedVersion": {
"type": "object",
"properties": {
"changesSummary": {
"type": "string"
},
"coachingTip": {
"type": "string"
},
"originalWordCount": {
"type": "number"
},
"refinedWordCount": {
"type": "number"
},
"sections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"label",
"text"
],
"additionalProperties": false
}
},
"structure": {
"type": "string",
"enum": [
"prep",
"star",
"problem_solution",
"past_present_future",
"story_arc",
"rule_of_three",
"compare_contrast",
"cause_effect",
"what_so_what_now_what",
"local_to_global"
]
},
"structureName": {
"type": "string"
},
"structureScore": {
"type": "number",
"description": "How well the original already followed it, 1-10"
}
},
"required": [
"changesSummary",
"coachingTip",
"originalWordCount",
"refinedWordCount",
"sections",
"structure",
"structureName",
"structureScore"
],
"additionalProperties": false
},
"wordCount": {
"type": "number"
}
},
"required": [
"callToAction",
"refinedVersion",
"wordCount"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢analyze_speech(audioBase64, audioUrl, mimeType, context, topic)
Analyze a spoken recording: it is transcribed, then returns everything analyze_transcript does plus delivery metrics only audio can give: words per minute, pace, pauses per minute, filler rate, pitch (median and range) and vocal expression, and pacing, pronunciation and engagement scores. Limits: up to 120 seconds and 10 MB; mp3, m4a/mp4, wav, webm, ogg or flac; at least 30 spoken words. Pass audioUrl (public https) or audioBase64. Free: 1 analysis a day per network; a try that fails on our side does not count, up to 3 tries a day. Audio is deleted once the response is sent.
入力スキーマ
{
"type": "object",
"properties": {
"audioBase64": {
"description": "The recording as base64 (a data: URL prefix is fine). Use this or audioUrl.",
"type": "string"
},
"audioUrl": {
"description": "A public https link to the recording. Use this or audioBase64.",
"type": "string"
},
"mimeType": {
"description": "The audio type when it cannot be sniffed from the bytes, e.g. audio/mpeg",
"type": "string"
},
"context": {
"description": "What the speech is for, so the feedback is calibrated to it. Defaults to general.",
"type": "string",
"enum": [
"general",
"impromptu",
"presentation",
"speech",
"interview",
"ielts",
"conversation"
]
},
"topic": {
"description": "The question or prompt being answered, e.g. an IELTS cue card or interview question",
"type": "string",
"maxLength": 500
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"callToAction": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"text",
"url"
],
"additionalProperties": false
},
"coaching": {
"anyOf": [
{
"type": "object",
"properties": {
"deliveryMoments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"excerpt": {
"type": "string"
},
"label": {
"type": "string"
},
"sentiment": {
"type": "string",
"enum": [
"strength",
"improvement"
]
},
"type": {
"type": "string",
"enum": [
"emphasis",
"effective_pause",
"missed_pause",
"rush",
"slow_deliberate",
"flat_spot",
"vocal_contrast",
"energy_build",
"warmth",
"tension"
]
}
},
"required": [
"description",
"excerpt",
"label",
"sentiment",
"type"
],
"additionalProperties": false
}
},
"feedback": {
"type": "object",
"properties": {
"delivery": {
"type": "string"
},
"rhetoric": {
"type": "string"
},
"weakWords": {
"type": "string"
}
},
"required": [
"delivery",
"rhetoric",
"weakWords"
],
"additionalProperties": false
},
"rhetoricalDevices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"device": {
"type": "string",
"enum": [
"rhetorical_question",
"anaphora",
"epistrophe",
"epizeuxis",
"triad",
"antithesis",
"climax",
"metaphor",
"simile",
"hyperbole",
"personification",
"alliteration"
]
},
"effect": {
"type": "string"
},
"excerpt": {
"type": "string"
}
},
"required": [
"device",
"effect",
"excerpt"
],
"additionalProperties": false
}
},
"weakWords": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"hedging",
"minimizer",
"permission_seeking",
"apologetic",
"excessive_qualifier"
]
},
"count": {
"type": "number",
"description": "How many times it was said"
},
"suggestion": {
"type": "string",
"description": "A firmer way to say it; empty means drop the word"
},
"text": {
"type": "string"
}
},
"required": [
"category",
"count",
"suggestion",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"deliveryMoments",
"feedback",
"rhetoricalDevices",
"weakWords"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Weak and filler words, rhetorical devices and delivery/rhetoric feedback"
},
"context": {
"type": "string"
},
"issues": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"excerpt": {
"type": "string"
},
"explanation": {
"type": "string"
},
"fix": {
"type": "string",
"description": "The corrected wording; empty when the fix is to drop it"
},
"type": {
"type": "string"
}
},
"required": [
"excerpt",
"explanation",
"fix",
"type"
],
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Word-level grammar, vocabulary and filler issues with the excerpt and a fix"
},
"language": {
"anyOf": [
{
"type": "object",
"properties": {
"areas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"area": {
"type": "string",
"enum": [
"pacing",
"coherence",
"vocabulary",
"grammar",
"pronunciation",
"engagement",
"accuracy"
]
},
"description": {
"type": "string"
},
"examples": {
"type": "array",
"items": {
"type": "object",
"properties": {
"analysis": {
"type": "string"
},
"quote": {
"type": "string"
}
},
"required": [
"analysis",
"quote"
],
"additionalProperties": false
}
},
"recommendation": {
"type": "string"
},
"score": {
"type": "number",
"description": "1-10"
},
"strands": {
"type": "array",
"items": {
"type": "object",
"properties": {
"evidence": {
"type": "string"
},
"name": {
"type": "string"
},
"score": {
"type": "number"
}
},
"required": [
"evidence",
"name",
"score"
],
"additionalProperties": false
}
}
},
"required": [
"area",
"description",
"examples",
"recommendation",
"score",
"strands"
],
"additionalProperties": false
}
},
"summary": {
"type": "object",
"properties": {
"improvements": {
"type": "array",
"items": {
"type": "string"
}
},
"strengths": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"improvements",
"strengths"
],
"additionalProperties": false
}
},
"required": [
"areas",
"summary"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Every rubric area including pacing, pronunciation and engagement, which need the audio"
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Parts that could not be produced this time; the rest of the result stands"
},
"wordCount": {
"type": "number"
},
"delivery": {
"type": "object",
"properties": {
"durationSeconds": {
"type": "number"
},
"fillerWordsPerMinute": {
"type": "number"
},
"pace": {
"type": "string",
"enum": [
"slow",
"steady",
"fast",
"very_fast"
]
},
"paceVariabilityWpm": {
"type": "number",
"description": "How far the pace swings around its average"
},
"pausesPerMinute": {
"type": "number",
"description": "Silences of a second or more"
},
"pitch": {
"anyOf": [
{
"type": "object",
"properties": {
"medianHz": {
"type": "number"
},
"rangeSemitones": {
"type": "number",
"description": "Spread between the 10th and 90th percentile pitch"
}
},
"required": [
"medianHz",
"rangeSemitones"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"vocabularyDiversity": {
"type": "number",
"description": "Distinct-word share, 0-100"
},
"vocalExpression": {
"anyOf": [
{
"type": "object",
"properties": {
"level": {
"type": "string",
"enum": [
"monotone",
"flat",
"conversational",
"expressive",
"dynamic"
]
},
"note": {
"type": "string"
}
},
"required": [
"level",
"note"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"wordsPerMinute": {
"type": "object",
"properties": {
"average": {
"type": "number"
},
"median": {
"type": "number"
}
},
"required": [
"average",
"median"
],
"additionalProperties": false
}
},
"required": [
"durationSeconds",
"pace",
"paceVariabilityWpm",
"pausesPerMinute",
"pitch",
"vocabularyDiversity",
"vocalExpression",
"wordsPerMinute"
],
"additionalProperties": false
},
"transcript": {
"type": "string"
}
},
"required": [
"callToAction",
"coaching",
"issues",
"language",
"unavailable",
"wordCount",
"delivery",
"transcript"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_speech_topics(category, count)
Random speech topics to practise with: impromptu, persuasive, informative, presentation, IELTS Speaking Part 1 questions or Part 2 cue cards. Each result links to the full list on speakeroo.app, where every topic opens a timed practice session.
入力スキーマ
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"impromptu",
"persuasive",
"informative",
"presentation",
"ielts_part_1",
"ielts_part_2"
]
},
"count": {
"description": "How many topics, default 10",
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"required": [
"category"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"impromptu",
"persuasive",
"informative",
"presentation",
"ielts_part_1",
"ielts_part_2"
]
},
"link": {
"type": "string",
"description": "A page on speakeroo.app with the full list and practice"
},
"title": {
"type": "string"
},
"topics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"prompts": {
"type": "array",
"items": {
"type": "string"
}
},
"section": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"prompts",
"section",
"topic"
],
"additionalProperties": false
}
}
},
"required": [
"category",
"link",
"title",
"topics"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢how_to_pronounce(word)
How to pronounce an English word Speakeroo has a guide for: IPA, a plain respelling, syllables with the stressed one, sound tips, a note on the usual mistake and two example sentences. Links to the guide, where you can record yourself and get a pronunciation check.
入力スキーマ
{
"type": "object",
"properties": {
"word": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"word"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"ipa": {
"type": "string"
},
"link": {
"type": "string",
"description": "A page on speakeroo.app with the full list and practice"
},
"note": {
"type": "string"
},
"respelling": {
"type": "string"
},
"sentences": {
"type": "array",
"items": {
"type": "string"
}
},
"similarWords": {
"type": "array",
"items": {
"type": "string"
}
},
"stressedSyllable": {
"description": "1-based",
"type": "number"
},
"syllables": {
"type": "array",
"items": {
"type": "string"
}
},
"tips": {
"type": "array",
"items": {
"type": "object",
"properties": {
"body": {
"type": "string"
},
"heading": {
"type": "string"
}
},
"required": [
"body",
"heading"
],
"additionalProperties": false
}
},
"word": {
"type": "string"
}
},
"required": [
"found",
"link",
"similarWords",
"word"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_speaking_rubric
A four-level speaking rubric teachers use for speaking homework: fluency, pronunciation, vocabulary range and task completion, with a descriptor for every level. Links to the page with a CSV download. analyze_transcript and analyze_speech score on Speakeroo's own 1-10 rubric.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"type": "array",
"items": {
"type": "object",
"properties": {
"levels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "string"
},
"level": {
"type": "number"
}
},
"required": [
"descriptor",
"level"
],
"additionalProperties": false
}
},
"name": {
"type": "string"
}
},
"required": [
"levels",
"name"
],
"additionalProperties": false
}
},
"link": {
"type": "string",
"description": "A page on speakeroo.app with the full list and practice"
},
"name": {
"type": "string"
}
},
"required": [
"criteria",
"link",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢list_filler_words
The common filler words in spoken English grouped by what they do, and the steps to stop using them. Links to the guide on speakeroo.app, which has a free filler word tracker.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string"
},
"words": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"role",
"words"
],
"additionalProperties": false
}
},
"howToStop": {
"type": "array",
"items": {
"type": "object",
"properties": {
"body": {
"type": "string"
},
"step": {
"type": "string"
}
},
"required": [
"body",
"step"
],
"additionalProperties": false
}
},
"link": {
"type": "string",
"description": "A page on speakeroo.app with the full list and practice"
}
},
"required": [
"groups",
"howToStop",
"link"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}コミュニティ
エビデンス