Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Bookings, spaces, booking requests, usage and the activity feed of your Skedda venue. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.
12 tools Read and write
Skedda has a read-only API in beta and no MCP server (checked 31 Oct 2026). It lists booking occurrences and spaces, and sends webhooks for new, changed, cancelled and checked-in bookings. It cannot create, update or cancel a booking. Cotlet runs 12 Skedda tools hosted, over MCP for agents and REST for scripts.
| What you need | Official API | Zapier | Cotlet |
|---|---|---|---|
| List bookings and spaces | Yes, Premier plan | New bookings only | Yes |
| Push new bookings as they happen | Webhooks, Premier plan | New bookings, no edits | No, you schedule a run |
| Create, move or cancel a booking | No | No | Yes, after your OK |
| Approve or reject booking requests | No | No | Yes, after your OK |
| Read the activity feed | Not as a log | No | Yes |
Checked 31 Oct 2026. Sources: Skedda API reference (beta) · Skedda Help: Using the API with AI assistants · Skedda Help: Zapier trigger options · Skedda Help: Webhooks
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Skedda password, and nothing that reaches your users happens until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Enable Skedda for agents. Sign up, log in to Skedda in its Cloud Browser, then press Enable for agents.
Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.
Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.
One shared address, https://cotlet.dev/mcp/v1, also carries Skedda next to your other apps. If you enable Skedda after connecting, refresh the connector so the new tools show up.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-skedda \
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-skedda": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-skedda]
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: skedda_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: skedda_write Create a Cotlet API key with access to Skedda and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Skedda in Cotlet and enable it for agents. Account access: sign in as an Owner, System Admin or Booking Admin of your venue. Booking requests need a venue on Skedda Premier; the activity feed and users list are for system users.
curl "https://cotlet.dev/api/v1/skedda/bookings?date_from=2026-11-02&date_to=2026-11-08" \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "skedda",
"tool": "list_bookings",
"result": {
"bookings": [
{
"booking_id": "bkg_2041",
"title": "Band rehearsal",
"type": "User",
"spaces": [
"Studio A"
],
"holder": "Jake Miller",
"start": "2026-11-02T18:00:00+01:00",
"end": "2026-11-02T21:00:00+01:00",
"price": 45,
"payment_status": "Unpaid"
},
{
"booking_id": "bkg_2042",
"title": "Podcast recording",
"type": "User",
"spaces": [
"Studio B"
],
"holder": "Priya Shah",
"start": "2026-11-03T10:00:00+01:00",
"end": "2026-11-03T11:30:00+01:00",
"price": 30,
"payment_status": "Paid"
}
]
}
} Returns the bookings of the List view for the dates you give, with space, holder, type, price and payment status. A booking in several spaces appears once with all its spaces.
Ask for one week or one month at a time. Skedda's own API limits a request to 31 days, and the same window keeps your results small.
Replace the dates with your own range. Narrow the list with space_id, holder_email, booking_type or search.
Results include holder names. Some venues book for schools or junior sports, so keep personal details out of any destination that does not need them. Compare changed values such as times and spaces as well as booking_id when you refresh a destination.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Read list_booking_requests each morning and post the pending requests to a Slack channel for your booking admins. |
| Make | HTTP > Make a request | Call get_usage_summary for last month and add the booking count and hours of usage to a sheet for your board report. |
| Python or Node.js | REST API | Read get_activity_feed for the last week with activity_type set to cancel and save the cancelled bookings to a file. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Skedda; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Reads follow the List view. Create and change as a system user, so venue rules do not stop you, but a conflict is always refused.
Lists the venue spaces as the scheduler shows them, with name, type, tags and capacity. Filter by tag, type or minimum capacity. Nothing is changed.
MCP callskedda_read → list_spaces
REST endpointGET https://cotlet.dev/api/v1/skedda/spaces
| Name | Type | Description |
|---|---|---|
| space_tag string | string | Only spaces with this space tag. |
| space_type string | string | Only spaces of this type, as named in the venue. |
| min_capacity integer | integer | Only spaces that seat at least this many people. |
{
"spaces": [
{
"space_id": "spc_101",
"name": "Studio A",
"type": "Rehearsal room",
"tags": [
"Music"
],
"capacity": 8
},
{
"space_id": "spc_102",
"name": "Studio B",
"type": "Rehearsal room",
"tags": [
"Music"
],
"capacity": 4
}
]
} Returns the bookings of the List view for the dates you give, oldest first. Each row has the space or spaces, holder, title, type, price and payment status. Filter by space, holder, booking type or a search term in the title, space names and custom fields. Nothing is changed.
MCP callskedda_read → list_bookings
REST endpointGET https://cotlet.dev/api/v1/skedda/bookings
| Name | Type | Description |
|---|---|---|
| date_from date required | date | First day to list. |
| date_to date required | date | Last day to list. |
| space_id string | string | Only bookings in this space, from list_spaces. |
| holder_email string | string | Only bookings held by this user. |
| booking_type string | string | user, internal or unavailable. |
| search string | string | Text to find in the title, space names or custom fields. |
{
"date_from": "2026-10-01",
"date_to": "2026-10-01"
} {
"bookings": [
{
"booking_id": "bkg_2041",
"title": "Band rehearsal",
"type": "User",
"spaces": [
"Studio A"
],
"holder": "Jake Miller",
"start": "2026-11-02T18:00:00+01:00",
"end": "2026-11-02T21:00:00+01:00",
"price": 45,
"payment_status": "Unpaid"
},
{
"booking_id": "bkg_2042",
"title": "Podcast recording",
"type": "User",
"spaces": [
"Studio B"
],
"holder": "Priya Shah",
"start": "2026-11-03T10:00:00+01:00",
"end": "2026-11-03T11:30:00+01:00",
"price": 30,
"payment_status": "Paid"
}
]
} Returns the full record of one booking: spaces, times, title, notes, holder, price, payment status, custom fields and the repeat sequence when there is one. Admin-only custom fields are included, so treat the result as private. Nothing is changed.
MCP callskedda_read → get_booking
REST endpointGET https://cotlet.dev/api/v1/skedda/bookings/{booking_id}
| Name | Type | Description |
|---|---|---|
| booking_id string required | string | Booking ID from list_bookings. |
{
"booking_id": "booking_8c41d2"
} {
"booking_id": "bkg_2041",
"title": "Band rehearsal",
"type": "User",
"spaces": [
"Studio A"
],
"holder": {
"name": "Jake Miller",
"email": "jake@example.com"
},
"start": "2026-11-02T18:00:00+01:00",
"end": "2026-11-02T21:00:00+01:00",
"notes": "Bringing own amp",
"price": 45,
"payment_status": "Unpaid",
"custom_fields": [
{
"name": "Equipment",
"value": "Drum kit"
}
],
"repeat": null
} Fills the New booking form as a system user. Booking type user needs a holder, internal and unavailable bookings have none, and unavailable blocks the space. Conflicts are never allowed, so a taken time is refused. Repeat rules from the form are supported. A user holder may be emailed, depending on the venue notification settings. By default you confirm each call; you can switch that off for this tool.
MCP callskedda_write → create_booking
REST endpointPOST https://cotlet.dev/api/v1/skedda/bookings
| Name | Type | Description |
|---|---|---|
| space_ids string[] required | string[] | Spaces to book, IDs from list_spaces. |
| start datetime required | datetime | Start in the venue time zone. |
| end datetime required | datetime | End in the venue time zone. |
| booking_type string | string | user, internal or unavailable. Default: user. |
| holder_email string | string | Holder of a user booking. Leave out to book for yourself. |
| title string | string | Booking title. |
| repeat object | object | Repeat rule: { frequency: day | week | month | year, until: date }. |
{
"space_ids": [
"spc_101",
"spc_102"
],
"start": "2026-12-24T00:00:00+01:00",
"end": "2026-12-26T23:59:00+01:00",
"booking_type": "unavailable",
"title": "Closed for holidays"
} {
"booking_id": "bkg_2050",
"title": "Closed for holidays",
"type": "Unavailable",
"spaces": [
"Studio A",
"Studio B"
],
"start": "2026-12-24T00:00:00+01:00",
"end": "2026-12-26T23:59:00+01:00",
"occurrences": 1
} Edits a booking as the edit screen does: date and time, spaces, title, notes, holder and price. Only the fields you send change. For a repeat booking, scope picks one occurrence, this and following, or the full series. Changing a single occurrence separates it from the series. The holder may be told about important changes. By default you confirm each call; you can switch that off for this tool.
MCP callskedda_write → update_booking
REST endpointPATCH https://cotlet.dev/api/v1/skedda/bookings/{booking_id}
| Name | Type | Description |
|---|---|---|
| booking_id string required | string | Booking ID from list_bookings. |
| space_ids string[] | string[] | New spaces, IDs from list_spaces. |
| start datetime | datetime | New start. |
| end datetime | datetime | New end. |
| title string | string | New title. |
| holder_email string | string | New holder of a user booking. |
| price number | number | New price. |
| scope string | string | For a repeat booking: single (this occurrence), following (this and following) or series (the full series). Default: single. |
{
"booking_id": "booking_8c41d2"
} {
"booking_id": "bkg_2041",
"spaces": [
"Studio B"
],
"start": "2026-11-02T18:00:00+01:00",
"end": "2026-11-02T21:00:00+01:00",
"updated": true
} Removes a booking as the Cancel action does. A booking with payment status Paid cannot be removed until its payment status is changed. For a repeat booking, scope picks one occurrence, this and following, or the full series. The holder may be notified. By default you confirm each call; you can switch that off for this tool.
MCP callskedda_write → cancel_booking
REST endpointPOST https://cotlet.dev/api/v1/skedda/bookings/{booking_id}/cancel
| Name | Type | Description |
|---|---|---|
| booking_id string required | string | Booking ID from list_bookings. |
| scope string | string | For a repeat booking: single (this occurrence), following (this and following) or series (the full series). Default: single. |
{
"booking_id": "booking_8c41d2"
} {
"booking_id": "bkg_2042",
"status": "cancelled",
"scope": "single"
} Booking approvals exist only on Skedda Premier. Requests do not show on the scheduler.
Lists the requests on the Booking requests page that wait for approval, oldest first, with requester, space, time and title. Booking approvals exist only on the Premier plan, so a venue without them returns an error. Requests do not appear on the scheduler and do not block each other. Nothing is changed.
MCP callskedda_read → list_booking_requests
REST endpointGET https://cotlet.dev/api/v1/skedda/booking-requests
| Name | Type | Description |
|---|---|---|
| space_id string | string | Only requests for this space. |
{
"requests": [
{
"request_id": "req_310",
"title": "Choir practice",
"space": "Studio A",
"requester": "Ana Lopez",
"start": "2026-11-05T19:00:00+01:00",
"end": "2026-11-05T21:00:00+01:00",
"submitted": "2026-10-30T09:12:00+01:00"
}
]
} Approves a request from the Booking requests page, which creates the booking with the requested details. The requester is emailed, and if the booking involves payment they are charged only after approval. Quotas and rules were checked when the request was submitted. By default you confirm each call; you can switch that off for this tool.
MCP callskedda_write → approve_booking_request
REST endpointPOST https://cotlet.dev/api/v1/skedda/requests/{request_id}/booking-request/approve
| Name | Type | Description |
|---|---|---|
| request_id string required | string | Request ID from list_booking_requests. |
{
"request_id": "request_8c41d2"
} {
"request_id": "req_310",
"status": "approved",
"booking_id": "bkg_2051"
} Rejects a request from the Booking requests page. The optional note is sent to the requester with the rejection email, and no booking is created. By default you confirm each call; you can switch that off for this tool.
MCP callskedda_write → reject_booking_request
REST endpointPOST https://cotlet.dev/api/v1/skedda/requests/{request_id}/booking-request/reject
| Name | Type | Description |
|---|---|---|
| request_id string required | string | Request ID from list_booking_requests. |
| note string | string | Rejection note for the requester. |
{
"request_id": "request_8c41d2"
} {
"request_id": "req_311",
"status": "rejected"
} Read only. The activity feed and the users list are open to system users.
Returns the totals the List view shows to system users: total booking matches, total usage in hours and minutes, and total price when the venue uses pricing. A two-hour booking of two spaces counts as four hours, and unavailable bookings are left out of usage. Nothing is changed.
MCP callskedda_read → get_usage_summary
REST endpointGET https://cotlet.dev/api/v1/skedda/usage-summary
| Name | Type | Description |
|---|---|---|
| date_from date required | date | First day of the period. |
| date_to date required | date | Last day of the period. |
| holder_email string | string | Only bookings held by this user. |
| booking_type string | string | user, internal or unavailable. |
{
"date_from": "2026-10-01",
"date_to": "2026-10-01"
} {
"period": {
"from": "2026-10-26",
"to": "2026-11-01"
},
"bookings": 18,
"usage": "31 h 30 min",
"total_price": 940
} Reads the booking activity feed from the List view, newest first, with a timestamp, who did it and which booking. Filter by time range, activity type or a search term. Only system users can open the feed. Nothing is changed.
MCP callskedda_read → get_activity_feed
REST endpointGET https://cotlet.dev/api/v1/skedda/activity-feed
| Name | Type | Description |
|---|---|---|
| date_from date required | date | First day of the log. |
| date_to date required | date | Last day of the log. |
| activity_type string | string | new, update, cancel, charge or check-in. |
| search string | string | Text to find in the log. |
{
"date_from": "2026-10-01",
"date_to": "2026-10-01"
} {
"events": [
{
"time": "2026-11-02T08:40:00+01:00",
"activity": "update",
"booking_id": "bkg_2042",
"title": "Podcast recording",
"by": "Maya Brooks"
},
{
"time": "2026-11-01T16:05:00+01:00",
"activity": "new",
"booking_id": "bkg_2041",
"title": "Band rehearsal",
"by": "Jake Miller"
}
]
} Lists the people on the Users page with name, email, user tags and system tag. Filter by a search term or a tag. It returns personal details, so use it only for the job at hand. Nothing is changed.
MCP callskedda_read → list_users
REST endpointGET https://cotlet.dev/api/v1/skedda/users
| Name | Type | Description |
|---|---|---|
| search string | string | Part of a name or email. |
| tag string | string | Only users with this user tag. |
{
"users": [
{
"name": "Jake Miller",
"email": "jake@example.com",
"tags": [
"Band"
],
"system_tag": null
},
{
"name": "Maya Brooks",
"email": "maya@example.com",
"tags": [],
"system_tag": "System Admin"
}
]
} Your logged-in Skedda profile, encrypted with AES-256-GCM, in Finland. Not the password.
The 12 Skedda tools. Never the cookie.
Your venue: bookings, user names and emails, notes, prices.
Plan, billing, charging cards, settings, API keys and removing users.
You complete any extra sign-in step yourself. We never do.
Disable for agents, reset the browser, or remove the user in Skedda.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.
"use bots, scripts or other automated means to access them, except through features or interfaces Skedda makes available for that purpose"
The venue agreement adds that a venue may not place excessive load on Skedda "through automated scripts or bots not permitted in the Documentation" (Terms of Service, section 2.3), and that Skedda may suspend access it believes breaches the terms. Neither text names AI agents. Cotlet works through the Skedda web app, but Skedda could still read it as automation. We found no public case of a Skedda account closed for automation (checked 31 Oct 2026, vendor pages and GitHub only).
Skedda's read-only API is the official route for reading bookings. Use it if all you need is a data feed on Premier.
When Skedda moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Create a booking | Cancel it; the holder may already have an email |
| Move or edit a booking | Edit it back; the holder may have been told |
| Cancel a booking | Create it again; a Paid booking cannot be cancelled |
| Approve a request | Cancel the booking; the requester was emailed |
| Reject a request | The requester submits a new request |
All 5 write tools ask first, because each one can email a user or move a space they planned to use. The reads run at once. Switch the wait off per tool for a scheduled run.
Skedda never allows double bookings, so a change onto a taken time is refused and costs nothing.
{
"name": "create_booking",
"arguments": {
"space_ids": [
"spc_101",
"spc_102"
],
"start": "2026-12-24T00:00:00+01:00",
"end": "2026-12-26T23:59:00+01:00",
"booking_type": "unavailable",
"title": "Closed for holidays"
}
} curl -X POST https://cotlet.dev/api/v1/skedda/bookings \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"space_ids":["spc_101","spc_102"],"start":"2026-12-24T00:00:00+01:00","end":"2026-12-26T23:59:00+01:00","booking_type":"unavailable","title":"Closed for holidays"}' {
"booking_id": "bkg_2050",
"title": "Closed for holidays",
"type": "Unavailable",
"spaces": [
"Studio A",
"Studio B"
],
"start": "2026-12-24T00:00:00+01:00",
"end": "2026-12-26T23:59:00+01:00",
"occurrences": 1
} Scripts and cron jobs reach the same tools over REST at /api/v1/skedda, with the same key and price. A REST write waits for your approval and answers with status pending. The tools table lists the REST path of each tool.
About $16 a monthfor a venue of about 25 spaces with a daily request pass, 2,760 credits. Your Skedda plan is billed by Skedda as before.
| Job | Calls | Credits |
|---|---|---|
| Weekly usage report | 4 × 4 | 160 |
| Daily booking request pass | 4 × 22 | 880 |
| Block spaces for a closure | 3 × 2 | 60 |
| Move bookings when a room closes | 5 × 2 | 100 |
| Find who changed a booking | 2 × 3 | 60 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 2,760 |
The month is our example: 22 working days of request passes and a few closures. Skedda's own plans start at 15 to 45 spaces and are billed by Skedda. 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 |
|---|---|---|
| d-wynn/SkeddaBooker | Books parking, desks and rooms on a schedule with GitHub Actions. 0 stars, last push 21 Nov 2025. | One person's booking script for your own login. No reads, no requests, no MCP. |
| ryanyz10/skedda_booking_bot | Books tennis courts on Skedda. 5 stars, last push 2 Jun 2021. | Unmaintained since 2021. |
| Zapier | Triggers for new bookings and new users. | No actions: it cannot create, move or cancel a booking. Edits are not sent. |
| Skedda API with an AI assistant | Claude or ChatGPT writes a script that reads bookings, per Skedda's help center. | Read only, Premier plan, and you run and fix the script. |
There is no Skedda MCP server on GitHub and no hosted one besides ours. If you only need to read bookings and you are on Premier, the official API is enough and costs nothing extra. Cotlet adds the changes the API cannot make, and venues on lower plans.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Skedda tools.
Create a free account at https://cotlet.dev, open Skedda under Integrations in the console and log in to Skedda in its Cloud Browser. The trial starts with your first app, no card asked.
Sign up at cotlet.dev, log in to Skedda 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 Skedda account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Skedda: report space usage every week; approve booking requests that fit the rules; block out spaces for holidays and maintenance. You ask in plain words, and anything that reaches other people waits for your OK first.
Sign in as an Owner, System Admin or Booking Admin: they can create, edit and cancel bookings for others and open the activity feed (Skedda Help, checked 31 Oct 2026). Booking requests exist only on Skedda Premier. Cotlet does not need the API plan, because it works through the signed-in app.
Yes, on Skedda Premier or AllBooked Advanced. The read-only beta API lists booking occurrences and spaces, up to 31 days per request, with a key from Integrations > Developer (checked 31 Oct 2026). It cannot change a booking or read booking requests.
Yes, in beta on Premier and AllBooked Advanced: booking.created, booking.updated, booking.cancelled and booking_occurrence.checked_in (checked 31 Oct 2026). Cotlet does not receive them. Use them for your own system, and use Cotlet for the changes webhooks cannot make.
Only the door is different. Both expose the same 12 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Skedda.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
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