ShootProof MCP server Let your AI agent run your ShootProof studio admin.

Your AI agent books sessions with a contract and invoice, creates and delivers galleries, tells you about new orders and lists galleries about to expire. Sign in to ShootProof once in your own Cloud Browser. No client ID, no OAuth app.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with ShootProof
ShootProof logo ShootProof Cloud Browser

10 tools Read and write

Booking to order

What can your AI agent do in ShootProof? The studio admin between the booking and the print order.

  • Send contracts for new sessions

  • Send invoices with a retainer

  • Create and deliver client galleries

  • Check new print orders

  • Find galleries about to expire

  • See who still owes a payment

API on request

Does ShootProof have an MCP server or an API? An OAuth API with a client ID from support, and no MCP server.

ShootProof has no MCP server and no ChatGPT or Claude app. Its OAuth API is free with an account, but a client ID comes only by emailing support with your app details (developer docs, checked 8 Nov 2026). Cotlet runs 10 ShootProof tools hosted, over MCP for agents and REST for scripts, in your own ShootProof login.

  • The ShootProof API uses OAuth 2.0 with refresh tokens, so you build and host an app.
  • It covers contacts, contracts, events, invoices, orders and price sheets for your developer.
  • ShootProof has no connector in the ChatGPT apps directory or in Claude.
The ShootProof API, other options and Cotlet compared
What you need ShootProof APIBy handCotlet
Galleries and orders With a client ID Yes, one by one Yes
Send a contract or invoice With a client ID Yes, one by one Yes, after your OK
Share a gallery With a client ID Yes Yes, after your OK
Ask in ChatGPT or Claude No No Yes
Developer needed Yes No No

Checked 8 Nov 2026. Sources: ShootProof for Developers: Authorization · ShootProof for Developers · ShootProof integrated partners · ShootProof plans

Set up once

How does the ShootProof MCP server work? Your agent works in your own ShootProof login.

  1. 1Sign in to ShootProof

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Hand it the busywork

    It drafts the work, you OK what customers get.

We never keep your ShootProof password, and no gallery, contract or invoice reaches a client until you approve it. Who can see your session

Any MCP client

How to connect ShootProof to your AI agent

  1. 1

    Sign in to ShootProof in a Cloud Browser. Create a Cotlet account, open ShootProof in its Cloud Browser, sign in to your studio on studio.shootproof.com and press Enable for agents.

  2. 2

    Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.

  3. 3

    Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.

ShootProof shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned ShootProof on after connecting? Refresh the connector and the 10 tools appear.

Claude
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"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: shootproof_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: shootproof_write
5 read, 5 write

All 10 ShootProof MCP tools

Galleries and orders5

New galleries start private. Sharing sets the gallery live and emails the client, after your OK. Orders are read only.

  • list_galleries Client galleries with status, visits and expiry. read

    Returns galleries with name, event date, status, number of photos, visits and expiry date. Newest first.

    MCP callshootproof_read → list_galleries

    REST endpointGET https://cotlet.dev/api/v1/shootproof/galleries

    Parameters

    Parameters: list_galleries
    NameTypeDescription
    status string string public, private or expired. Default: all.
    query string string Gallery name.
    page integer integer Page number. Default: 1.

    Example response

    {
      "galleries": [
        {
          "gallery_id": "41820973",
          "name": "Okafor Wedding",
          "event_date": "2026-09-20",
          "status": "Public",
          "photos": 812,
          "visits": 146,
          "expires": "2027-03-20"
        }
      ],
      "page": 1
    }
  • list_orders Print and download orders by status or gallery. read

    Returns orders with client, gallery, total and status, so the agent can tell you what needs to go to the lab.

    MCP callshootproof_read → list_orders

    REST endpointGET https://cotlet.dev/api/v1/shootproof/orders

    Parameters

    Parameters: list_orders
    NameTypeDescription
    status string string new, processing or complete. Default: all.
    gallery_id string string One gallery only.
    page integer integer Page number. Default: 1.

    Example response

    {
      "orders": [
        {
          "order_id": "9921034",
          "client": "Grace Okafor",
          "gallery": "Okafor Wedding",
          "total": "284.00",
          "status": "New"
        }
      ],
      "page": 1
    }

Contacts, contracts and invoices5

