Frenchie
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"frenchie-skill": {
"url": "https://mcp.getfrenchie.dev"
}
}
}Remote-Endpunkte
https://mcp.getfrenchie.devstreamable-httpWas es kann
Tool-Inventar
Tools (7)
⚪ocr_to_markdown(file_path, uploaded_file_reference, api_key)
Convert PDF/image files into Markdown through Frenchie
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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#"
}Ausgabe-Schema
{
"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#"
}Community
Nachweis