VoiceBrief MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VoiceBrief MCPWhat's Apple's revenue?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VoiceBrief MCP
A self-hosted Model Context Protocol server that answers spoken stock-fact questions — "what's Apple's revenue", "tell me about Tesla's financials" — grounded in the company's actual SEC 10-K filing, not a guess from a language model's training data.
Built for a voice agent, not a screen: every answer is a single natural
sentence with units spelled out in full. No markdown, no tables, no $391B —
a text-to-speech engine has no reliable way to pronounce an abbreviated unit
letter, so this server never emits one.
> "What's Apple's revenue?"
< "AAPL's revenue, from its most recent SEC filing, is $416 billion."
> "Tell me about Tesla's financials."
< "Based on TSLA's most recent SEC filing, it reported revenue of $97.7
billion, earnings per share of $2.01, a market cap of $1.0 trillion,
and a book value per share of $19.32."Why this exists
Voice assistants answering finance questions today either hallucinate a
number or read out a screen-shaped string a TTS engine mangles ("three
ninety one point zero B"). This server closes both gaps: it pulls figures
straight from SEC EDGAR's public XBRL API —
free, no key, no auth — and formats them the way a person would actually say
them out loud (lib/spokenNumbers.js).
It runs as a normal MCP stdio server, which means it works with any MCP client, not just one voice platform — Claude Desktop, an Alexa+ skill's agent runtime, Cursor, or anything else that speaks the protocol.
Related MCP server: SEC EDGAR MCP Server
Run it
No account, no API key, no cloud dependency beyond sec.gov and a free
quote endpoint.
git clone https://github.com/mjaack/voicebrief-mcp.git
cd voicebrief-mcp
node src/server.jsPoint any MCP client at it over stdio. For Claude Desktop
(claude_desktop_config.json):
{
"mcpServers": {
"voicebrief": {
"command": "node",
"args": ["/absolute/path/to/voicebrief-mcp/src/server.js"]
}
}
}Tools
Tool | Use for |
| One specific figure: |
| A short spoken overview of the company's key figures. |
Both accept a company name or ticker ("Apple" or "AAPL") and resolve it
against SEC EDGAR's own ticker list — no hardcoded company map to fall out of
date.
Protocol conformance
Implements MCP spec revision 2025-11-25:
Version negotiation — echoes back an older version a client pins (
2025-06-18,2025-03-26) rather than forcing the latest.SEP-1303 — a bad argument (missing company, invalid metric) comes back as a normal tool result with
isError: true, so the calling model can read what went wrong and self-correct, instead of a JSON-RPC protocol error it can only fail on.JSON Schema 2020-12 — every
inputSchemadeclares the$schemadialect explicitly.
test/protocol.test.js spawns the server as a real subprocess and drives the
actual stdio handshake — initialize, tools/list, tools/call — the same
way a real MCP client does, rather than unit-testing the handler functions in
isolation.
Test
npm test12 tests: pure-formatting unit tests for the spoken-number logic
(test/voiceStockBrief.test.js, no network) plus the end-to-end protocol
suite above, including one live call to SEC EDGAR to confirm the whole path
returns a real, current figure.
License
MIT.
Available Tools
2 toolsget_stock_metricARead-only
Answer one financial metric for a US public company, spoken as a single natural-language sentence grounded in that company's most recent SEC 10-K filing (via EDGAR's XBRL data) -- not a guess. Use for a specific spoken question like "what's Tesla's revenue" or "what's Apple's earnings per share". Metric must be one of: revenue, eps, book_value_per_share, market_cap, total_assets, total_liabilities, price.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | Which figure to report. | |
| company | Yes | Company name or ticker, e.g. "Apple" or "AAPL". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, and the description aligns with these. Beyond that, the description adds critical behavioral context: it is grounded in SEC filings (not a guess), spoken as a natural-language sentence, and restricts to US public companies. This is valuable transparency that goes beyond the structured annotations, especially the non-guessing and source grounding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose with a specific verb and resource, then gives usage context and examples. Every sentence earns its place, and it is compact without omission. The metric list is repeated from the schema, but it's essential for clarity and doesn't bloat the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with two well-schema'd parameters (100% coverage) and no output schema, the description is complete: it specifies source (SEC filings), scope (US public companies), allowed metrics, output format (single spoken sentence), and grounding requirement (not a guess). The sibling is known but not needed for this tool's description. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter (metric and company). The description adds extra meaning by clarifying that the metric must be one of the enums and that company can be a name or ticker, which is already in the schema but restated. The description also explains the output as a spoken sentence, which is beyond schema. Given high coverage, a 4 is warranted, not 3, because the description enhances the semantics with the natural-language output constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool answers one financial metric for a US public company, cites the regulatory source (SEC 10-K via EDGAR XBRL), and lists the specific allowed metrics. This distinguishes it from siblings by emphasizing a single metric and spoken natural-language output. The verb-resource pairing is specific: 'Answer one financial metric'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use for specific spoken questions and gives examples, but it doesn't explicitly contrast with the sibling tool get_stock_snapshot. The presence of a sibling suggests a possible alternative, but the description doesn't mention when to use the sibling instead. Still, the usage context is clear enough for an agent to select it for single-metric queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_snapshotARead-only
Give a short spoken financial snapshot of a US public company (revenue, earnings per share, market cap, book value per share) grounded in its most recent SEC 10-K filing. Use for a broad spoken question like "tell me about Apple's financials" rather than one specific figure.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | Company name or ticker, e.g. "Apple" or "AAPL". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: the output is a short spoken snapshot, grounded specifically in a 10-K filing, and includes a defined set of metrics. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the primary purpose and metric list front-loaded and the usage guidance in the second sentence. Every sentence earns its place and the description is appropriately short for a simple one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains what the tool returns: a short spoken financial snapshot with the named metrics grounded in the most recent 10-K. Given the low complexity, rich annotations, and single well-documented parameter, nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single company parameter is well documented with examples. The description adds meaning beyond the schema by constraining the company to a US public company with an SEC 10-K filing, which is not present in the schema. This helps the agent choose valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('give a short spoken financial snapshot'), a specific resource (US public company), and specific metrics (revenue, EPS, market cap, book value per share), grounding it in the most recent SEC 10-K filing. It also distinguishes itself from sibling get_stock_metric by targeting broad questions rather than a single figure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case ('Use for a broad spoken question like "tell me about Apple's financials"') and an explicit negative case ('rather than one specific figure'). It does not directly name the sibling alternative, but the contrast with get_stock_metric is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
get_stock_metric - First observed
get_stock_snapshot
TDQS
Scored across 2 tools
get_stock_metric targets a single, specified metric while get_stock_snapshot returns a fixed multi-metric overview, so their primary intents are distinct. There is slight overlap because the snapshot includes several metrics that could also be requested individually, but the descriptions clearly separate specific from broad questions.
Both tools follow the same get_stock_<noun> pattern with clear, parallel names. There is no style mixing or vague verbing between the two.
Two tools is below the typical 3-15 well-scoped range and the server feels minimal, though its narrow voice-brief purpose limits the need for many tools. Each tool earns its place, but the set remains borderline thin.
All advertised metrics are directly queryable via get_stock_metric, and get_stock_snapshot covers the common broad summary. Custom multi-metric requests require repeated calls, but there are no dead ends for the stated domain.
Maintenance
Related MCP Connectors
SEC-grounded stock facts phrased as single spoken sentences for a voice assistant to read.
21SEC & financial-data MCP: filings, financials, ownership, factors, fund letters, prompts.
Paid bilingual MCP tools for evidence-linked SEC filing risk and finance-author track records.
75 MCP tools: SEC financials, FRED economics, IRS 990, FDA, FX, UK Companies House.
Related MCP Servers
- FlicenseBqualityCmaintenanceEnables SEC EDGAR financial research, analysis, valuation, and chart data generation through natural language.24-
- FlicenseAqualityBmaintenanceEnables AI clients to retrieve SEC company profiles, filing listings, and structured XBRL financial statements via MCP tools.13-
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables natural-language queries over SEC EDGAR filings and live market data, providing hybrid retrieval with reranking for company snapshots, quotes, fundamentals, and macro indicators.MIT
- AlicenseAqualityBmaintenanceMCP server that lets an LLM read official SEC financial data, tracing every number back to a specific SEC filing, US-GAAP tag, and filing date.4MIT