이 MCP로 할 수 있는 일
Renders templated invoices, certificates, reports, cards, and other documents into PDF, PNG, or JPG outputs.
도구
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['email'], 'properties': {'name': {'type': 'string', 'description': 'Account name. Defaults to the local part of the email.'}, 'email': {'type': 'string', 'examples': ['dev@example.com'], 'description': 'Where to send the verification link. Use the address of the person who owns this project — not a made-up one; the key is only released after the link is clicked. If this address already has a Galley account, no second one is made: a one-time link code is mailed to it instead, and `link_account` takes that code.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'source'], 'properties': {'name': {'type': 'string', 'pattern': '^[a-z0-9][a-z0-9._-]{0,62}$', 'examples': ['invoice', 'delivery-note'], 'description': 'Template name: lowercase letters, digits, dot, dash or underscore, 1-63 characters. Unique per account. Versions are separate — do not put `@1` here.'}, 'engine': {'enum': ['chromium', 'satori'], 'type': 'string', 'description': 'Rendering engine. `chromium` (default) is full HTML and CSS and is required for PDF. `satori` is a fast PNG path for simple flexbox card layouts — no page breaks, no floats, no external CSS — and costs us less, so prefer it for OG images and social cards.'}, 'schema': {'type': 'object', 'examples': [{'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'Headline, one line'}}}], 'description': 'JSON Schema (2020-12) for the `data` payload this template accepts. Strongly recommended: it is what turns a bad payload into a field-level error with a path, an expected type and a working example instead of a blank page. Use `required` and give each property a `description`.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'source': {'type': 'string', 'examples': ['<html><body><h1>{{ title }}</h1></body></html>'], 'minLength': 1, 'description': 'One self-contained HTML document with inline CSS and Liquid expressions (`{{ customer.name }}`, `{% for line in line_items %}`). No file includes: everything the render needs must be in this string, or at a public https URL. Two extra filters ship by default: `money` and `date_medium`. For a PDF, use `@page { size: Letter; margin: 18mm }` to control pagination.'}, 'example': {'description': 'A payload that renders correctly. It is echoed back in validation errors, so include one.'}, 'message': {'type': 'string', 'description': 'Change note for this version, like a commit message.'}, 'options': {'type': 'object', 'properties': {'css': {'type': 'string', 'description': "Extra CSS appended after the template's own styles."}, 'scale': {'type': 'number', 'maximum': 3, 'minimum': 0.1, 'description': 'Device pixel ratio for png/jpg, 0.1-3. Use 2 for retina.'}, 'width': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Viewport width in px for png/jpg. Default 1200.', 'exclusiveMinimum': 0}, 'height': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Viewport height in px for png/jpg. Default 630.', 'exclusiveMinimum': 0}, 'margin': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'object', 'properties': {'top': {'type': ['string', 'number']}, 'left': {'type': ['string', 'number']}, 'right': {'type': ['string', 'number']}, 'bottom': {'type': ['string', 'number']}}}], 'description': 'PDF margins, CSS lengths in `in`, `px`, `cm` or `mm`: `18mm`, or per side. A bare number is px.'}, 'quality': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'jpg only, 1-100. Default 90.'}, 'full_page': {'type': 'boolean', 'description': 'png/jpg: capture the whole document instead of the viewport.'}, 'landscape': {'type': 'boolean', 'description': 'PDF only. Default false.'}, 'page_size': {'type': 'string', 'description': 'PDF page size: `Letter`, `A4`, `Legal`, or `210mm x 297mm`.'}, 'background': {'type': 'string', 'description': 'CSS colour painted under the document, e.g. `#ffffff`.'}, 'on_blocked_asset': {'enum': ['fail', 'skip'], 'type': 'string', 'description': 'What to do when an image or font the template asks for is refused by the egress policy or fails to fetch. `fail` (the default) fails the render with `asset_blocked` naming the URL; `skip` drops the asset and renders without it. Use `skip` only for decorative assets.'}, 'print_background': {'type': 'boolean', 'description': 'PDF: print background colours and images. Default true.'}}, 'description': "Render options, merged over the template's own defaults. Options are part of the cache key, so two calls that differ only here are two different renders."}, 'description': {'type': 'string', 'description': 'One line on what this template is for. Shown in list_templates.'}, 'expected_pages': {'type': 'integer', 'maximum': 2000, 'minimum': 1, 'description': 'How many PDF pages a typical payload renders. Default 1. This is the estimate the free tier and the spend cap are checked against before the render starts, so a template that runs to several pages must say so or a render that cannot fit the allowance will be started and then go over. It is not a limit: the render is billed on the pages it actually produced.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['render_id'], 'properties': {'render_id': {'type': 'string', 'examples': ['rnd_7hq2m4x8k1bv'], 'description': 'Render id from a previous render call, e.g. `rnd_…`. Returns the status and a fresh signed URL.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template'], 'properties': {'template': {'type': 'string', 'examples': ['invoice', 'invoice@3'], 'minLength': 1, 'description': 'Template to use: `invoice` for the latest version, or `invoice@3` to pin version 3. Pin the version in anything you ship — a new version changes the output and the cache key. Call list_templates to see what this account has.'}, 'include_source': {'type': 'boolean', 'description': 'Include the HTML source in the response. Default true. Set false when you only need the schema.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'api_key': {'type': 'string', 'examples': ['glr_sk_…'], 'description': 'A Galley API key, starting `glr_sk_`. It is checked against the API and then discarded — the binding that is stored is by account id, and this server keeps no copy of the key. Give either this or `link_code`.'}, 'link_code': {'type': 'string', 'examples': ['GLR-4F7K-9QX2'], 'description': "The one-time code mailed to the account's address, like `GLR-4F7K-9QX2`. Ten minutes, one use. Ask for one by calling `create_account` with the address: if it already has an account, a code is what comes back. Use this when the person would rather not paste a key into a chat. Case, spaces and dashes do not matter."}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'How many to return, newest first. 1-100, default 25.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template', 'data'], 'properties': {'data': {'description': 'The JSON payload for the template, matching its schema. Call get_template for the schema, or validate_data to dry-run a payload for free.'}, 'async': {'type': 'boolean', 'description': 'Force the queued path even for a small job. Default false: small jobs finish inside the call and come back with a URL already.'}, 'format': {'enum': ['pdf', 'png', 'jpg', 'jpeg'], 'type': 'string', 'description': 'Output format. Defaults to `pdf` for chromium templates and `png` for satori ones. `webp` is not supported in v1.'}, 'options': {'type': 'object', 'properties': {'css': {'type': 'string', 'description': "Extra CSS appended after the template's own styles."}, 'scale': {'type': 'number', 'maximum': 3, 'minimum': 0.1, 'description': 'Device pixel ratio for png/jpg, 0.1-3. Use 2 for retina.'}, 'width': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Viewport width in px for png/jpg. Default 1200.', 'exclusiveMinimum': 0}, 'height': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Viewport height in px for png/jpg. Default 630.', 'exclusiveMinimum': 0}, 'margin': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'object', 'properties': {'top': {'type': ['string', 'number']}, 'left': {'type': ['string', 'number']}, 'right': {'type': ['string', 'number']}, 'bottom': {'type': ['string', 'number']}}}], 'description': 'PDF margins, CSS lengths in `in`, `px`, `cm` or `mm`: `18mm`, or per side. A bare number is px.'}, 'quality': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'jpg only, 1-100. Default 90.'}, 'full_page': {'type': 'boolean', 'description': 'png/jpg: capture the whole document instead of the viewport.'}, 'landscape': {'type': 'boolean', 'description': 'PDF only. Default false.'}, 'page_size': {'type': 'string', 'description': 'PDF page size: `Letter`, `A4`, `Legal`, or `210mm x 297mm`.'}, 'background': {'type': 'string', 'description': 'CSS colour painted under the document, e.g. `#ffffff`.'}, 'on_blocked_asset': {'enum': ['fail', 'skip'], 'type': 'string', 'description': 'What to do when an image or font the template asks for is refused by the egress policy or fails to fetch. `fail` (the default) fails the render with `asset_blocked` naming the URL; `skip` drops the asset and renders without it. Use `skip` only for decorative assets.'}, 'print_background': {'type': 'boolean', 'description': 'PDF: print background colours and images. Default true.'}}, 'description': "Render options, merged over the template's own defaults. Options are part of the cache key, so two calls that differ only here are two different renders."}, 'template': {'type': 'string', 'examples': ['invoice', 'invoice@3'], 'minLength': 1, 'description': 'Template to use: `invoice` for the latest version, or `invoice@3` to pin version 3. Pin the version in anything you ship — a new version changes the output and the cache key. Call list_templates to see what this account has.'}, 'webhook_url': {'type': 'string', 'examples': ['https://example.com/hooks/galley'], 'description': 'Absolute https URL to POST the finished render to. Supplying one forces the queued path: the call returns immediately with status `queued`.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'confirm_saved': {'type': 'boolean', 'description': 'Leave this off for the first call: it mints the new key and shows it once, and revokes nothing. Set it to `true` — together with `revoke_key_id` — only after the human has told you they have saved the new key somewhere they can read it again. That second call is what kills the old key.'}, 'revoke_key_id': {'type': 'string', 'examples': ['3f1c1b8e-6a2d-4e77-9f0a-2b7c9d5e4a10'], 'description': "The id of the key to revoke, taken from `other_live_keys` in the first call's answer. Required with `confirm_saved`. Never guess one: revoking the wrong key takes down whatever was using it."}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template', 'source'], 'properties': {'engine': {'enum': ['chromium', 'satori'], 'type': 'string', 'description': 'Engine for the new version. Inherited from the previous version when omitted.'}, 'schema': {'type': 'object', 'examples': [{'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'Headline, one line'}}}], 'description': 'JSON Schema for the `data` payload. Inherited from the previous version when omitted — send `{}` only if you really want a version that validates nothing.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'source': {'type': 'string', 'examples': ['<html><body><h1>{{ title }}</h1></body></html>'], 'minLength': 1, 'description': 'One self-contained HTML document with inline CSS and Liquid expressions (`{{ customer.name }}`, `{% for line in line_items %}`). No file includes: everything the render needs must be in this string, or at a public https URL. Two extra filters ship by default: `money` and `date_medium`. For a PDF, use `@page { size: Letter; margin: 18mm }` to control pagination.'}, 'example': {'description': 'A payload that renders correctly under the new version. Inherited when omitted.'}, 'message': {'type': 'string', 'description': 'Change note for this version, like a commit message.'}, 'options': {'type': 'object', 'properties': {'css': {'type': 'string', 'description': "Extra CSS appended after the template's own styles."}, 'scale': {'type': 'number', 'maximum': 3, 'minimum': 0.1, 'description': 'Device pixel ratio for png/jpg, 0.1-3. Use 2 for retina.'}, 'width': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Viewport width in px for png/jpg. Default 1200.', 'exclusiveMinimum': 0}, 'height': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Viewport height in px for png/jpg. Default 630.', 'exclusiveMinimum': 0}, 'margin': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'object', 'properties': {'top': {'type': ['string', 'number']}, 'left': {'type': ['string', 'number']}, 'right': {'type': ['string', 'number']}, 'bottom': {'type': ['string', 'number']}}}], 'description': 'PDF margins, CSS lengths in `in`, `px`, `cm` or `mm`: `18mm`, or per side. A bare number is px.'}, 'quality': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'jpg only, 1-100. Default 90.'}, 'full_page': {'type': 'boolean', 'description': 'png/jpg: capture the whole document instead of the viewport.'}, 'landscape': {'type': 'boolean', 'description': 'PDF only. Default false.'}, 'page_size': {'type': 'string', 'description': 'PDF page size: `Letter`, `A4`, `Legal`, or `210mm x 297mm`.'}, 'background': {'type': 'string', 'description': 'CSS colour painted under the document, e.g. `#ffffff`.'}, 'on_blocked_asset': {'enum': ['fail', 'skip'], 'type': 'string', 'description': 'What to do when an image or font the template asks for is refused by the egress policy or fails to fetch. `fail` (the default) fails the render with `asset_blocked` naming the URL; `skip` drops the asset and renders without it. Use `skip` only for decorative assets.'}, 'print_background': {'type': 'boolean', 'description': 'PDF: print background colours and images. Default true.'}}, 'description': 'Default render options. Inherited from the previous version when omitted.'}, 'template': {'type': 'string', 'pattern': '^[a-z0-9][a-z0-9._-]{0,62}$', 'examples': ['invoice', 'delivery-note'], 'description': 'Name of an existing template. A new immutable version is published; earlier versions keep rendering, so anything pinned to `name@2` is unaffected.'}, 'description': {'type': 'string', 'description': 'Replaces the template description.'}, 'expected_pages': {'type': 'integer', 'maximum': 2000, 'minimum': 1, 'description': 'How many PDF pages a typical payload renders. Inherited from the previous version when omitted. This is the estimate the free tier and the spend cap are checked against before the render starts, so a template that runs to several pages must say so or a render that cannot fit the allowance will be started and then go over. It is not a limit: the render is billed on the pages it actually produced.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['plan'], 'properties': {'plan': {'enum': ['solo', 'starter', 'growth', 'scale'], 'type': 'string', 'examples': ['solo'], 'description': 'Which paid plan to subscribe to. Solo $5/mo (200 PDF pages or 500 images, webhooks, cloud delivery), Starter $19/mo (2,000 PDF pages or 5,000 images), Growth $79/mo (12,000 PDF pages or 30,000 images, priority queue, 90-day retention), Scale $249/mo (60,000 PDF pages or 150,000 images, dedicated pool, SLA). Call `usage` first if you are not sure which one the current volume needs. There is no `free`: moving down a plan is a cancellation in the billing portal, which is `billing_portal`.'}, 'interval': {'enum': ['month', 'year'], 'type': 'string', 'description': 'Billing interval. Default `month`. `year` is ten months for twelve on every plan.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['template', 'data'], 'properties': {'data': {'description': "The payload you intend to render. Checked against the template's JSON Schema and nothing else."}, 'template': {'type': 'string', 'examples': ['invoice', 'invoice@3'], 'minLength': 1, 'description': 'Template to use: `invoice` for the latest version, or `invoice@3` to pin version 3. Pin the version in anything you ship — a new version changes the output and the cache key. Call list_templates to see what this account has.'}}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
최근 도구 변경
유사한 MCP 서버
Andreax
Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…
Webflow
Reads Webflow site metadata, CMS collections, and collection items, including stored content and publishing status.
Devto
Retrieves DEV Community articles, including article content, metadata, tags, reactions, and comments.
AVI RIFF check, file discarded
Checks whether binary input has an AVI RIFF container signature and provides other lightweight file-format validation utilities.
RSS/Atom link rel count, markup discarded
Counts link relation values in RSS or Atom markup and provides general URL, HTTP, JSON, and format validation utilities.
Matroska EBML check, file discarded
Checks Matroska EBML structure without retaining the supplied file, alongside basic developer utilities.
Cannon Studio
Manages creative worlds, assets, projects, scenes, and generation requests while providing product, pricing, and developer API in…
Razi Tools
Provides utilities for document and image processing, OCR, screenshots, PDF manipulation, QR generation, text transformation, and…