Silvertongue
Famous writing voices for your agent. Find one, read how it was studied, write in it.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"silvertongue": {
"url": "https://mcp.silvertongue.dev/mcp"
}
}
}遠端端點
https://mcp.silvertongue.dev/mcpstreamable-http它能做什麼
工具清單
工具(4)
🟢search_voices(query, lane, limit)
Search Silvertongue's famous writing voices by name, by lane (tech, celebrity, comedy, characters, classics, politicians), or by what the writing should do: a roast, a launch post, a plain explanation, a speech. Each result gives the voice ID, its lane, what the voice does, what was studied, its strengths and limits, and its status. Omit the query to list every voice, featured voices first.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "A person's name, a lane, or what you want the writing to do. Omit to list every voice."
},
"lane": {
"type": "string",
"enum": [
"tech",
"celebrity",
"comedy",
"characters",
"classics",
"politicians"
],
"description": "Only voices in this lane."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Maximum results to return; defaults to 25."
}
},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"release_id": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$",
"description": "The Provenry release every voice in this answer was read from."
},
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"truncated": {
"type": "boolean"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"voice_id": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The voice's slug and edition digest, such as elon-musk@sha256:…; it pins one exact edition."
},
"slug": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}$"
},
"name": {
"type": "string",
"minLength": 1
},
"lane": {
"type": "string",
"enum": [
"tech",
"celebrity",
"comedy",
"characters",
"classics",
"politicians"
]
},
"featured": {
"type": "boolean",
"description": "One of the featured voices that open the site and the README."
},
"move": {
"type": "string",
"minLength": 1,
"description": "What the voice does, in one sentence."
},
"description": {
"type": "string",
"minLength": 20,
"maxLength": 220
},
"scope": {
"type": "string",
"minLength": 30,
"description": "The medium and period studied, and what the profile does not cover."
},
"studied": {
"type": "string",
"minLength": 1,
"description": "The sources studied, by kind, and the years they span."
},
"strengths": {
"minItems": 2,
"type": "array",
"items": {
"type": "string"
}
},
"limitations": {
"minItems": 2,
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"const": "unofficial",
"description": "unofficial: the person named did not write, review or endorse the profile."
},
"page_url": {
"type": "string",
"format": "uri"
},
"voice_md_url": {
"type": "string",
"format": "uri"
}
},
"required": [
"voice_id",
"slug",
"name",
"lane",
"featured",
"move",
"description",
"scope",
"studied",
"strengths",
"limitations",
"status",
"page_url",
"voice_md_url"
],
"additionalProperties": false
}
}
},
"required": [
"release_id",
"total",
"truncated",
"data"
],
"additionalProperties": false
}🟢get_voice(voice)
Get one voice's full profile: its VOICE.md, every source studied with a note on what it shows, the observations drawn from them, a handwritten example, the licence and the attribution line. Profiles are unofficial studies of public writing technique; the people named did not write or endorse them.
輸入結構描述
{
"type": "object",
"properties": {
"voice": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}(@sha256:[a-f0-9]{64})?$",
"description": "A voice slug such as elon-musk for the current edition, or an exact voice ID (slug@sha256:…) from search_voices."
}
},
"required": [
"voice"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"release_id": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$",
"description": "The Provenry release every voice in this answer was read from."
},
"data": {
"type": "object",
"properties": {
"voice_id": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The voice's slug and edition digest, such as elon-musk@sha256:…; it pins one exact edition."
},
"slug": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}$"
},
"name": {
"type": "string",
"minLength": 1
},
"lane": {
"type": "string",
"enum": [
"tech",
"celebrity",
"comedy",
"characters",
"classics",
"politicians"
]
},
"featured": {
"type": "boolean",
"description": "One of the featured voices that open the site and the README."
},
"move": {
"type": "string",
"minLength": 1,
"description": "What the voice does, in one sentence."
},
"description": {
"type": "string",
"minLength": 20,
"maxLength": 220
},
"scope": {
"type": "string",
"minLength": 30,
"description": "The medium and period studied, and what the profile does not cover."
},
"studied": {
"type": "string",
"minLength": 1,
"description": "The sources studied, by kind, and the years they span."
},
"strengths": {
"minItems": 2,
"type": "array",
"items": {
"type": "string"
}
},
"limitations": {
"minItems": 2,
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"const": "unofficial",
"description": "unofficial: the person named did not write, review or endorse the profile."
},
"page_url": {
"type": "string",
"format": "uri"
},
"voice_md_url": {
"type": "string",
"format": "uri"
},
"voice_md": {
"type": "string",
"minLength": 1,
"description": "The full VOICE.md: stance, construction, rhythm, detail, formats, restraint, and facts and identity."
},
"voice_md_digest": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$"
},
"sources": {
"minItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
},
"title": {
"type": "string",
"minLength": 1
},
"url": {
"type": "string",
"format": "uri"
},
"published": {
"type": "string",
"minLength": 4
},
"medium": {
"type": "string",
"enum": [
"essay",
"transcript",
"speech",
"letter",
"post",
"fiction",
"play",
"poem"
]
},
"note": {
"type": "string",
"minLength": 20
}
},
"required": [
"id",
"title",
"url",
"published",
"medium",
"note"
],
"additionalProperties": false
},
"description": "Every source studied, with a note on what it shows."
},
"observations": {
"minItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"trait": {
"type": "string",
"minLength": 10
},
"sourceIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"trait",
"sourceIds"
],
"additionalProperties": false
},
"description": "Traits drawn from the sources, each citing the source IDs it rests on."
},
"illustration": {
"type": "object",
"properties": {
"brief": {
"type": "string"
},
"format": {
"type": "string",
"enum": [
"post",
"reply",
"explanation",
"thread"
]
},
"text": {
"type": "string"
},
"kind": {
"type": "string",
"const": "editorial-illustration"
}
},
"required": [
"brief",
"format",
"text",
"kind"
],
"additionalProperties": false,
"description": "A handwritten editorial example of the technique on one brief; never the person's words and never model output."
},
"licence": {
"type": "string",
"const": "CC-BY-4.0"
},
"licence_url": {
"type": "string",
"const": "https://creativecommons.org/licenses/by/4.0/"
},
"attribution": {
"type": "string",
"minLength": 1,
"description": "The attribution line CC BY 4.0 asks for when reusing it."
},
"notice": {
"type": "string",
"minLength": 1,
"description": "What the profile is, and how writing made with it may be presented."
}
},
"required": [
"voice_id",
"slug",
"name",
"lane",
"featured",
"move",
"description",
"scope",
"studied",
"strengths",
"limitations",
"status",
"page_url",
"voice_md_url",
"voice_md",
"voice_md_digest",
"sources",
"observations",
"illustration",
"licence",
"licence_url",
"attribution",
"notice"
],
"additionalProperties": false
}
},
"required": [
"release_id",
"data"
],
"additionalProperties": false
}🟢get_voice_packet(voice, format, length, platform, intensity, ...)
Get the instructions for writing in one voice with your own model, for one format, length, platform, intensity and edge. The packet carries the full VOICE.md, an exact length target fitted to the platform's limit, and the rules that keep the user's own facts and identity. It opens with a line that replaces any earlier voice, so switching voices mid-conversation is one call.
輸入結構描述
{
"type": "object",
"properties": {
"voice": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}(@sha256:[a-f0-9]{64})?$",
"description": "A voice slug such as elon-musk for the current edition, or an exact voice ID (slug@sha256:…) from search_voices."
},
"format": {
"type": "string",
"enum": [
"post",
"reply",
"explanation",
"thread"
],
"description": "post (one standalone post), reply (answers the post being replied to), explanation (connected prose) or thread (several posts)."
},
"length": {
"default": "standard",
"description": "one-liner, short, standard or long; each maps to a measured range for the format.",
"type": "string",
"enum": [
"one-liner",
"short",
"standard",
"long"
]
},
"platform": {
"default": "generic",
"description": "Where the draft will be posted: fits its character limit and whether it takes markdown.",
"type": "string",
"enum": [
"x",
"threads",
"bluesky",
"linkedin",
"instagram",
"facebook",
"reddit",
"youtube",
"email",
"slack",
"discord",
"whatsapp",
"github",
"generic"
]
},
"intensity": {
"default": "full",
"description": "light lets the user's own phrasing show; full writes completely in the voice.",
"type": "string",
"enum": [
"light",
"full"
]
},
"edge": {
"default": "full",
"description": "clean removes swearing, sexual and drug references; full keeps the voice's edge, never slurs or racism.",
"type": "string",
"enum": [
"clean",
"full"
]
}
},
"required": [
"voice",
"format"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"release_id": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$",
"description": "The Provenry release every voice in this answer was read from."
},
"data": {
"type": "object",
"properties": {
"voice_id": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The voice's slug and edition digest, such as elon-musk@sha256:…; it pins one exact edition."
},
"name": {
"type": "string",
"minLength": 1
},
"format": {
"type": "string",
"enum": [
"post",
"reply",
"explanation",
"thread"
]
},
"length": {
"type": "string",
"enum": [
"one-liner",
"short",
"standard",
"long"
]
},
"platform": {
"type": "string",
"enum": [
"x",
"threads",
"bluesky",
"linkedin",
"instagram",
"facebook",
"reddit",
"youtube",
"email",
"slack",
"discord",
"whatsapp",
"github",
"generic"
]
},
"intensity": {
"type": "string",
"enum": [
"light",
"full"
]
},
"edge": {
"type": "string",
"enum": [
"clean",
"full"
]
},
"target": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"enum": [
"characters",
"words",
"posts"
]
},
"min": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"max": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"limit": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "The platform's character limit per post, if it has one."
}
},
"required": [
"unit",
"min",
"max",
"limit"
],
"additionalProperties": false,
"description": "The exact length the instructions ask for."
},
"instructions": {
"type": "string",
"minLength": 1,
"description": "Give these to your model with the user's brief, draft or the post they are replying to."
},
"notice": {
"type": "string",
"minLength": 1,
"description": "What the profile is, and how writing made with it may be presented."
}
},
"required": [
"voice_id",
"name",
"format",
"length",
"platform",
"intensity",
"edge",
"target",
"instructions",
"notice"
],
"additionalProperties": false
}
},
"required": [
"release_id",
"data"
],
"additionalProperties": false
}🟢get_changes(known)
Compare the voice IDs your agent has cached with the current release: voices added, voices re-studied as a new edition, and voices removed. Pass an empty list to receive every voice as added.
輸入結構描述
{
"type": "object",
"properties": {
"known": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The voice's slug and edition digest, such as elon-musk@sha256:…; it pins one exact edition."
},
"description": "The exact voice IDs your agent has cached."
}
},
"required": [
"known"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"release_id": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$",
"description": "The Provenry release every voice in this answer was read from."
},
"added": {
"type": "array",
"items": {
"type": "object",
"properties": {
"voice_id": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The voice's slug and edition digest, such as elon-musk@sha256:…; it pins one exact edition."
},
"name": {
"type": "string",
"minLength": 1
}
},
"required": [
"voice_id",
"name"
],
"additionalProperties": false
}
},
"restudied": {
"type": "array",
"items": {
"type": "object",
"properties": {
"voice_id": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The voice's slug and edition digest, such as elon-musk@sha256:…; it pins one exact edition."
},
"name": {
"type": "string",
"minLength": 1
},
"cached": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}@sha256:[a-f0-9]{64}$",
"description": "The edition you hold."
}
},
"required": [
"voice_id",
"name",
"cached"
],
"additionalProperties": false
}
},
"removed": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,60}$"
}
},
"unchanged": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"release_id",
"added",
"restudied",
"removed",
"unchanged"
],
"additionalProperties": false
}社群
證據