Frenchie
OCR, transcription, file extraction, and image generation for AI agents via MCP.
¿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": {
"frenchie-skill": {
"url": "https://mcp.getfrenchie.dev"
}
}
}Puntos de conexión remotos
https://mcp.getfrenchie.devstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (7)
⚪ocr_to_markdown(file_path, uploaded_file_reference, api_key)
Convert PDF/image files into Markdown through Frenchie
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"minLength": 1,
"description": "Absolute local file path. Stdio transport only — over HTTP, upload via upload_file first and pass uploaded_file_reference instead."
},
"uploaded_file_reference": {
"type": "string",
"minLength": 1,
"description": "Object key returned by upload_file. Required for HTTP transport; ignored when file_path is provided in stdio."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"done",
"processing"
]
},
"jobId": {
"type": "string",
"minLength": 1
},
"creditsUsed": {
"type": "number",
"minimum": 0
},
"resultExpiresAt": {
"type": "string",
"format": "date-time"
},
"estimatedCompletion": {
"type": "string",
"format": "date-time"
},
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "markdown"
},
"markdown": {
"type": "string",
"description": "HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path from output root to the saved result.md"
},
"pages": {
"type": "integer",
"minimum": 0,
"description": "Number of pages processed — OCR only"
},
"wordCount": {
"type": "integer",
"minimum": 0,
"description": "Approximate word count of the markdown"
},
"imageCount": {
"type": "integer",
"minimum": 0,
"description": "Number of embedded images saved alongside result.md"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
]
},
"mimeType": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x1024",
"1024x1536",
"auto"
]
},
"background": {
"type": "string",
"enum": [
"transparent",
"opaque",
"auto"
]
},
"style": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "HTTP mode: presigned HTTPS link (~30 min expiry)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path to the persisted image file"
}
},
"required": [
"kind",
"format",
"mimeType"
],
"additionalProperties": false
}
]
}
},
"required": [
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡transcribe_to_markdown(file_path, uploaded_file_reference, api_key, language)
Convert audio/video files into Markdown transcripts through Frenchie. Set language (ISO 639-1 code, e.g. 'th', 'en', 'ja') for better accuracy; omit for auto-detection.
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"minLength": 1,
"description": "Absolute local file path. Stdio transport only — over HTTP, upload via upload_file first and pass uploaded_file_reference instead."
},
"uploaded_file_reference": {
"type": "string",
"minLength": 1,
"description": "Object key returned by upload_file. Required for HTTP transport; ignored when file_path is provided in stdio."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
},
"language": {
"type": "string",
"minLength": 2,
"maxLength": 10,
"description": "Optional ISO 639-1 language code (e.g. 'th', 'en', 'ja') for better accuracy; omit for auto-detection."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"done",
"processing"
]
},
"jobId": {
"type": "string",
"minLength": 1
},
"creditsUsed": {
"type": "number",
"minimum": 0
},
"resultExpiresAt": {
"type": "string",
"format": "date-time"
},
"estimatedCompletion": {
"type": "string",
"format": "date-time"
},
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "markdown"
},
"markdown": {
"type": "string",
"description": "HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path from output root to the saved result.md"
},
"pages": {
"type": "integer",
"minimum": 0,
"description": "Number of pages processed — OCR only"
},
"wordCount": {
"type": "integer",
"minimum": 0,
"description": "Approximate word count of the markdown"
},
"imageCount": {
"type": "integer",
"minimum": 0,
"description": "Number of embedded images saved alongside result.md"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
]
},
"mimeType": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x1024",
"1024x1536",
"auto"
]
},
"background": {
"type": "string",
"enum": [
"transparent",
"opaque",
"auto"
]
},
"style": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "HTTP mode: presigned HTTPS link (~30 min expiry)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path to the persisted image file"
}
},
"required": [
"kind",
"format",
"mimeType"
],
"additionalProperties": false
}
]
}
},
"required": [
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢generate_image(prompt, style, size, quality, format, ...)
Generate a single image from a text prompt through Frenchie. Required: prompt. Optional: style (free-text style direction), size, quality, format, background. stdio mode auto-saves the image to .frenchie/<slug>/generated.<ext>; HTTP mode returns a presigned imageUrl that the agent should download for the user.
Esquema de entrada
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 3500,
"description": "Required. Plain-language description of the image to generate (e.g. 'poster of a ramen shop at night')."
},
"style": {
"type": "string",
"maxLength": 500,
"description": "Optional style direction (e.g. 'flat vector, neon palette'). Merged into the generation prompt by Frenchie."
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x1024",
"1024x1536",
"auto"
],
"description": "Optional output size. Defaults to automatic selection."
},
"quality": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"auto"
],
"description": "Optional output quality."
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
],
"description": "Optional output format. Defaults to png."
},
"background": {
"type": "string",
"enum": [
"transparent",
"opaque",
"auto"
],
"description": "Optional background. transparent is rejected when format is jpeg."
},
"output_dir": {
"type": "string",
"minLength": 1,
"description": "Stdio mode only: absolute directory under which .frenchie/<slug>/generated.<ext> is saved. Defaults to the MCP server's process cwd. Recommended: pass your workspace root so the image lands next to your work instead of $HOME."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
}
},
"required": [
"prompt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"done",
"processing"
]
},
"jobId": {
"type": "string",
"minLength": 1
},
"creditsUsed": {
"type": "number",
"minimum": 0
},
"resultExpiresAt": {
"type": "string",
"format": "date-time"
},
"estimatedCompletion": {
"type": "string",
"format": "date-time"
},
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "markdown"
},
"markdown": {
"type": "string",
"description": "HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path from output root to the saved result.md"
},
"pages": {
"type": "integer",
"minimum": 0,
"description": "Number of pages processed — OCR only"
},
"wordCount": {
"type": "integer",
"minimum": 0,
"description": "Approximate word count of the markdown"
},
"imageCount": {
"type": "integer",
"minimum": 0,
"description": "Number of embedded images saved alongside result.md"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
]
},
"mimeType": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x1024",
"1024x1536",
"auto"
]
},
"background": {
"type": "string",
"enum": [
"transparent",
"opaque",
"auto"
]
},
"style": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "HTTP mode: presigned HTTPS link (~30 min expiry)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path to the persisted image file"
}
},
"required": [
"kind",
"format",
"mimeType"
],
"additionalProperties": false
}
]
}
},
"required": [
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢extract_to_markdown(file_path, uploaded_file_reference, api_key)
Extract structured documents (.docx, .xlsx, .csv, .tsv, .pptx) into Markdown through Frenchie. stdio mode auto-saves the result to .frenchie/<name>/result.md; HTTP mode returns inline Markdown.
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"minLength": 1,
"description": "Absolute local file path. Stdio transport only — over HTTP, upload via upload_file first and pass uploaded_file_reference instead."
},
"uploaded_file_reference": {
"type": "string",
"minLength": 1,
"description": "Object key returned by upload_file. Required for HTTP transport; ignored when file_path is provided in stdio."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"done",
"processing"
]
},
"jobId": {
"type": "string",
"minLength": 1
},
"creditsUsed": {
"type": "number",
"minimum": 0
},
"resultExpiresAt": {
"type": "string",
"format": "date-time"
},
"estimatedCompletion": {
"type": "string",
"format": "date-time"
},
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "markdown"
},
"markdown": {
"type": "string",
"description": "HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path from output root to the saved result.md"
},
"pages": {
"type": "integer",
"minimum": 0,
"description": "Number of pages processed — OCR only"
},
"wordCount": {
"type": "integer",
"minimum": 0,
"description": "Approximate word count of the markdown"
},
"imageCount": {
"type": "integer",
"minimum": 0,
"description": "Number of embedded images saved alongside result.md"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
]
},
"mimeType": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x1024",
"1024x1536",
"auto"
]
},
"background": {
"type": "string",
"enum": [
"transparent",
"opaque",
"auto"
]
},
"style": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "HTTP mode: presigned HTTPS link (~30 min expiry)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path to the persisted image file"
}
},
"required": [
"kind",
"format",
"mimeType"
],
"additionalProperties": false
}
]
}
},
"required": [
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job_result(job_id, api_key)
Fetch the latest async Frenchie job result
Esquema de entrada
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "Job ID returned by ocr_to_markdown, transcribe_to_markdown, or generate_image when status was 'processing'."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
}
},
"required": [
"job_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"done",
"processing"
]
},
"jobId": {
"type": "string",
"minLength": 1
},
"creditsUsed": {
"type": "number",
"minimum": 0
},
"resultExpiresAt": {
"type": "string",
"format": "date-time"
},
"estimatedCompletion": {
"type": "string",
"format": "date-time"
},
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "markdown"
},
"markdown": {
"type": "string",
"description": "HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path from output root to the saved result.md"
},
"pages": {
"type": "integer",
"minimum": 0,
"description": "Number of pages processed — OCR only"
},
"wordCount": {
"type": "integer",
"minimum": 0,
"description": "Approximate word count of the markdown"
},
"imageCount": {
"type": "integer",
"minimum": 0,
"description": "Number of embedded images saved alongside result.md"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
]
},
"mimeType": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x1024",
"1024x1536",
"auto"
]
},
"background": {
"type": "string",
"enum": [
"transparent",
"opaque",
"auto"
]
},
"style": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "HTTP mode: presigned HTTPS link (~30 min expiry)"
},
"savedTo": {
"type": "string",
"description": "Stdio mode: relative path to the persisted image file"
}
},
"required": [
"kind",
"format",
"mimeType"
],
"additionalProperties": false
}
]
}
},
"required": [
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡upload_file(filename, file_size, mime_type, api_key)
Get a presigned upload URL for use with ocr_to_markdown, transcribe_to_markdown, or extract_to_markdown in HTTP mode. After calling this tool, PUT the file to upload_url (with the correct Content-Type header), then pass object_key as uploaded_file_reference to the processing tool.
Esquema de entrada
{
"type": "object",
"properties": {
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Original filename with extension (e.g. 'report.pdf')."
},
"file_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483648,
"description": "File size in bytes."
},
"mime_type": {
"type": "string",
"minLength": 1,
"description": "MIME type (e.g. 'application/pdf', 'audio/mpeg')."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
}
},
"required": [
"filename",
"file_size",
"mime_type"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"upload_url": {
"type": "string",
"format": "uri",
"description": "Presigned URL — PUT the file here with the correct Content-Type header"
},
"object_key": {
"type": "string",
"minLength": 1,
"description": "Pass this as uploaded_file_reference to ocr_to_markdown, transcribe_to_markdown, or extract_to_markdown"
},
"expires_in": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "URL expiry in seconds"
}
},
"required": [
"upload_url",
"object_key",
"expires_in"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢fetch_result_file(object_key, api_key)
Get a temporary download URL for a result file from OCR/transcription output. Use this to download images referenced as frenchie-result: in the result markdown.
Esquema de entrada
{
"type": "object",
"properties": {
"object_key": {
"type": "string",
"minLength": 1,
"description": "The object key parsed from a frenchie-result:<objectKey> reference in the result markdown."
},
"api_key": {
"type": "string",
"minLength": 1,
"description": "Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted."
}
},
"required": [
"object_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"download_url": {
"type": "string",
"description": "Temporary HTTPS download URL for the result file."
},
"filename": {
"type": "string",
"description": "Suggested filename derived from the original object key."
},
"expires_in": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "URL expiry in seconds (typically 900)."
}
},
"required": [
"download_url",
"filename",
"expires_in"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia