# Mariana Tek API and MCP server

> Yes, but gated: Mariana Tek has APIs (Customer, Studio, Admin, Webhooks and more), and credentials go only to integration partners who sign the Developer Tools Terms of Service and to developers working with a single studio, with the studio owner included in the request; no official MCP server exists (checked 11 Oct 2026). A technical review of about 1 to 3 weeks may follow, and reporting data and Stripe data are not available through the API.

Booking, payments and customer management software for boutique fitness studios: class schedules, reservations, waitlists, credit packages and memberships.

## What is the Mariana Tek API?

Cotlet's Mariana Tek API exposes 15 endpoints for your own Mariana Tek account: list locations, list classes, get class roster, find customer, get customer, list customer reservations, list customer credits, book reservation, add to waitlist, cancel reservation, check in customer, give complimentary credits, add customer note, assign substitute and message class. The list_locations endpoint returns your studio locations with address and time zone. Each endpoint takes simple JSON inputs like customer_id, class_id or instructor and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Local services & SaaS](https://cotlet.dev/integrations/category/local-services-saas)
- **Endpoints:** 15 (7 read, 8 write)
- **Updated:** 2026-10-11

Yes, but gated: Mariana Tek has APIs (Customer, Studio, Admin, Webhooks and more), and credentials go only to integration partners who sign the Developer Tools Terms of Service and to developers working with a single studio, with the studio owner included in the request; no official MCP server exists (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Mariana Tek with 15 endpoints (7 read, 8 write): your AI agent signs in as you and does the work.

## Does Mariana Tek have an official API?

Yes, but gated: Mariana Tek has APIs (Customer, Studio, Admin, Webhooks and more), and credentials go only to integration partners who sign the Developer Tools Terms of Service and to developers working with a single studio, with the studio owner included in the request; no official MCP server exists (checked 11 Oct 2026). A technical review of about 1 to 3 weeks may follow, and reporting data and Stripe data are not available through the API.

| Task | Mariana Tek official | Cotlet |
|---|---|---|
| List classes and rosters | Partly: Only with approved API credentials | Yes |
| Book a customer into a class or its waitlist | Partly: Only with approved API credentials | Yes |
| Cancel a reservation, with or without penalty | Partly: Only with approved API credentials | Yes |
| Find a customer and their reservations and credits | Partly: Only with approved API credentials | Yes |
| Check customers in | Partly: Only with approved API credentials | Yes |
| Give complimentary credits | Partly: Only with approved API credentials | Yes |
| Add a substitute and email a class | Partly: Only with approved API credentials | Yes |
| Reports and Stripe data | No: Mariana Tek lists both as not available through the API | Yes |

Sources: [Mariana Tek developer guides: Getting Started](https://guides.marianatek.com/), [Mariana Tek developer guides: Technical Review](https://guides.marianatek.com/integration-review), [Which features aren't available through Mariana Tek's API (Mariana Tek help)](https://support.marianatek.com/en/articles/16648988-which-features-aren-t-available-through-mariana-tek-s-api), [How do I provide a customer with a complimentary credit? (Mariana Tek help)](https://support.marianatek.com/en/articles/3024414-how-do-i-provide-a-customer-with-a-complimentary-credit), [How can I bulk extend the credit package expiration? (Mariana Tek help)](https://support.marianatek.com/en/articles/13611067-how-can-i-bulk-extend-the-credit-package-expiration), [How do I cancel or delete a class? (Mariana Tek help)](https://support.marianatek.com/en/articles/1985811-how-do-i-cancel-or-delete-a-class), [How do I create a complimentary credit automation? (Mariana Tek help)](https://support.marianatek.com/en/articles/17339409-how-do-i-create-a-complimentary-credit-automation)

## For AI agents

```text
Yes, but gated: Mariana Tek has APIs (Customer, Studio, Admin, Webhooks and more), and credentials go only to integration partners who sign the Developer Tools Terms of Service and to developers working with a single studio, with the studio owner included in the request; no official MCP server exists (checked 11 Oct 2026). A technical review of about 1 to 3 weeks may follow, and reporting data and Stripe data are not available through the API.
Cotlet provides a hosted MCP server and REST API for Mariana Tek: 15 tools (7 read, 8 write).
Access       Request access at https://cotlet.dev/app/signup?app=mariana-tek; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/mariana-tek
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_locations, list_classes, get_class_roster, find_customer, get_customer, list_customer_reservations, list_customer_credits, book_reservation, add_to_waitlist, cancel_reservation, check_in_customer, give_complimentary_credits, add_customer_note, assign_substitute, message_class
Confirm      book_reservation, add_to_waitlist, cancel_reservation, check_in_customer, give_complimentary_credits, assign_substitute, message_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/mariana-tek-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=mariana-tek (Mariana Tek is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Mariana Tek 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 Mariana Tek 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 Mariana Tek 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 Mariana Tek's terms; Cotlet is not affiliated with Mariana Tek.
```

## What can an AI agent do in Mariana Tek?

Cotlet is best for boutique studio owners and front desk teams who want an AI agent to book, cancel, check in and credit customers in Mariana Tek without running or fixing a server.

- **Check in a class roster** (runs: daily): "Check in everyone in the 6pm HIIT class except the two who texted they are not coming." → `list_classes`, `get_class_roster`, `check_in_customer`
- **[Book a customer into a class from a message](https://cotlet.dev/integrations/mariana-tek-api-mcp-server/book-customer-into-class)**: "Book jamie@example.com into Saturday 9am Pilates Sculpt at Downtown with her membership. If it is full, put her on the waitlist and tell me." → `find_customer`, `get_customer`, `list_classes`, `book_reservation`, `add_to_waitlist`
- **[Cancel reservations without a late cancel fee](https://cotlet.dev/integrations/mariana-tek-api-mcp-server/cancel-reservations-without-fee)**: "Chris is travelling 19 to 23 Oct. Cancel all his reservations that week without a late cancel fee and note why on his account." → `find_customer`, `list_customer_reservations`, `cancel_reservation`, `add_customer_note`
- **[Give complimentary credits to a whole class](https://cotlet.dev/integrations/mariana-tek-api-mcp-server/give-complimentary-credits)**: "Sam's 6pm Ride tonight lost power after 20 minutes. Give everyone who was checked in one complimentary Class Credit, expiring in 30 days, reason "Class cut short"." → `get_class_roster`, `list_customer_credits`, `give_complimentary_credits`
- **[Assign a substitute instructor and email the class](https://cotlet.dev/integrations/mariana-tek-api-mcp-server/substitute-instructor-notify-class)** (runs: weekly): "Alex is sick. Put Taylor Kim in as sub on all of Alex's classes Thursday and email each class that Taylor is teaching." → `list_locations`, `list_classes`, `assign_substitute`, `message_class`
- **Daily roster and credit check** (runs: daily): "Who is on the roster and the waitlist for tomorrow's 7am ride? Flag anyone without a valid credit." → `list_classes`, `get_class_roster`, `list_customer_credits`

## Can Mariana Tek automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Mariana Tek 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 check in a class roster, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| 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/mariana-tek/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/mariana-tek/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/mariana-tek/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/mariana-tek/{tool} with your API key. | cron or GitHub Actions. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 15 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to Mariana Tek.

### list_locations

Your studio locations with address and time zone. Access: read. REST: `POST /api/v1/mariana-tek/list_locations`.

No parameters.

Returns every studio location your Admin account can see. Use location_id from each item in list_classes. Times in other tools use the location's time zone.

Example response:

```json
{
  "locations": [
    {
      "location_id": "loc_01",
      "name": "Downtown Studio",
      "address": "120 Main St, Brooklyn, NY",
      "time_zone": "America/New_York"
    },
    {
      "location_id": "loc_02",
      "name": "Riverside Studio",
      "address": "48 River Rd, Hoboken, NJ",
      "time_zone": "America/New_York"
    }
  ]
}
```

### list_classes

Classes on the schedule of a location, with time, class type, instructor and open spots. Access: read. REST: `POST /api/v1/mariana-tek/list_classes`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `location_id` | string | no | Location ID from list_locations. Default: your main location. |
| `from` | date | yes | First day, inclusive. |
| `to` | date | no | Last day, inclusive. Default: same as from. |
| `instructor` | string | no | Only classes taught by this instructor (name). |

Returns the classes of one location between two dates, earliest first. Filter by instructor to find all classes of one person. Each item has the class_id that the roster and booking tools take, and the number of open spots.

Example response:

```json
{
  "classes": [
    {
      "class_id": "418203",
      "name": "Pilates Sculpt",
      "start": "2026-10-17T09:00:00-04:00",
      "instructor": "Sam Ortiz",
      "capacity": 3,
      "spots_open": 0,
      "waitlist": 1
    },
    {
      "class_id": "418230",
      "name": "HIIT 45",
      "start": "2026-10-17T18:00:00-04:00",
      "instructor": "Alex Rivera",
      "capacity": 20,
      "spots_open": 6,
      "waitlist": 0
    }
  ]
}
```

### get_class_roster

Reservations in a class with spot, payment used and status, plus the waitlist and standby list. Access: read. REST: `POST /api/v1/mariana-tek/get_class_roster`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `class_id` | string | yes | Class ID from list_classes. |

Returns the roster of one class: every reservation with the spot (Pick-A-Spot layouts only), the payment used and its status, then the waitlist and the standby list. Waitlisted customers are not on the class until Mariana Tek auto-fills a freed spot or staff add them. Use reservation_id from each item to check in or cancel.

Example response:

```json
{
  "class_id": "418203",
  "class": "Pilates Sculpt",
  "capacity": 3,
  "reservations": [
    {
      "reservation_id": "7710342",
      "customer_id": "90517",
      "customer": "Jamie Park",
      "spot": "1",
      "payment_used": "Unlimited Monthly",
      "status": "reserved"
    },
    {
      "reservation_id": "7710343",
      "customer_id": "90544",
      "customer": "Riley Chen",
      "spot": "2",
      "payment_used": "10 Class Pack",
      "status": "reserved"
    },
    {
      "reservation_id": "7710344",
      "customer_id": "90561",
      "customer": "Morgan Diaz",
      "spot": "3",
      "payment_used": "Intro Offer",
      "status": "reserved"
    }
  ],
  "waitlist": [
    {
      "customer_id": "90602",
      "customer": "Casey Wong",
      "payment_option": "5 Class Pack"
    }
  ],
  "standby": []
}
```

### find_customer

Search customer accounts by name, email or phone, as Find Customer does. Access: read. REST: `POST /api/v1/mariana-tek/find_customer`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `query` | string | yes | Name, email or phone number. |

Searches customer accounts by name, email or phone number and returns the matches with their customer_id. Pass customer_id to get_customer and the booking tools.

Example response:

```json
{
  "customers": [
    {
      "customer_id": "90517",
      "name": "Jamie Park",
      "email": "jamie@example.com",
      "phone": "+1 555 0100"
    }
  ]
}
```

### get_customer

Customer profile: contact details, tags, notes, active memberships and credit packages. Access: read. REST: `POST /api/v1/mariana-tek/get_customer`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `customer_id` | string | yes | Customer ID from find_customer. |

Returns one customer account with contact details, tags, notes, active memberships and credit packages. Each membership or package has an id you pass as payment_option_id when booking.

Example response:

```json
{
  "customer_id": "90517",
  "name": "Jamie Park",
  "email": "jamie@example.com",
  "tags": [
    "founding member"
  ],
  "notes": [],
  "memberships": [
    {
      "payment_option_id": "mbr_2231",
      "name": "Unlimited Monthly",
      "status": "active"
    }
  ],
  "credit_packages": []
}
```

### list_customer_reservations

Upcoming reservations or reservation history of a customer, with class, instructor, payment used and status. Access: read. REST: `POST /api/v1/mariana-tek/list_customer_reservations`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `customer_id` | string | yes | Customer ID from find_customer. |
| `scope` | enum | no | upcoming or history. Default: upcoming. |

Returns the reservations of one customer, upcoming by default, soonest first. Switch scope to history to see past classes with their final status. Use reservation_id from each item to cancel.

Example response:

```json
{
  "reservations": [
    {
      "reservation_id": "7710401",
      "class_id": "418251",
      "class": "Pilates Sculpt",
      "start": "2026-10-19T07:00:00-04:00",
      "instructor": "Sam Ortiz",
      "payment_used": "Unlimited Monthly",
      "status": "reserved"
    }
  ]
}
```

### list_customer_credits

Credit packages of a customer with remaining credits, expiration and usage history. Access: read. REST: `POST /api/v1/mariana-tek/list_customer_credits`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `customer_id` | string | yes | Customer ID from find_customer. |
| `status` | enum | no | active or expired. Default: active. |

Returns the credit packages of one customer with credits remaining, the expiration date and how the credits were used. Complimentary credits are included. Set status to expired to see packages that have run out.

Example response:

```json
{
  "credit_packages": [
    {
      "name": "10 Class Pack",
      "credits_remaining": 2,
      "expires_on": "2026-10-31",
      "usage": [
        {
          "class": "HIIT 45",
          "date": "2026-10-08"
        }
      ]
    }
  ]
}
```

### book_reservation

Reserve a spot for a customer in a class, paid with one of the customer's memberships or credits. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/book_reservation`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `class_id` | string | yes | Class ID from list_classes. |
| `customer_id` | string | yes | Customer ID from find_customer. |
| `payment_option_id` | string | no | Membership or credit package from get_customer. Default: the first valid option. |
| `spot` | string | no | Spot for Pick-A-Spot layouts. Default: any open spot. |

Books one customer into one class and pays with a membership or credit package of that customer. Leave payment_option_id out to use the first valid option. For Pick-A-Spot classes pass spot, otherwise any open spot is used. The reservation is pending until Mariana Tek confirms it. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "reservation_id": "7710342",
  "class_id": "418203",
  "class": "Pilates Sculpt",
  "start": "2026-10-17T09:00:00-04:00",
  "customer": "Jamie Park",
  "payment_used": "Unlimited Monthly",
  "spot": "1",
  "status": "pending"
}
```

### add_to_waitlist

Add a customer to the waitlist of a full class. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/add_to_waitlist`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `class_id` | string | yes | Class ID from list_classes. |
| `customer_id` | string | yes | Customer ID from find_customer. |
| `payment_option_id` | string | no | Membership or credit package from get_customer. Default: the first valid option. |

Puts one customer on the waitlist of a class that is full, with the payment option you choose. The customer is not booked yet: inside the waitlist auto-fill window Mariana Tek moves the top customer in when a spot frees up; after it, staff add people by hand. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "class_id": "418203",
  "customer_id": "90602",
  "customer": "Casey Wong",
  "payment_option": "5 Class Pack",
  "status": "waitlisted",
  "position": 1
}
```

### cancel_reservation

Cancel a reservation. Inside the late cancel window you choose whether the penalty applies. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/cancel_reservation`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from get_class_roster or list_customer_reservations. |
| `waive_penalty` | boolean | no | Cancel without the late cancel fee, if your role allows it. Default: false. |

Cancels one reservation. Inside the late cancel window, waive_penalty true cancels without the fee (a Graced Cancel) if your role has that permission; without it the fee applies. The cancellation stays in the customer's history. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "reservation_id": "7710401",
  "class_id": "418251",
  "status": "graced_cancel",
  "penalty_applied": false
}
```

### check_in_customer

Mark a reservation as checked in. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/check_in_customer`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from get_class_roster or list_customer_reservations. |

Marks one reservation as checked in. It takes a reservation_id, so waitlisted customers cannot be checked in. Nothing is sent to the customer. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "reservation_id": "7710342",
  "class_id": "418203",
  "customer": "Jamie Park",
  "status": "checked_in"
}
```

### give_complimentary_credits

Add complimentary credits of one credit type to a customer's account. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/give_complimentary_credits`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `customer_id` | string | yes | Customer ID from find_customer. |
| `credit_type` | string | yes | Credit type name, as set up in your studio. |
| `quantity` | integer | yes | Number of credits. |
| `expires_on` | date | yes | Expiration, at midnight local time. |
| `reason` | string | yes | Reason saved on the account. |

Gives one customer a quantity of one credit type, like Give Credits on the Credits tab in Admin. The credit type must be active in your studio. Credits expire at midnight local time on the date you set, and the reason is saved on the account. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "customer_id": "90517",
  "credit_type": "Class Credit",
  "quantity": 1,
  "expires_on": "2026-11-16",
  "reason": "Class cut short by power outage",
  "status": "given"
}
```

### add_customer_note

Add a note to a customer account. Access: write. REST: `POST /api/v1/mariana-tek/add_customer_note`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `customer_id` | string | yes | Customer ID from find_customer. |
| `text` | string | yes | Note text. |

Adds a note to one customer account. It sends nothing to the customer or anyone else, so add_customer_note runs without asking first.

Example response:

```json
{
  "customer_id": "90517",
  "note": "Travelling Oct 19 to 23, late cancels waived by studio.",
  "status": "added"
}
```

### assign_substitute

Put a substitute instructor on a class. Customers are not emailed; use message_class for that. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/assign_substitute`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `class_id` | string | yes | Class ID from list_classes. |
| `instructor` | string | yes | Substitute instructor name. |

Sets a substitute instructor on one class. It changes the instructor only and sends no email; use message_class to tell the class. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "class_id": "418230",
  "class": "HIIT 45",
  "instructor": "Taylor Kim",
  "previous_instructor": "Alex Rivera",
  "customers_notified": false
}
```

### message_class

Email everyone in a class, including waitlist and standby, from the studio's default address. Access: write, asks the user first. REST: `POST /api/v1/mariana-tek/message_class`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `class_id` | string | yes | Class ID from list_classes. |
| `message` | string | yes | Message text. |

Emails everyone booked in one class, plus the waitlist and standby customers, from the studio's default address. The response counts the recipients. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "class_id": "418230",
  "recipients": 14,
  "reservations": 12,
  "waitlist": 2,
  "standby": 0,
  "status": "sent"
}
```

