Live

PushPress logo

PushPress API and MCP server

pushpress.com

PushPress has a Platform API and an SDK that doubles as a local MCP server, both using an API key from Settings > Security & Access, but they are mostly read-only beyond creating customers and invitations (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for PushPress with 14 endpoints (6 read, 8 write): your AI agent signs in as you and does the work.

Endpoints
14 6 read, 8 write
Updated
How Cotlet connects your agent to PushPress
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 14 endpoints

    cotlet.dev/mcp/v1

  3. PushPress logo

    PushPress

    Signed in as you on pushpress.com

You sign in once. We never store your password.

Official API

Does PushPress have an official API?

PushPress has a Platform API and an SDK that doubles as a local MCP server, both using an API key from Settings > Security & Access, but they are mostly read-only beyond creating customers and invitations (checked 11 Oct 2026). Booking, check-ins, plan changes and class cancellations are done by staff in Core.

What PushPress's own tools do compared with Cotlet
Task PushPress official Cotlet
Find members and see their plans Yes Read-only lists of customers and plan enrollments Yes
See who is booked or checked in for a class Partly Read-only lists; Zapier fires a trigger on New Check-In Yes
Book a member into a class No Yes
Check a member in or remove a reservation No Yes
Switch a member to another plan No Yes
Pause or cancel a member plan No Yes
Message everyone booked in a class, then cancel it No Yes
Read the No Show / Late Cancel report No Yes

Sources: PushPress SDK and MCP server (npm) · PushPress Help: Integrations Hub and API keys · PushPress Help: Zapier triggers and actions · PushPress Help: Switch Plan

Common use cases

What can an AI agent do in PushPress?

Cotlet is best for gym and studio owners and managers who want their AI agent to handle class cancellations, plan changes, check-ins and no-show reviews in PushPress without running or fixing a server.

  • Cancel a class and notify booked members

    Saturday's 9:00 class is cancelled because Dana is sick. Text everyone booked, tell me who is on the waitlist, then cancel the class. Your agent calls list_classes, get_class_roster, message_class_registrants and cancel_class.

  • Upgrade or downgrade a member plan

    Jordan wants to go from 3x Week to Unlimited starting at his next bill date. Waive the setup fee. Your agent calls list_members, get_member, list_plan_templates and switch_member_plan.

  • Review no-shows and late cancels Runs: Weekly

    Every Tuesday, go through last week's no-shows and late cancels. Fee from the second no-show, a warning for the first late cancel. Do not charge anyone. Your agent calls list_no_shows_late_cancels and get_member.

  • Pause a membership

    Pause Alex for a month from Monday while she recovers from knee surgery. We charge the usual hold fee. Your agent calls list_members, get_member and pause_member_plan.

  • Check in a class from the roster

    Check in everyone who is reserved for the 7:00 class and already here. Your agent calls list_classes, get_class_roster and check_in_member.

Endpoints

What is the PushPress API?

Cotlet's PushPress API exposes 14 endpoints for your own PushPress account: list members, get member, list classes, get class roster, list plan templates, list no-shows and late cancels, book class reservation, check in member, remove reservation, switch member plan, pause member plan, cancel member plan, message class registrants and cancel class. The list_members endpoint returns people in your gym with their plans and plan status. Each endpoint takes simple JSON inputs like member_id, class_id or from and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 14 total

missing one? request an endpoint

  • POST

    list_members

    read

    Lists people in Core with the status of each plan: Active, Alert, Pending Active, Pending Cancel, Cancelled, Paused or Completed. Alert means a billing issue; class reservations are restricted for that plan. Pages hold up to 100 people; pass next_cursor back as cursor for the next page.

    POST /api/v1/pushpress/list_members

    Input

    Input: list_members
    Parameter Type Description
    search string Name or email.
    plan_status enum active, alert, pending_active, pending_cancel, cancelled, paused or completed.
    limit integer 1 to 100. Default: 50.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "members": [
        {
          "member_id": "usr_8f2k41",
          "name": "Jordan Reyes",
          "plans": [
            {
              "plan_id": "pln_30917",
              "name": "3x Week",
              "status": "active",
              "next_bill_date": "2026-11-01"
            }
          ]
        },
        {
          "member_id": "usr_2c77d9",
          "name": "Alex Kim",
          "plans": [
            {
              "plan_id": "pln_30455",
              "name": "Unlimited",
              "status": "alert",
              "next_bill_date": "2026-10-15"
            }
          ]
        }
      ],
      "next_cursor": null
    }
  • POST

    get_member

    read

    Returns one profile with contact details, every plan with its status, next bill date and the Plan ID other tools need, and recent reservations and check-ins. Call it before switching, pausing or cancelling a plan.

    POST /api/v1/pushpress/get_member

    Input

    Input: get_member
    Parameter Type Description
    member_id required string Member ID from list_members.

    Example response

    {
      "member_id": "usr_8f2k41",
      "name": "Jordan Reyes",
      "email": "jordan@example.com",
      "plans": [
        {
          "plan_id": "pln_30917",
          "name": "3x Week",
          "status": "active",
          "recurring": true,
          "next_bill_date": "2026-11-01"
        }
      ],
      "recent_activity": [
        {
          "class_id": "cls_5101",
          "class_name": "CrossFit 7:00",
          "status": "checked_in",
          "date": "2026-10-09"
        }
      ]
    }
  • POST

    list_classes

    read

    Lists classes on the calendar between two dates, in start order. Each item has the Class ID other tools need, the coach and how many members are reserved or waitlisted. Cancelled classes are not returned.

    POST /api/v1/pushpress/list_classes

    Input

    Input: list_classes
    Parameter Type Description
    from required date First day.
    to date Last day. Default: same as from.

    Example response

    {
      "classes": [
        {
          "class_id": "cls_5101",
          "name": "CrossFit 7:00",
          "starts_at": "2026-10-12T07:00:00-04:00",
          "coach": "Dana",
          "reserved": 11,
          "waitlist": 0
        },
        {
          "class_id": "cls_5120",
          "name": "CrossFit 9:00",
          "starts_at": "2026-10-17T09:00:00-04:00",
          "coach": "Dana",
          "reserved": 3,
          "waitlist": 1
        }
      ]
    }
  • POST

    get_class_roster

    read

    Returns everyone on one class card with the same statuses Core shows: Checked In, Reserved, Waitlist, Late Cancel and No Show. A Waitlist member moves to Reserved if a spot opens.

    POST /api/v1/pushpress/get_class_roster

    Input

    Input: get_class_roster
    Parameter Type Description
    class_id required string Class ID from list_classes.

    Example response

    {
      "class_id": "cls_5120",
      "name": "CrossFit 9:00",
      "members": [
        {
          "member_id": "usr_8f2k41",
          "name": "Jordan Reyes",
          "status": "reserved"
        },
        {
          "member_id": "usr_2c77d9",
          "name": "Alex Kim",
          "status": "reserved"
        },
        {
          "member_id": "usr_91ab03",
          "name": "Sam Ortiz",
          "status": "reserved"
        },
        {
          "member_id": "usr_44de18",
          "name": "Priya Nair",
          "status": "waitlist"
        }
      ]
    }
  • POST

    list_plan_templates

    read

    Lists the plans you can put a member on, with price and whether each is recurring. Use the template ID as new_plan_template_id in switch_member_plan, which works only with recurring plans.

    POST /api/v1/pushpress/list_plan_templates

    Input

    No parameters.

    Example response

    {
      "plan_templates": [
        {
          "template_id": "tpl_3x",
          "name": "3x Week",
          "recurring": true,
          "price": "149.00 USD / month"
        },
        {
          "template_id": "tpl_unlimited",
          "name": "Unlimited",
          "recurring": true,
          "price": "189.00 USD / month"
        }
      ]
    }
  • POST

    list_no_shows_late_cancels

    read

    Returns the members who missed a class (No Show) or cancelled inside the late cancel window (Late Cancel). PushPress updates the report within 24 to 48 hours after check-ins or deletions, so recent classes may be incomplete. Fees are not charged automatically.

    POST /api/v1/pushpress/list_no_shows_late_cancels

    Input

    Input: list_no_shows_late_cancels
    Parameter Type Description
    from required date First day.
    to required date Last day.
    type enum no_show, late_cancel or all. Default: all.

    Example response

    {
      "rows": [
        {
          "member_id": "usr_91ab03",
          "name": "Sam Ortiz",
          "class_name": "CrossFit 7:00",
          "date": "2026-10-07",
          "type": "no_show"
        },
        {
          "member_id": "usr_2c77d9",
          "name": "Alex Kim",
          "class_name": "CrossFit 9:00",
          "date": "2026-10-08",
          "type": "late_cancel"
        }
      ]
    }
  • POST

    book_class_reservation

    write

    Adds a member to a class from the class view in Core. Access rules apply: a plan that does not allow the class blocks the booking. It reaches no one else and remove_reservation undoes it, so it runs without asking.

    POST /api/v1/pushpress/book_class_reservation

    Input

    Input: book_class_reservation
    Parameter Type Description
    class_id required string Class ID from list_classes.
    member_id required string Member ID from list_members.

    Example response

    {
      "class_id": "cls_5120",
      "member_id": "usr_8f2k41",
      "status": "reserved"
    }
  • POST

    check_in_member

    write

    Checks a Reserved member in, or adds a walk-in who has no reservation. It enforces the same access rules as a direct check-in. With override set to true it checks the member in anyway, as staff can in the Control Panel; an override does not charge the member. It reaches no one else and remove_reservation can undo the entry, so it runs without asking.

    POST /api/v1/pushpress/check_in_member

    Input

    Input: check_in_member
    Parameter Type Description
    class_id required string Class ID from list_classes.
    member_id required string Member ID from list_members.
    override boolean Check in even when the member's plan does not allow the class. Default: false.

    Example response

    {
      "class_id": "cls_5101",
      "member_id": "usr_8f2k41",
      "status": "checked_in"
    }
  • POST

    remove_reservation

    write

    Removes the entry, the same as Remove Reservation or Remove Check-In in Core. PushPress states that removing a reservation does not affect the member's plan or billing. The member loses the spot. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/pushpress/remove_reservation

    Input

    Input: remove_reservation
    Parameter Type Description
    class_id required string Class ID from list_classes.
    member_id required string Member ID from list_members.

    Example response

    {
      "class_id": "cls_5120",
      "member_id": "usr_91ab03",
      "status": "removed"
    }
  • POST

    switch_member_plan

    write

    Runs Switch Plan from the member profile. With now, the current plan ends at once and prorated fees go on the first bill of the new plan. With next_bill_date, the current plan shows as pending cancel and the new one as pending active. Works only for recurring plans. PushPress emails the admin and the member. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/pushpress/switch_member_plan

    Input

    Input: switch_member_plan
    Parameter Type Description
    member_id required string Member ID from list_members.
    current_plan_id required string Plan ID from get_member.
    new_plan_template_id required string Template ID from list_plan_templates.
    when required enum now or next_bill_date.
    waive_setup_fee boolean Set the setup fee to 0. Default: false.

    Example response

    {
      "member_id": "usr_8f2k41",
      "current_plan": {
        "plan_id": "pln_30917",
        "name": "3x Week",
        "status": "pending_cancel",
        "ends_on": "2026-11-01"
      },
      "new_plan": {
        "name": "Unlimited",
        "status": "pending_active",
        "starts_on": "2026-11-01",
        "setup_fee": "0.00 USD"
      },
      "confirmation_email": "sent to member and admin"
    }
  • POST

    pause_member_plan

    write

    Runs Pause Plan from the member profile. Billing stops while the status is Paused. Leave resume_on empty for an indefinite pause. On resume, unused days from the pause date to the Paid Until Date are credited and the next bill date moves out by that many days. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/pushpress/pause_member_plan

    Input

    Input: pause_member_plan
    Parameter Type Description
    member_id required string Member ID from list_members.
    plan_id required string Plan ID from get_member (the member's current plan).
    pause_from required date First day of the pause.
    resume_on date Day the plan resumes. Empty means indefinite.

    Example response

    {
      "member_id": "usr_2c77d9",
      "plan_id": "pln_30455",
      "status": "paused",
      "paused_from": "2026-10-12",
      "resumes_on": "2026-11-12"
    }
  • POST

    cancel_member_plan

    write

    Runs Cancel Plan from the member profile. A date of today sets the status to Cancelled and the member loses access at once. A future date sets Pending Cancel, and the member keeps full access until that date has passed. Setting the date one day before the next bill date helps avoid an extra charge. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/pushpress/cancel_member_plan

    Input

    Input: cancel_member_plan
    Parameter Type Description
    member_id required string Member ID from list_members.
    plan_id required string Plan ID from get_member (the member's current plan).
    cancel_on date Cancel date. Default: today.

    Example response

    {
      "member_id": "usr_8f2k41",
      "plan_id": "pln_30917",
      "status": "pending_cancel",
      "cancel_on": "2026-10-31"
    }
  • POST

    message_class_registrants

    write

    Runs Mass Email Registrants from the class menu. It reaches the members currently registered in the class, by email, text or both. Core sends these one class at a time. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/pushpress/message_class_registrants

    Input

    Input: message_class_registrants
    Parameter Type Description
    class_id required string Class ID from list_classes.
    channel required enum email, sms or both.
    subject string Email subject. Used for email and both.
    body required string Message text.

    Example response

    {
      "class_id": "cls_5120",
      "channel": "sms",
      "recipients": 4,
      "status": "sent"
    }
  • POST

    cancel_class

    write

    Removes the class from the calendar. PushPress sends no notification, so call message_class_registrants first. Scope is this class only, this class and all future classes on that weekday, or this class and all future classes in the series. Members who were not checked in get their class credits back. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/pushpress/cancel_class

    Input

    Input: cancel_class
    Parameter Type Description
    class_id required string Class ID from list_classes.
    scope required enum this_class, this_and_future_weekday or this_and_future_series.

    Example response

    {
      "class_id": "cls_5120",
      "scope": "this_class",
      "status": "cancelled",
      "reservations_released": 3,
      "members_notified": false
    }

Setup

How do I connect PushPress to Claude Code, Codex or Cursor?

Connecting PushPress takes three steps: request access, sign in to PushPress once, then add one MCP server or call the REST API with the same key.

Connect PushPress over MCP

  1. 1

    Create an account

    Sign up and add PushPress in the console. Your API key is there too.

  2. 2

    Sign in to PushPress once

    Open the connect page from the console and sign in to PushPress the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    Saturday's 9:00 class is cancelled because Dana is sick. Text everyone booked, tell me who is on the waitlist, then cancel the class.

    Ask in plain words. Your agent finds the PushPress tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call PushPress over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/pushpress/switch_member_plan \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"member_id":"usr_8f2k41","current_plan_id":"pln_30917","new_plan_template_id":"tpl_unlimited","when":"next_bill_date","waive_setup_fee":true}'

    Every tool is a POST endpoint at /api/v1/pushpress/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · switch_member_plan

    {
      "member_id": "usr_8f2k41",
      "current_plan": {
        "plan_id": "pln_30917",
        "name": "3x Week",
        "status": "pending_cancel",
        "ends_on": "2026-11-01"
      },
      "new_plan": {
        "name": "Unlimited",
        "status": "pending_active",
        "starts_on": "2026-11-01",
        "setup_fee": "0.00 USD"
      },
      "confirmation_email": "sent to member and admin"
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for PushPress? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to PushPress yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When PushPress changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a PushPress MCP server on GitHub?

PushPress ships its TypeScript SDK as a local MCP server, but it wraps the same narrow Platform API, so booking, check-ins and plan changes stay out of reach. Zapier covers two actions (Create a Person, Find Person) and five triggers. Cotlet works in Core itself, where staff do these jobs by hand today.

Cotlet compared with a PushPress SDK MCP
PushPress SDK MCP Cotlet
Setup Create an API key in Core, run the SDK locally, add it to each MCP client Request access, sign in to PushPress once, add one MCP server or API key
What it can do Mostly reads, plus creating customers and invitations Book, check in, remove reservations, switch, pause and cancel plans, message and cancel classes
When PushPress changes Maintained by PushPress for the API surface it covers Our team tests it daily and fixes it for you; failed calls are free
Your PushPress session An API key in a file on your computer Session encrypted in an EU vault, limited to the actions you allow, revoked in one click
Upkeep You update and run it yourself Nothing to host or update
Where it runs Your computer, while it is on Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
Price Free Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when PushPress changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for PushPress in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_members passing
  • get_member passing
  • list_classes passing
  • get_class_roster passing
  • list_plan_templates passing

+ 9 more endpoints

14/14 passing latest check self-healing

pushpress.txt

PushPress has a Platform API and an SDK that doubles as a local MCP server, both using an API key from Settings > Security & Access, but they are mostly read-only beyond creating customers and invitations (checked 11 Oct 2026). Booking, check-ins, plan changes and class cancellations are done by staff in Core.
Cotlet provides a hosted MCP server and REST API for PushPress: 14 tools (6 read, 8 write).
Access       Request access at https://cotlet.dev/app/signup?app=pushpress; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/pushpress
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_members, get_member, list_classes, get_class_roster, list_plan_templates, list_no_shows_late_cancels, book_class_reservation, check_in_member, remove_reservation, switch_member_plan, pause_member_plan, cancel_member_plan, message_class_registrants, cancel_class
Confirm      remove_reservation, switch_member_plan, pause_member_plan, cancel_member_plan, message_class_registrants, cancel_class (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/pushpress-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=pushpress (PushPress is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to PushPress once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted PushPress server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to PushPress in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following PushPress's terms; Cotlet is not affiliated with PushPress.
Full page as Markdown

Automations

Can PushPress automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a PushPress connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to review no-shows and late cancels, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run PushPress automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/pushpress/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/pushpress/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/pushpress/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/pushpress/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the PushPress API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the PushPress API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own PushPress account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to PushPress yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a PushPress tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect PushPress in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
PushPress's terms
You use your own PushPress account and stay responsible for following PushPress's terms. Cotlet is independent and not affiliated with PushPress. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick PushPress. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to PushPress once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My PushPress session would leave my computer.

Cotlet keeps your PushPress session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Do I need an API key or a certain PushPress plan?

No. Cotlet works in your own Core staff account and does not use the Platform API key from Settings > Security & Access. Plan changes and the No Show / Late Cancel report are admin tasks in Core, so use an admin account for them.

Can it charge a no-show or late cancel fee?

No. PushPress does not charge no-show or late cancel fees automatically, and these tools do not either. list_no_shows_late_cancels only reads the report, so you or your agent can decide whom to follow up with.

Can my agent post or send messages in PushPress without asking me?

No. Every call to remove_reservation, switch_member_plan, pause_member_plan, cancel_member_plan, message_class_registrants or cancel_class waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. book_class_reservation, check_in_member runs without asking, because it sends nothing to anyone and one call undoes it.

Can I use the PushPress API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/pushpress/{tool} from the HTTP Request node.

Give your agent access to PushPress.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.