Search contacts before adding one. Contracts come from your templates; contracts and invoices go out only after your OK.

  • list_contacts Contacts, searchable by name or email. read

    Returns contacts with ID, email, phone and tags. Pass the contact_id to send_contract or send_invoice.

    MCP callshootproof_read → list_contacts

    REST endpointGET https://cotlet.dev/api/v1/shootproof/contacts

    Parameters

    Parameters: list_contacts
    NameTypeDescription
    query string string Name or email.
    page integer integer Page number. Default: 1.

    Example response

    {
      "contacts": [
        {
          "contact_id": "7730415",
          "name": "Grace Lin",
          "email": "grace@example.com",
          "phone": "555-0166",
          "tags": [
            "portrait"
          ]
        }
      ],
      "page": 1
    }
  • create_contact Adds a contact. write

    Creates the contact. Search list_contacts first so a returning client does not become a duplicate. Reaches no one, so it runs at once.

    MCP callshootproof_write → create_contact

    REST endpointPOST https://cotlet.dev/api/v1/shootproof/contacts

    Parameters

    Parameters: create_contact
    NameTypeDescription
    first_name string required string First name.
    last_name string required string Last name.
    email string required string Email.
    phone string string Phone number.

    Example input

    {
      "first_name": "first name",
      "last_name": "last name",
      "email": "jane@example.com"
    }

    Example response

    {
      "contact_id": "7730502",
      "name": "Sam Rivera",
      "email": "sam@example.com"
    }
  • send_contract Sends a contract from a template for signature. writeasks first

    Creates the contract from your template with the session details and emails it to the contact to sign. By default you confirm each call; you can switch that off for this tool.

    MCP callshootproof_write → send_contract

    REST endpointPOST https://cotlet.dev/api/v1/shootproof/contacts/{contact_id}/contracts

    Parameters

    Parameters: send_contract
    NameTypeDescription
    contact_id string required string Contact ID from list_contacts.
    template string required string Contract template name.
    session_date string string ISO date.

    Example input

    {
      "contact_id": "7730502",
      "template": "Portrait session",
      "session_date": "2026-12-06"
    }

    Example response

    {
      "contract_id": "K-55120",
      "contact": "Sam Rivera",
      "template": "Portrait session",
      "status": "Sent"
    }
  • list_invoices Invoices by status, with amounts due. read

    Returns invoices with contact, total, amount due, next payment date and status.

    MCP callshootproof_read → list_invoices

    REST endpointGET https://cotlet.dev/api/v1/shootproof/invoices

    Parameters

    Parameters: list_invoices
    NameTypeDescription
    status string string unpaid, partially_paid, paid or all. Default: all.
    page integer integer Page number. Default: 1.

    Example response

    {
      "invoices": [
        {
          "invoice_id": "I-30871",
          "contact": "Grace Okafor",
          "total": "4,800.00",
          "due": "1,200.00",
          "next_payment": "2026-11-20",
          "status": "Partially paid"
        }
      ],
      "page": 1
    }
  • send_invoice Creates and emails an invoice to a contact. writeasks first

    Creates the invoice with your lines and payment schedule and emails it to the contact. By default you confirm each call; you can switch that off for this tool.

    MCP callshootproof_write → send_invoice

    REST endpointPOST https://cotlet.dev/api/v1/shootproof/contacts/{contact_id}/invoices

    Parameters

    Parameters: send_invoice
    NameTypeDescription
    contact_id string required string Contact ID from list_contacts.
    items object[] required object[] Lines: description, amount.
    due_date string string ISO date.

    Example input

    {
      "contact_id": "contact_8c41d2",
      "items": [
        "items"
      ]
    }

    Example response

    {
      "invoice_id": "I-30902",
      "contact": "Sam Rivera",
      "total": "450.00",
      "status": "Sent"
    }
Encrypted, revocable

Who can see my ShootProof session, and how do I revoke it?

  • What we store

    Your signed-in ShootProof profile, AES-256-GCM encrypted, in Finland. No password.

  • What your agent gets

    The 10 ShootProof tools, never the session cookie.

  • What the session sees

    What your studio sees: galleries, orders, contacts, contracts, invoices.

  • What no tool touches

    Uploads, deletes, payouts, price sheet edits, lab fulfillment.

  • If ShootProof signs you out

    You sign in again yourself, in the same Cloud Browser.

  • How to cut access

    Disable for agents, reset the browser, or change your ShootProof 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).

Tested every 12 h

What happens when ShootProof changes? We repair the tool; your prompts stay the same.

between tests of the ShootProof reads
12 h
between tests of sends a customer would notice
24 h
for a call to a ShootProof tool paused for repair
$0

When ShootProof moves a button in the gallery settings or renames a contract status, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.

3 tools ask first

Approvals, undo and mistakes Customers get nothing until you say so.

  1. 01 Finds or adds the contact So a returning client is not duplicated.
  2. 02 Fills your contract template With the session date.
  3. 03 Builds the invoice With the retainer and the balance.
  4. 04 Waits, then sends Both show up in your Cotlet console first.
