Generate images, videos, and screenshots from your Bannerbear templates via AI.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Generate a collection of images from a template set (additive; CONSUMES API quota). Async: returns a `pending` collection whose uid you poll with bannerbear_get_collection (image_urls map populates on completion). API: POST /v2/collections.
Template set uid to render.
Arbitrary metadata string echoed back on the object.
URL Bannerbear will POST the finished collection to when done.
Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: "title", text: "Hello", color: "#FF0000" } or { name: "photo", image_url: "https://..." }. Only include layers you want to change.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Generate a collection of images from a template set (additive; CONSUMES API quota). Async: returns a `pending` collection whose uid you poll with bannerbear_get_collection (image_urls map populates on completion). API: POST /v2/collections.
| Argument | Type | Description |
|---|---|---|
| metadata | string | Arbitrary metadata string echoed back on the object. |
| webhook_url | string | URL Bannerbear will POST the finished collection to when done. |
| template_set* | string | Template set uid to render. |
| modifications | array | Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: "title", text: "Hello", color: "#FF0000" } or { name: "photo", image_url: "https://..." }. Only include layers you want to change. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"template_set"
],
"properties": {
"metadata": {
"type": "string",
"description": "Arbitrary metadata string echoed back on the object."
},
"webhook_url": {
"type": "string",
"description": "URL Bannerbear will POST the finished collection to when done."
},
"template_set": {
"type": "string",
"minLength": 1,
"description": "Template set uid to render."
},
"modifications": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: \"title\", text: \"Hello\", color: \"#FF0000\" } or { name: \"photo\", image_url: \"https://...\" }. Only include layers you want to change."
}
}
}Generate an image from a template (additive; CONSUMES API quota). Async by default: returns a `pending` image whose uid you poll with bannerbear_get_image. Set synchronous:true to block and receive the finished image (image_url populated) via the sync host. API: POST /v2/images.
| Argument | Type | Description |
|---|---|---|
| metadata | string | Arbitrary metadata string echoed back on the object. |
| template* | string | Template uid to render. |
| render_pdf | boolean | Also render a PDF version of the image. |
| synchronous | boolean | When true, POST to the sync host and wait for the completed image. Default false (202 pending). |
| transparent | boolean | Render with a transparent background (PNG). |
| webhook_url | string | URL Bannerbear will POST the finished image to when done. |
| modifications | array | Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: "title", text: "Hello", color: "#FF0000" } or { name: "photo", image_url: "https://..." }. Only include layers you want to change. |
Capture a screenshot of a web page (additive; CONSUMES API quota). Async by default: returns a `pending` screenshot to poll. Set synchronous:true to block and receive the finished screenshot via the sync host. API: POST /v2/screenshots.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public URL of the web page to screenshot. |
| width | integer | Viewport width in pixels. |
| height | integer | Viewport height in pixels. |
| mobile | boolean | Render with a mobile viewport. |
| synchronous | boolean | When true, POST to the sync host and wait for the completed screenshot. Default false (202 pending). |
| webhook_url | string | URL Bannerbear will POST the finished screenshot to when done. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"minLength": 1,
"description": "Public URL of the web page to screenshot."
},
"width": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Viewport width in pixels.",
"exclusiveMinimum": 0
},
"height": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Viewport height in pixels.",
"exclusiveMinimum": 0
},
"mobile": {
"type": "boolean",
"description": "Render with a mobile viewport."
},
"synchronous": {
"type": "boolean",
"description": "When true, POST to the sync host and wait for the completed screenshot. Default false (202 pending)."
},
"webhook_url": {
"type": "string",
"description": "URL Bannerbear will POST the finished screenshot to when done."
}
}
}Generate a video from a video template (additive; CONSUMES API quota). Async: returns a `pending` video whose uid you poll with bannerbear_get_video (video_url populates on completion). API: POST /v2/videos.
| Argument | Type | Description |
|---|---|---|
| metadata | string | Arbitrary metadata string echoed back on the object. |
| webhook_url | string | URL Bannerbear will POST the finished video to when done. |
| modifications | array | Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: "title", text: "Hello", color: "#FF0000" } or { name: "photo", image_url: "https://..." }. Only include layers you want to change. |
| video_template* | string | Video template uid to render. |
| input_media_url | string | URL of the source media (e.g. an audio/video file) to build from. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"video_template"
],
"properties": {
"metadata": {
"type": "string",
"description": "Arbitrary metadata string echoed back on the object."
},
"webhook_url": {
"type": "string",
"description": "URL Bannerbear will POST the finished video to when done."
},
"modifications": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: \"title\", text: \"Hello\", color: \"#FF0000\" } or { name: \"photo\", image_url: \"https://...\" }. Only include layers you want to change."
},
"video_template": {
"type": "string",
"minLength": 1,
"description": "Video template uid to render."
},
"input_media_url": {
"type": "string",
"description": "URL of the source media (e.g. an audio/video file) to build from."
}
}
}Get account details and usage: api_usage, api_quota, and paid_plan_name. API: GET /v2/account.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get a single collection — poll this to check an async render (status: pending | completed | failed; image_urls map populates on completion). API: GET /v2/collections/{uid}.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Collection uid (from a create_collection response). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"minLength": 1,
"description": "Collection uid (from a create_collection response)."
}
}
}Get a single generated image — poll this to check an async render (status: pending | completed | failed; image_url populates on completion). API: GET /v2/images/{uid}.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Image uid (from a create_image response). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"minLength": 1,
"description": "Image uid (from a create_image response)."
}
}
}Get a single template incl. its available_modifications (the layers you can override when generating). API: GET /v2/templates/{uid}.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Template uid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"minLength": 1,
"description": "Template uid."
}
}
}Get a single template set and the templates it contains. API: GET /v2/template_sets/{uid}.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Template set uid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"minLength": 1,
"description": "Template set uid."
}
}
}Get a single generated video — poll this to check an async render (status: pending | completed | failed; video_url populates on completion). API: GET /v2/videos/{uid}.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Video uid (from a create_video response). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"minLength": 1,
"description": "Video uid (from a create_video response)."
}
}
}List the image effects available for use in template modifications. API: GET /v2/effects.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the fonts available for use in template modifications. API: GET /v2/fonts.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List generated images in the project (paginated). API: GET /v2/images.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination.",
"exclusiveMinimum": 0
}
}
}List the template sets in the project (used by collections). API: GET /v2/template_sets.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination.",
"exclusiveMinimum": 0
}
}
}List the templates in the project. Filter/paginate with page, tag, name, and limit. API: GET /v2/templates.
| Argument | Type | Description |
|---|---|---|
| tag | string | Filter templates by tag. |
| name | string | Filter templates by name (substring match). |
| page | integer | Page number for pagination. |
| limit | integer | Number of templates per page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tag": {
"type": "string",
"description": "Filter templates by tag."
},
"name": {
"type": "string",
"description": "Filter templates by name (substring match)."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number for pagination.",
"exclusiveMinimum": 0
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Number of templates per page.",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"template"
],
"properties": {
"metadata": {
"type": "string",
"description": "Arbitrary metadata string echoed back on the object."
},
"template": {
"type": "string",
"minLength": 1,
"description": "Template uid to render."
},
"render_pdf": {
"type": "boolean",
"description": "Also render a PDF version of the image."
},
"synchronous": {
"type": "boolean",
"description": "When true, POST to the sync host and wait for the completed image. Default false (202 pending)."
},
"transparent": {
"type": "boolean",
"description": "Render with a transparent background (PNG)."
},
"webhook_url": {
"type": "string",
"description": "URL Bannerbear will POST the finished image to when done."
},
"modifications": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Layer overrides applied to the template. Array of objects, one per layer, each keyed by `name` (the layer name) plus the props to set, e.g. { name: \"title\", text: \"Hello\", color: \"#FF0000\" } or { name: \"photo\", image_url: \"https://...\" }. Only include layers you want to change."
}
}
}