Developer Space / MCP
Integration guide 7 of 7

MCP AI agents

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.

What it is

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.

Setup (Claude Desktop)

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" }
    }
  }
}
📸 Screenshot: Claude Desktop's MCP tool picker showing the print-bridge tools available

Available tools

ToolNeeds API key?Does
print_textYesPrint plain text to a paired device
print_orderYesPrint a structured order receipt
print_formattedYesPrint lines with bold/underline/divider/align/QR
list_devicesYesList paired phones and their status
get_job_status / list_recent_jobsYesCheck what happened to a job
print_nowNoPrint using a phone's temporary 12-digit code - see Print From Anywhere
generate_print_linkNoBuild a btprinterplus:// deep link for a human to tap on their own phone
get_setup_helpNoAsks the agent to explain any integration in this guide, with correct code

Examples

Plain text

Ask your agent: "Print 'Hello from Claude!' to my printer." It calls:

print_text({ "text": "Hello from Claude!" })

Rich text

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 }
  ]
})

Placeholder

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.

Strict Mode Optional

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.

Limitations