Which ShootProof actions can be undone
ActionUndo
Create a galleryYes, delete it in ShootProof
Create a contactYes, edit or delete it
Share a galleryMake it private again; the email stays sent
Send a contract or invoiceVoid it in ShootProof; the email stays sent

3 of 10 tools ask first: share_gallery, send_contract, send_invoice. A new private gallery or a contact reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.

MCP call
{
  "name": "send_contract",
  "arguments": {
    "contact_id": "7730502",
    "template": "Portrait session",
    "session_date": "2026-12-06"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/shootproof/contacts/7730502/contracts \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"template":"Portrait session","session_date":"2026-12-06"}'
Response
{
  "contract_id": "K-55120",
  "contact": "Sam Rivera",
  "template": "Portrait session",
  "status": "Sent"
}

A cron job or n8n flow can call the same tools over REST at /api/v1/shootproof with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.

Pay per call

How much does the ShootProof MCP server cost?

About $15 a monthfor a photographer with about 10 sessions, 2,600 credits. Your ShootProof plan stays as it is.

A month of ShootProof studio admin for a working photographer, in credits
JobCallsCredits
Session booked: contact, contract, invoice4 × 10400
Gallery created and shared2 × 10200
New orders checked1 × 30300
Expiring galleries, weekly4 × 4160
Unpaid invoices, weekly1 × 440
Cloud Browser, 30 days1,500
Total2,600
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on your current ShootProof plan

ShootProof publishes no usage counts, so the month is our example. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
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.

Other options

ShootProof MCP server on GitHub, Zapier or hosted: which to use The API needs a client ID and an OAuth app.

Other ways to connect ShootProof, checked 8 Nov 2026
OptionWhat it doesWhere it stops
ShootProof APIContacts, contracts, events, invoices and orders for your own developer.Client ID by email to support; you build and host an OAuth app.
ShootProof integrated partnersReady connections to other studio tools.Each partner connects one tool for one job.
By handEvery screen of ShootProof.Your editing time.

If your developer already has a ShootProof client ID, building on the API is cheaper for simple reads. To deliver galleries and send contracts by asking in ChatGPT or Claude, Cotlet works in the ShootProof account you already have.

ShootProof MCP setup on GitHub and PyPI

Prefer code? Our public repo has a ready ShootProof MCP config for Claude Code, ChatGPT and Cursor, an agent skill and a small command-line tool. Add your Cotlet API key and your agent works in your own ShootProof account.

cotlet-connect/shootproof-mcp
  • MCP config for Claude Code, Cursor and Codex
  • Agent skill and Cursor rules for ShootProof
  • Clone it and run, Python standard library only
  • Elastic License 2.0, free in your own business
EU company, since 2019

Who runs Cotlet A company you can look up.

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 ShootProof tools go to contact@cotlet.dev.

ShootProof MCP server: questions

How do I get access?

Sign up free at https://cotlet.dev, open ShootProof under Integrations in the console and sign in to ShootProof in its Cloud Browser. The trial starts with your first app and asks for no card.

How do I connect ShootProof to ChatGPT or Claude?

Sign up at cotlet.dev, log in to ShootProof 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 ShootProof account through Cotlet, in their phone apps too.

What can ChatGPT do in ShootProof?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in ShootProof: book a session with contract and invoice; create and deliver client galleries; check new print orders. You ask in plain words, and anything that reaches other people waits for your OK first.

Is there an official ChatGPT or Claude app for ShootProof?

No. ShootProof has no ChatGPT or Claude connector of its own and ShootProof 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.

Can ChatGPT create galleries in ShootProof?

Yes, with Cotlet. ChatGPT creates the gallery with your price sheet and expiry and sends it to the client after your OK.

Can ChatGPT send contracts in ShootProof?

Yes, with Cotlet. ChatGPT fills your contract template for the session and sends it to the client to sign, after your OK.

Can ChatGPT check orders in ShootProof?

Yes, with Cotlet. Ask what came in since yesterday and ChatGPT lists new print and download orders with their totals.

Do I need a ShootProof client ID to use Cotlet?

No. Cotlet works through your own ShootProof sign-in, so you skip the support request and the OAuth app. It can do what your studio account can do.

Can it upload photos?

No. Upload from Lightroom or the ShootProof uploader as you do today. The agent creates, shares and reads galleries that are already there.

Is the MCP server different from the REST API?

Only in how it is called. Both carry the same 10 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with ShootProof?

No. Cotlet is independent and not affiliated with ShootProof.

Hand the ShootProof studio admin to your agent.

Free 7-day trial with 2,000 credits, no card needed.