Creators & communities
Substack
Posts, Notes, messages, subscribers and stats for your publication.
50 endpoints
Your AI agent logs enquiries as leads, follows up quiet ones, books projects with a contract and sends invoices. Sign in to Bloom once in your own Cloud Browser. No API, no zaps to build.
9 tools Read and write
Bloom has no MCP server, no ChatGPT or Claude app and no public API: we found no developer docs, only a Zapier app with triggers such as new lead and new payment (checked 8 Nov 2026). Cotlet runs 9 Bloom tools hosted, over MCP for agents and REST for scripts, in your own Bloom login.
| What you need | Bloom API | Zapier app | Cotlet |
|---|---|---|---|
| New leads and payments | No API | Triggers | Yes |
| Create leads and projects | No API | No | Yes |
| Send invoices and contracts | No API | No | Yes, after your OK |
| Ask in ChatGPT or Claude | No | No | Yes |
| Setup | None possible | Zaps to build | Sign in once |
Checked 8 Nov 2026. Sources: Bloom on Zapier · Bloom help center · Bloom help: Creating and sending an invoice
Once, in a browser we host for you.
One address in its settings.
It drafts the work, you OK what customers get.
We never keep your Bloom password, and no invoice, contract or payment reaches a client until you approve it. Who can see your session
Sign in to Bloom in a Cloud Browser. Create a Cotlet account, open Bloom in its Cloud Browser, sign in with your Bloom login on app.bloom.io and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.
Bloom shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Bloom on after connecting? Refresh the connector and the 9 tools appear.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: bloom_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: bloom_write New leads reach no one, so they run at once. Search matches name and email.
Returns leads with contact, service, event date, stage and last contact, newest first.
MCP callbloom_read → list_leads
REST endpointGET https://cotlet.dev/api/v1/bloom/leads
| Name | Type | Description |
|---|---|---|
| stage string | string | Lead stage. |
| no_reply_days integer | integer | Only leads with no contact in this many days. |
| page integer | integer | Page number. Default: 1. |
{
"leads": [
{
"lead_id": "LD-4410",
"contact": "Emily & Jordan Hayes",
"service": "Wedding, full day",
"event_date": "2027-06-12",
"stage": "Inquiry",
"source": "Website form"
}
],
"page": 1
} Creates the contact and lead with service and event date. Reaches no one, so it runs at once.
MCP callbloom_write → create_lead
REST endpointPOST https://cotlet.dev/api/v1/bloom/leads
| Name | Type | Description |
|---|---|---|
| name string required | string | Contact name. |
| email string | string | Email. |
| service string | string | Service asked for. |
| event_date string | string | ISO date. |
| note string | string | What they wrote. |
{
"name": "Priya Natarajan",
"email": "priya@example.com",
"service": "Family session",
"event_date": "2026-11-29"
} {
"lead_id": "LD-4433",
"contact": "Priya Natarajan",
"service": "Family session",
"stage": "Inquiry"
} Returns contacts with ID, email, phone and their projects.
MCP callbloom_read → list_contacts
REST endpointGET https://cotlet.dev/api/v1/bloom/contacts
| Name | Type | Description |
|---|---|---|
| query string | string | Name or email. |
| page integer | integer | Page number. Default: 1. |
{
"contacts": [
{
"contact_id": "CT-9120",
"name": "Marcus Bellamy",
"email": "marcus@example.com",
"projects": 1
}
],
"page": 1
} Projects and workflow tasks as you set them up in Bloom. A task that emails the client waits for your OK.
Returns projects with client, shoot date, status, invoice balance and the next open workflow task.
MCP callbloom_read → list_projects
REST endpointGET https://cotlet.dev/api/v1/bloom/projects
| Name | Type | Description |
|---|---|---|
| status string | string | Project status. |
| date_from string | string | ISO date. |
| date_to string | string | ISO date. |
| page integer | integer | Page number. Default: 1. |
{
"projects": [
{
"project_id": "PJ-2207",
"client": "Marcus Bellamy",
"name": "Headshots",
"date": "2026-11-15",
"status": "Booked",
"balance": "250.00",
"next_task": "Send prep guide"
}
],
"page": 1
} Creates the project with service and date, the way New Project on a contact does. Reaches no one, so it runs at once.
MCP callbloom_write → create_project
REST endpointPOST https://cotlet.dev/api/v1/bloom/contacts/{contact_id}/projects
| Name | Type | Description |
|---|---|---|
| contact_id string required | string | Contact ID from list_contacts. |
| name string required | string | Project name. |
| date string | string | ISO date of the shoot or session. |
| workflow string | string | Workflow name to apply. |
{
"contact_id": "contact_8c41d2",
"name": "Jane Doe"
} {
"project_id": "PJ-2231",
"client": "Priya Natarajan",
"name": "Family session",
"date": "2026-11-29",
"status": "Booked"
} Ticks the task in the project workflow. If the task is an automation that emails the client, it waits for your OK.
MCP callbloom_write → complete_task
REST endpointPOST https://cotlet.dev/api/v1/bloom/projects/{project_id}/task/complete
| Name | Type | Description |
|---|---|---|
| project_id string required | string | Project ID from list_projects. |
| task string required | string | Task name. |
{
"project_id": "project_8c41d2",
"task": "task"
} {
"project_id": "PJ-2207",
"task": "Send prep guide",
"status": "Done"
} Anything that reaches the client, or changes what they owe, waits for your OK.
Creates the invoice with your packages or line items and emails it with the payment link. By default you confirm each call; you can switch that off for this tool.
MCP callbloom_write → send_invoice
REST endpointPOST https://cotlet.dev/api/v1/bloom/projects/{project_id}/invoices
| Name | Type | Description |
|---|---|---|
| project_id string required | string | Project ID from list_projects. |
| items array required | array | Package or line items with price. |
| due string | string | ISO due date. |
{
"project_id": "project_8c41d2",
"items": "items"
} {
"invoice_id": "IV-7781",
"client": "Priya Natarajan",
"total": "450.00",
"status": "Sent"
} Fills the template with the project details and sends it for the client's signature. By default you confirm each call; you can switch that off for this tool.
MCP callbloom_write → send_contract
REST endpointPOST https://cotlet.dev/api/v1/bloom/projects/{project_id}/contracts
| Name | Type | Description |
|---|---|---|
| project_id string required | string | Project ID from list_projects. |
| template string required | string | Contract template name. |
{
"project_id": "project_8c41d2",
"template": "template"
} {
"contract_id": "CN-3302",
"client": "Emily & Jordan Hayes",
"template": "Wedding agreement",
"status": "Sent"
} Marks the amount paid, for example a bank transfer, so the balance is right. By default you confirm each call; you can switch that off for this tool.
MCP callbloom_write → record_payment
REST endpointPOST https://cotlet.dev/api/v1/bloom/invoices/{invoice_id}/payments
| Name | Type | Description |
|---|---|---|
| invoice_id string required | string | Invoice ID. |
| amount number required | number | Amount paid. |
| method string | string | Bank transfer, cash, check. |
{
"invoice_id": "invoice_8c41d2",
"amount": 1
} {
"invoice_id": "IV-7702",
"paid": "250.00",
"balance": "0.00"
} Your signed-in Bloom profile, AES-256-GCM encrypted, in Finland. No password.
The 9 Bloom tools, never the session cookie.
What your login sees: leads, contacts, projects, invoices, contracts.
Galleries, your website, refunds, payment settings, deletes.
You sign in again yourself, in the same Cloud Browser.
Disable for agents, reset the browser, or change your Bloom password.
Cotlet never types your password: you sign in yourself, and the agent only uses the session. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).
When Bloom moves a button on a project or renames a tab, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Add a lead or project | Yes, edit or archive it in Bloom |
| Send an invoice or contract | No, it is in the client's inbox; void it in Bloom |
| Record a payment | Yes, delete the payment in Bloom |
3 of 9 tools ask first: send_invoice, send_contract, record_payment. New leads, projects and workflow ticks reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.
{
"name": "create_lead",
"arguments": {
"name": "Priya Natarajan",
"email": "priya@example.com",
"service": "Family session",
"event_date": "2026-11-29"
}
} curl -X POST https://cotlet.dev/api/v1/bloom/leads \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Priya Natarajan","email":"priya@example.com","service":"Family session","event_date":"2026-11-29"}' {
"lead_id": "LD-4433",
"contact": "Priya Natarajan",
"service": "Family session",
"stage": "Inquiry"
} A cron job or n8n flow can call the same tools over REST at /api/v1/bloom with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.
About $14 a monthfor a solo wedding and portrait photographer, 2,360 credits. Your Bloom plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Enquiry logged as a lead | 1 × 30 | 300 |
| Quiet leads, weekly | 1 × 4 | 40 |
| Project booked with a contract | 3 × 8 | 240 |
| Invoice sent | 2 × 12 | 240 |
| Week planned | 1 × 4 | 40 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 2,360 |
Bloom publishes no project counts, so the month is our example. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Zapier app | New leads, forms, projects and payments to other apps. | Triggers only; nothing you can ask in plain words. |
| Bloom automations | Workflow emails and reminders inside Bloom. | Fixed steps you set up; no questions or new records. |
| By hand | Every screen of Bloom, one client at a time. | Your editing time. |
If you only need new leads copied to a sheet, the Zapier app does that. To log leads, book projects and send invoices from ChatGPT or Claude this week, Cotlet works in the Bloom account you already have.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), in business since 2019, led by its founders Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Bloom tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Bloom under Integrations in the console and sign in to Bloom in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Bloom once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Bloom account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Bloom: log enquiries as leads; follow up quiet leads; book a lead. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Bloom has no ChatGPT or Claude connector of its own and Bloom has no official MCP server (checked 8 Nov 2026). Cotlet is an independent one that works in ChatGPT, Claude, Cursor and any MCP client, on your signed-in account.
Yes, with Cotlet. ChatGPT adds enquiries from email or DMs as Bloom leads with the service and date, and lists leads that have gone quiet.
Yes, with Cotlet. ChatGPT creates the invoice from your packages on the project and sends it with the payment link after your OK.
Yes, with Cotlet. ChatGPT fills one of your contract templates for the project and sends it for signing after your OK.
Not yet. Cotlet works with leads, projects, workflow tasks, invoices and contracts. Uploading and delivering galleries stays in Bloom.
Yes. Bloom is the same for photographers, videographers, designers and coaches, and so are the tools: leads, projects, invoices and contracts.
Only in how it is called. Both carry the same 9 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Bloom.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy