Speakeroo speaking coach
AI speaking coach: feedback on speeches from text or audio, plus topics, pronunciation and rubrics.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"speaking-coach": {
"url": "https://mcp.speakeroo.app/mcp"
}
}
}Puntos de conexión remotos
https://mcp.speakeroo.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"word": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"word"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"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
}Comunidad
Evidencia