## How do I connect Mariana Tek to Claude Code, Codex or Cursor?

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

### Connect Mariana Tek to your agent.

1. **Create an account** Sign up and add Mariana Tek in the console. Your API key is there too.

2. **Sign in to Mariana Tek once** Open the connect page from the console and sign in to Mariana Tek the way you always do. We keep the session, never your password, and you can revoke it anytime.

3. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   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"
```

4. **Ask your agent** Ask in plain words. Your agent finds the Mariana Tek 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.

```
Check in everyone in the 6pm HIIT class except the two who texted they are not coming.
```

### Call Mariana Tek from your scripts.

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

```
export COTLET_API_KEY="cotlet_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/mariana-tek/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/mariana-tek/book_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"class_id":"418203","customer_id":"90517","payment_option_id":"mbr_2231"}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "reservation_id": "7710342",
  "class_id": "418203",
  "class": "Pilates Sculpt",
  "start": "2026-10-17T09:00:00-04:00",
  "customer": "Jamie Park",
  "payment_used": "Unlimited Monthly",
  "spot": "1",
  "status": "pending"
}
```

## Why use Cotlet for Mariana Tek?

**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 Mariana Tek 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 Mariana Tek changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a Mariana Tek MCP server on GitHub?

Mariana Tek has no official MCP server and we found no Zapier or Make app for it. Hosted scrapers that read studio data exist. For actions, the route is your own integration on the official API, which needs approval, or doing the work by hand in Mariana Tek Admin. Cotlet hosts the actions for you, under your own Admin login.

|  | Own partner integration | Cotlet |
|---|---|---|
| Setup | Partner survey and signed Developer Tools ToS, or a request that includes the studio owner, then a sandbox and credentials | Request access, sign in to Mariana Tek Admin once in your browser, add one MCP server or API key |
| Approval | Technical review of about 1 to 3 weeks for many integrations, with a screen recording | None from Mariana Tek: your agent acts with your own Admin role |
| When Mariana Tek changes | You maintain the code | Our team tests it daily and fixes it for you; failed calls are free |
| Your session | Your code stores API credentials or tokens | Encrypted in an EU vault, limited to the actions you allow, revoked in one click |
| When the session expires | Your code refreshes tokens or rotates keys | Your agent gets a link to sign in again |
| Where it runs | Your own server | Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule |
| Price | No published API fee; your build and review time | 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 Mariana Tek 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

## How much does the Mariana Tek API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Mariana Tek 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.

| 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. [See full pricing](https://cotlet.dev/pricing)

## How Cotlet holds your access

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

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to Mariana Tek 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 Mariana Tek tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect Mariana Tek 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.
- **Mariana Tek's terms:** You use your own Mariana Tek account and stay responsible for following Mariana Tek's terms. Cotlet is independent and not affiliated with Mariana Tek. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

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

**Do I need to be technical?**

No. You sign in to Mariana Tek 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 Mariana Tek session would leave my computer.**

Cotlet keeps your Mariana Tek 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 API access from Mariana Tek to use Cotlet?**

No. Cotlet signs in to Mariana Tek Admin with your own account, so it does not use the Developer Tools ToS or the technical review that Mariana Tek requires for API credentials (Mariana Tek developer guides, checked 11 Oct 2026). Your agent can only do what your own Admin role allows.

**Can my agent waive a late cancel fee?**

Only if your own Mariana Tek role has the permission to grace a cancel. Staff without it do not see the cancel without fee option in Mariana Tek, and cancel_reservation cannot waive the fee for them either (Mariana Tek help center).

**Can my agent post or send messages in Mariana Tek without asking me?**

No. Every call to book_reservation, add_to_waitlist, cancel_reservation, check_in_customer, give_complimentary_credits, assign_substitute or message_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. add_customer_note runs without asking, because it sends nothing to anyone and one call undoes it.

**Can I use the Mariana Tek 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/mariana-tek/{tool} from the HTTP Request node.
