YangOpen MCP
This MCP server provides AI assistants with access to Yangopen's media and document tools, including text-to-speech, background removal, image colorization, sharpening, expansion, document scanning, Word to PDF conversion, and Vietnamese font conversion. It requires a Yangopen account for OAuth authentication and operates with a free daily allowance or prepaid credits.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://yangopen.com/mcpWhat you can do with it
- Convert text to speech using free or Plus voices
- Remove backgrounds from product photos
- Convert Word files or photos to PDF
- Convert old Vietnamese fonts (TCVN3, VNI) to Unicode
Source and maintenance
Protocol and capabilities
- Server
- yangopen 1.4.0
- MCP protocol
- 2025-06-18
- Tools
- 13 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
13 advertised
list_voices — List or search the voices
The YangOpen voices. tier "free" (default): sixteen free voices — two Vietnamese (Southern accent), American and British English, Mandarin, Japanese, Korean, Thai, French and Spanish. tier "plus": the paid voices, about 2,600 — 182 Vietnamese (Northern, Central and Southern), English, Spanish, Mandarin, French, Japanese and Korean; search them by language, gender and words in the name or style. Returns the id to pass to text_to_speech (free) or text_to_speech_plus (plus).
{
"type": "object",
"properties": {
"tier": {
"enum": [
"free",
"plus"
],
"type": "string",
"default": "free",
"description": "free (default) or plus."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "How many to return, up to 50."
},
"query": {
"type": "string",
"description": "Optional words to match in the name or style, e.g. \"Bắc\", \"tin tức\", \"Hoài My\"."
},
"gender": {
"enum": [
"female",
"male"
],
"type": "string",
"description": "Optional."
},
"language": {
"type": "string",
"description": "Optional language: vi, en, en-US, en-GB, zh, ja, ko, th, fr or es."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"voices",
"total"
],
"properties": {
"total": {
"type": "integer"
},
"voices": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"language",
"gender",
"description",
"tier"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"tier": {
"type": "string"
},
"gender": {
"type": "string"
},
"language": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}text_to_speech — Read text aloud as an MP3 (free voices)
Turn text into speech with a free YangOpen voice and get a link to the MP3. It costs no credit; it counts against the user's free daily allowance. Up to 3,000 characters per call: split longer text at sentence ends and call once per part. The link works for 24 hours; give it to the user exactly as returned. The text is sent to an outside speech service to be read; it is not stored.
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 3000,
"minLength": 1,
"description": "The text to read, up to 3,000 characters."
},
"speed": {
"type": "number",
"default": 1,
"maximum": 2,
"minimum": 0.5,
"description": "Reading speed from 0.5 to 2.0. Default 1.0."
},
"voice": {
"type": "string",
"default": "yo-baotram",
"description": "A free voice id from list_voices. Default yo-baotram (Vietnamese, female)."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"voice",
"characters",
"duration_seconds"
],
"properties": {
"url": {
"type": "string"
},
"voice": {
"type": "string"
},
"characters": {
"type": "integer"
},
"expires_at": {
"type": "string"
},
"duration_seconds": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}text_to_speech_plus — Read text aloud as an MP3 (Plus voices, uses credit)
Turn text into speech with a Plus voice and get a link to the MP3. Spends the user's prepaid YangOpen credit: 25 credits per 1,000 characters, rounded up to whole credits. The charge is made only when the MP3 is ready, and the answer states what was charged and the balance left. Up to 1,000 characters per call for Vietnamese voices and 400 for the other languages; split longer text at sentence ends. Before a long job, tell the user the cost (characters ÷ 1,000 × 25 credits) and check get_balance. The link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"required": [
"text",
"voice"
],
"properties": {
"text": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "The text to read, up to 1,000 characters."
},
"speed": {
"type": "number",
"default": 1,
"maximum": 2,
"minimum": 0.5,
"description": "Reading speed from 0.5 to 2.0. Default 1.0."
},
"voice": {
"type": "string",
"description": "A Plus voice id from list_voices with tier \"plus\", e.g. yo-vn0001."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"voice",
"characters",
"duration_seconds",
"credits_charged",
"balance_credits"
],
"properties": {
"url": {
"type": "string"
},
"voice": {
"type": "string"
},
"characters": {
"type": "integer"
},
"expires_at": {
"type": "string"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
},
"duration_seconds": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}get_balance — Credit balance
The user's YangOpen credit balance, what it buys (Plus voice characters, paid image runs), the prices, and where to top up. Changes nothing.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"balance_credits",
"plus_characters",
"credits_per_1000_characters",
"top_up_url"
],
"properties": {
"image_runs": {
"type": "integer"
},
"top_up_url": {
"type": "string"
},
"balance_credits": {
"type": "integer"
},
"plus_characters": {
"type": "integer"
},
"credits_per_image_run": {
"type": "integer"
},
"credits_per_1000_characters": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}get_upload_link — Get a link to upload a photo or a Word file
A one-time page where the user uploads a file for the tools that need one: a photo (JPEG, PNG or WebP) for the image tools and scan_document, or a Word file (.docx or .doc) for word_to_pdf, up to 25 MB. It gives the file_id to pass to them. You cannot hand over a file from this chat yourself: give the user the link, ask them to open it and choose the file, and continue when they say it is done. In a client that can run shell commands (Claude Code), upload a local file yourself with the upload_command. The link works for 1 hour; the file is kept for 24 hours. Free.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"upload_url",
"file_id",
"expires_at",
"upload_command"
],
"properties": {
"file_id": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"upload_url": {
"type": "string"
},
"upload_command": {
"type": "string"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}remove_background — Remove a photo's background
Cut the main subject out of a photo and get a PNG with a transparent background. 5 free runs a day for each image tool, then 25 credits a run, charged only when the result is ready. Give the photo as file_id (the user uploads it through get_upload_link) or image_url. The result link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"description": "The file_id from get_upload_link, once the user has uploaded the photo there."
},
"image_url": {
"type": "string",
"description": "Or a public https link to a JPEG, PNG or WebP photo. A result link from another YangOpen image tool works too."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"content_type",
"bytes",
"credits_charged",
"free_run"
],
"properties": {
"url": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"free_run": {
"type": "boolean"
},
"expires_at": {
"type": "string"
},
"content_type": {
"type": "string"
},
"free_runs_left": {
"type": "integer"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}colorize_photo — Colorize a black-and-white photo
Colour a black-and-white or toned (sepia) photo, with faces restored. A photo that already has colour comes back as it was and costs nothing. 5 free runs a day for each image tool, then 25 credits a run, charged only when the result is ready. Give the photo as file_id (the user uploads it through get_upload_link) or image_url. The result link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"description": "The file_id from get_upload_link, once the user has uploaded the photo there."
},
"image_url": {
"type": "string",
"description": "Or a public https link to a JPEG, PNG or WebP photo. A result link from another YangOpen image tool works too."
},
"restore_faces": {
"type": "boolean",
"default": true,
"description": "Restore the faces as well. Default true."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"content_type",
"bytes",
"credits_charged",
"free_run"
],
"properties": {
"url": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"free_run": {
"type": "boolean"
},
"expires_at": {
"type": "string"
},
"content_type": {
"type": "string"
},
"free_runs_left": {
"type": "integer"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}sharpen_image — Sharpen and enlarge a photo
Make a blurry, small or old photo sharp and larger (AI upscaling). It can also restore faces, and clean scratches and dust from an old print. 5 free runs a day for each image tool, then 25 credits a run, charged only when the result is ready. Give the photo as file_id (the user uploads it through get_upload_link) or image_url. The result link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"properties": {
"detail": {
"type": "number",
"default": 70,
"maximum": 100,
"minimum": 0,
"description": "How much fine texture to keep, 0 to 100: higher keeps more detail, lower removes more noise. Default 70."
},
"file_id": {
"type": "string",
"description": "The file_id from get_upload_link, once the user has uploaded the photo there."
},
"image_url": {
"type": "string",
"description": "Or a public https link to a JPEG, PNG or WebP photo. A result link from another YangOpen image tool works too."
},
"enhance_faces": {
"type": "boolean",
"default": false,
"description": "Restore faces too. Default false."
},
"restore_old_photo": {
"type": "boolean",
"default": false,
"description": "Clean scratches, dust and peeling from an old print. Default false."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"content_type",
"bytes",
"credits_charged",
"free_run"
],
"properties": {
"url": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"free_run": {
"type": "boolean"
},
"expires_at": {
"type": "string"
},
"content_type": {
"type": "string"
},
"free_runs_left": {
"type": "integer"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}expand_image — Expand a photo past its edges
Extend a photo with AI-painted surroundings: to a new shape such as 16:9 (a cover), 9:16 (a phone story) or 1:1, or by a share of its size on the sides you choose. It never crops: the original pixels stay as they were. Can take up to a minute. 5 free runs a day for each image tool, then 25 credits a run, charged only when the result is ready. Give the photo as file_id (the user uploads it through get_upload_link) or image_url. The result link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"properties": {
"top": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Height to add at the top, as a share of the photo's height."
},
"left": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Width to add on the left, as a share of the photo's width (0.5 adds half)."
},
"right": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Width to add on the right, as a share of the photo's width."
},
"bottom": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Height to add at the bottom, as a share of the photo's height."
},
"file_id": {
"type": "string",
"description": "The file_id from get_upload_link, once the user has uploaded the photo there."
},
"image_url": {
"type": "string",
"description": "Or a public https link to a JPEG, PNG or WebP photo. A result link from another YangOpen image tool works too."
},
"aspect_ratio": {
"type": "string",
"description": "The shape to reach, like 16:9, 9:16, 4:5 or 1:1. Give this, or the sides."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"content_type",
"bytes",
"credits_charged",
"free_run"
],
"properties": {
"url": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"free_run": {
"type": "boolean"
},
"expires_at": {
"type": "string"
},
"content_type": {
"type": "string"
},
"free_runs_left": {
"type": "integer"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}scan_document — Scan a photo of a page
Turn a phone photo of a page (a document, a receipt, a page of a book) into a flat, straight scan: the page is found, cut out of the background and unbent, and comes back as a JPEG. 5 free runs a day for each image tool, then 25 credits a run, charged only when the result is ready. Give the photo as file_id (the user uploads it through get_upload_link) or image_url. The result link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"description": "The file_id from get_upload_link, once the user has uploaded the photo there."
},
"image_url": {
"type": "string",
"description": "Or a public https link to a JPEG, PNG or WebP photo. A result link from another YangOpen image tool works too."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"content_type",
"bytes",
"credits_charged",
"free_run"
],
"properties": {
"url": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"free_run": {
"type": "boolean"
},
"expires_at": {
"type": "string"
},
"content_type": {
"type": "string"
},
"free_runs_left": {
"type": "integer"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}word_to_pdf — Convert a Word file to PDF
Turn a Word document (.docx or .doc, up to 25 MB) into a PDF with the layout Word gave it, on YangOpen's server. A few hundred pages take under half a minute; a much longer document may not finish. 5 free files a day, then 25 credits a file, charged only when the PDF is ready. Give the file as file_id (the user uploads it through get_upload_link) or file_url. The PDF link works for 24 hours; give it to the user exactly as returned.
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"description": "The file_id from get_upload_link, once the user has uploaded the Word file there."
},
"file_url": {
"type": "string",
"description": "Or a public https link to a .docx or .doc file."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url",
"expires_at",
"content_type",
"bytes",
"credits_charged",
"free_run"
],
"properties": {
"url": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"free_run": {
"type": "boolean"
},
"expires_at": {
"type": "string"
},
"content_type": {
"type": "string"
},
"free_runs_left": {
"type": "integer"
},
"balance_credits": {
"type": "integer"
},
"credits_charged": {
"type": "integer"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}convert_vietnamese_font — Fix Vietnamese text typed in the old fonts (TCVN3, VNI)
Turn Vietnamese text typed in the old fonts (TCVN3/ABC such as .VnTime, or VNI such as VNI-Times) into Unicode, so it reads right in any font: "Céng hßa x· héi chñ nghÜa" becomes "Cộng hòa xã hội chủ nghĩa". The old font is guessed from the text unless you name it. Up to 5,000 characters a call. Free. For a whole Word or Excel file, send the user to https://yangopen.com/vi/tools/font-to-unicode/.
{
"type": "object",
"required": [
"text"
],
"properties": {
"font": {
"enum": [
"auto",
"tcvn3",
"tcvn3-upper",
"vni"
],
"type": "string",
"default": "auto",
"description": "The old font's table: tcvn3 (.VnTime and the other .Vn fonts), tcvn3-upper (.VnTimeH and the other fonts ending in H, all capitals), vni (VNI-Times and the other VNI fonts), or auto (guess). Default auto."
},
"text": {
"type": "string",
"description": "The text as it looks now, copied from the document."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"text",
"font",
"letters_changed"
],
"properties": {
"font": {
"type": "string"
},
"text": {
"type": "string"
},
"letters_changed": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}convert_time — Convert a time between time zones
What a time in one place is in other places, with daylight saving applied for that date. Name zones the IANA way (Asia/Ho_Chi_Minh, America/New_York, Europe/London, Australia/Sydney) or UTC. Free.
{
"type": "object",
"required": [
"from_zone",
"to_zones"
],
"properties": {
"date": {
"type": "string",
"description": "The date in from_zone, like 2026-11-05. Default: today in from_zone."
},
"time": {
"type": "string",
"description": "The time on a 24-hour clock, like 09:30 or 21:00. Default: now."
},
"to_zones": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"description": "The zones to show it in, like [\"America/New_York\", \"Europe/London\"]."
},
"from_zone": {
"type": "string",
"description": "The zone the time is in, like Asia/Ho_Chi_Minh."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"utc",
"from",
"times"
],
"properties": {
"utc": {
"type": "string"
},
"from": {
"type": "object"
},
"times": {
"type": "array",
"items": {
"type": "object"
}
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 331 ms
- 95th percentile latency
- 331 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 331 ms · metadata changed · 13 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http yangopen-mcp https://yangopen.com/mcpCodex
codex mcp add yangopen-mcp --url https://yangopen.com/mcpCursor
{
"mcpServers": {
"yangopen-mcp": {
"url": "https://yangopen.com/mcp"
}
}
}Cline
{
"mcpServers": {
"yangopen-mcp": {
"type": "streamableHttp",
"url": "https://yangopen.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"yangopen-mcp": {
"type": "http",
"url": "https://yangopen.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http yangopen-mcp https://yangopen.com/mcpClaude Desktop
{
"mcpServers": {
"yangopen-mcp": {
"url": "https://yangopen.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"yangopen-mcp": {
"serverUrl": "https://yangopen.com/mcp"
}
}
}Let your agent find its tools
Find servers like YangOpen MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run YangOpen MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.