The best way to let an AI agent print for you: let Claude Desktop, Claude Code, or any MCP-compatible AI agent print directly - "print this receipt to my kitchen printer" - by connecting to Bluetooth Printer+'s Model Context Protocol server.
https://printbridge.bluetoothprinter.in/mcp exposes the same operations as the Order Print REST API, as MCP tools an agent can call directly instead of you writing HTTP code by hand.
Add to claude_desktop_config.json, using the API key from your printbridge.bluetoothprinter.in dashboard:
{
"mcpServers": {
"print-bridge": {
"url": "https://printbridge.bluetoothprinter.in/mcp",
"headers": { "X-API-Key": "prk_xxxxxxxxxxxxxxxxxxxx" }
}
}
}
| Tool | Needs API key? | Does |
|---|---|---|
print_text | Yes | Print plain text to a paired device |
print_order | Yes | Print a structured order receipt |
print_formatted | Yes | Print lines with bold/underline/divider/align/QR |
list_devices | Yes | List paired phones and their status |
get_job_status / list_recent_jobs | Yes | Check what happened to a job |
print_now | No | Print using a phone's temporary 12-digit code - see Print From Anywhere |
generate_print_link | No | Build a btprinterplus:// deep link for a human to tap on their own phone |
get_setup_help | No | Asks the agent to explain any integration in this guide, with correct code |
Ask your agent: "Print 'Hello from Claude!' to my printer." It calls:
print_text({ "text": "Hello from Claude!" })
Ask: "Print a formatted receipt with a bold centered 'BIG SALE' heading and a divider under it." It calls:
print_formatted({
"lines": [
{ "text": "BIG SALE", "bold": true, "align": "center" },
{ "divider": true }
]
})
Placeholders are handled by generate_print_link, the one tool built specifically for template + values: "Give me a print link for 'Hello [[name]], your order is ready' with name = John." It calls:
generate_print_link({
"content": "Hello [[name]],\nYour order is ready.",
"placeholders": { "name": "John" }
})
// -> returns: btprinterplus://print?content=Hello%20%5B%5Bname%5D%5D...&placeholder_name=John
The agent hands that link back to you to open on your own phone - see Deep Link Print for why this can't be triggered remotely.
print_text, print_order, print_formatted, and print_now all accept an optional strictMode boolean argument. When true, the phone renders the job as a dithered image instead of raw text - pixel-for-pixel what a formatted on-screen template would look like, independent of whatever the phone's Settings screen has Strict Mode set to.
print_text({ "text": "[center]**MY STORE**[/center]\nThank you!", "strictMode": true })
Slower and heavier than normal text printing, so ask for it when formatting fidelity matters more than speed - not as the default for every job.
print_text, print_order, print_formatted, list_devices, job-status tools) need your API key on the MCP connection - only add it in a trusted, private MCP client config, never a shared/public one./api/v1/print/adhoc image field directly instead.generate_print_link only works when a human opens the resulting link on their own phone - the agent cannot trigger that phone remotely.print_now waits up to 20 seconds for the phone to confirm before reporting failure/timeout.