Skip to main content
Help center
Browse topics

Connect AI agents with MCP

Let Claude, ChatGPT, Gemini, Grok, Cursor and other AI agents look up businesses on Nola, and manage your own bookings and clients after you sign in.

How-toChecked against the app on 6 November 2026

Nola runs a Model Context Protocol (MCP) server, so AI agents can work with it directly. Anyone's agent can look up published businesses, services, prices and open times. Your own agent can sign in as you and read your calendar and clients, and, if you allow it, book, reschedule and cancel, and change resources, services, weekly hours and pricing rules.

It works with any agent that supports remote MCP servers over Streamable HTTP, including Claude, ChatGPT, Gemini, Grok, Cursor, VS Code, Microsoft Copilot Studio, Perplexity and Mistral Le Chat.

Two addresses

AddressUse it forSign-in
https://getnola.co/api/mcp/providerYour own business: calendar, clients, bookingsRequired. The agent opens a Nola sign-in page
https://getnola.co/api/mcpPublic lookups: businesses, services, prices, open times, helpNone. An API key adds your business tools

Both addresses are shown with a Copy button under Settings → Integrations → AI agents (MCP).

Connect your agent

Claude

  1. In Claude, add a custom connector and paste https://getnola.co/api/mcp/provider as the URL.
  2. Click Connect. A Nola sign-in page opens.
  3. Sign in with your Nola account and approve access.

In Claude Code, run this and then use /mcp to sign in:

claude mcp add --transport http nola https://getnola.co/api/mcp/provider

ChatGPT

  1. Turn on developer mode and create a new app (connector) with the URL https://getnola.co/api/mcp/provider.
  2. Choose OAuth as the authentication and save.
  3. Sign in with your Nola account when ChatGPT asks.

ChatGPT deep research uses the public search and fetch tools, which need no sign-in.

Cursor, VS Code and Gemini CLI

Add the server to the client's MCP configuration and sign in when the client prompts you.

Cursor (mcp.json):

{ "mcpServers": { "nola": { "url": "https://getnola.co/api/mcp/provider" } } }

VS Code (.vscode/mcp.json):

{ "servers": { "nola": { "type": "http", "url": "https://getnola.co/api/mcp/provider" } } }

Gemini CLI (settings.json):

{ "mcpServers": { "nola": { "httpUrl": "https://getnola.co/api/mcp/provider" } } }

Copilot Studio, Perplexity, Mistral Le Chat and other apps

Add a remote MCP server with the URL https://getnola.co/api/mcp/provider and pick OAuth. The app registers itself with Nola's sign-in automatically.

Agents that cannot sign in: Grok API, OpenAI Responses API, n8n

Some agents can only send a fixed token. Create an API key with the scopes the agent needs and send it as a bearer token to https://getnola.co/api/mcp.

API keys need the Business or Enterprise plan. On other plans the agent's requests with a key are refused; signing in as yourself (OAuth) works on every plan.

xAI Grok API:

{ "type": "mcp", "server_url": "https://getnola.co/api/mcp", "server_label": "nola", "authorization": "nola_live_…" }

OpenAI Responses API:

{ "type": "mcp", "server_label": "nola", "server_url": "https://getnola.co/api/mcp", "authorization": "nola_live_…", "require_approval": "always" }

Anthropic Messages API (MCP connector):

{ "type": "url", "name": "nola", "url": "https://getnola.co/api/mcp", "authorization_token": "nola_live_…" }

What a signed-in agent can do

The agent gets the same access as your role in the business. A receptionist's agent can manage bookings and clients but not settings; an accountant's agent sees neither the calendar nor clients. Staff limited to their own resources see only those bookings, and staff without money access do not see prices. With an API key, the key's scopes decide instead.

If you belong to more than one business, the agent works in the first one by default. Ask it to call get_business_overview, which lists your businesses, and to pass the business slug as workspace.

Reading

ToolWhat it does
get_business_overviewTimezone, currency, upcoming bookings, pending confirmations, services and whether agents may make changes
list_bookingsBookings between two dates, filtered by status or a search on client, service and notes
get_bookingOne booking with client, service, resources, notes and payment status
list_business_servicesYour services, including inactive ones on request
list_resourcesCourts, rooms, staff and equipment
list_availability_slotsAvailability slots with capacity and places booked
get_weekly_hoursWeekly opening hours
get_booking_rulesLead times, buffers, cancellation window and fees
list_clientsClients, newest first, or a search by name, email or phone
get_clientOne client with first and last name, notes, tags and recent bookings
list_class_sessionsClasses between two dates with instructor, room, places left and waitlist size
get_class_rosterOne class with the people booked and whether each has checked in

Making changes

ToolWhat it does
create_bookingBooks a service for a client. Checks capacity, rules, blocked times and resource availability, like a booking made in the app
update_resourceChanges a resource's name, open and close times, slot interval or whether it is active
update_serviceChanges a service's name, duration, price, or whether it can be booked
set_weekly_hoursSets weekly hours for the business, or for one service
list_pricing_rulesLists pricing rules, including prices per hour and per 15 minutes
create_pricing_ruleAdds a pricing rule. Price per hour and Price per 15 min scale with the booking
update_pricing_ruleChanges a pricing rule
reschedule_bookingMoves a booking. The client is notified
cancel_bookingCancels a booking. The client is notified, the time is freed and the waitlist is offered the slot
create_clientAdds a client by firstName and lastName, or by a single name that is split on its last space. If one with the same email exists, it is returned instead
update_clientChanges a client's firstName, lastName (or a full name), email, phone, notes or tags. Only the fields you pass change
create_availability_slotOpens a bookable slot, optionally for one service
book_class_sessionAdds a client to a class. Their membership or pack is used when it covers the class; otherwise they pay at the desk. Asking twice for the same client returns the place they already have

Importing data

The business owner's agent can bring data over from another system, the same way the copilot importer does. Only the owner, signed in: staff and API keys don't get these tools. The agent sends the table as CSV text.

ToolWhat it does
import_startStarts an import of one kind of data (members, memberships, packs, visits, family links, bookings, standing bookings, booking history or class attendees) and suggests which column is which
import_dry_runChecks every row without importing and lists each row that can't be imported, with the reason
import_commitImports the rows that passed. Asks for a confirmation first
import_undoUndoes an import, except anything used since. Asks for a confirmation first

Allow AI agents to make changes

Agents can only read your business until the owner allows changes:

  1. Open Settings → Integrations and find AI agents (MCP).
  2. Turn on the switch next to Allow AI agents to make changes.

While it is off, the tools for making changes are hidden from agents. Only the business owner can change the switch. The owner and Manager roles can open Settings → Integrations and see the section, but managers can't turn the switch on. Team members limited to some locations, resources or their own calendar don't see the page.

Every change an agent makes is recorded in the audit log with the person (or the API key's creator) and a note that it came through MCP.

Confirmations

reschedule_booking, cancel_booking, update_resource, update_service, set_weekly_hours, create_pricing_rule, update_pricing_rule, import_commit and import_undo never act on the first call. They return a preview of the change and a confirmation token. The agent should show you the preview; only when it calls again with the same details and the token does the change happen. A token is valid for 5 minutes and only for that exact change.

create_booking accepts an idempotencyKey. If the agent repeats a call with the same key within 24 hours, Nola returns the first booking instead of making a second one.

What anyone's agent can look up

Without signing in, agents can use these tools for businesses with a published booking page:

ToolWhat it does
searchSearches businesses, services and help pages. Returns ids for fetch
fetchReturns the full text of a search result
list_providersBusinesses in the public directory (on demo.getnola.co, the demo businesses)
get_providerOne published business by slug
list_servicesA business's active services with duration, price and booking link
check_availabilityOpen times for a service. A class with scheduled sessions returns those sessions. Other services return scheduled slots, tee times, or free start times per court, room or coach. A time is not free when a booking, a class or a standing booking already holds it
get_pricingPrice, currency and duration of one service
search_helpSearches this help center in English, Estonian or Russian

Customers finish booking and paying on the booking page link the agent returns.

Times and time zones

All times are ISO 8601 with a time zone offset, for example 2026-10-01T09:00:00+03:00. Times without an offset are refused, so an agent never books the wrong hour by accident. get_business_overview and check_availability return your business time zone.

Limits

WhatLimit
Requests without sign-in120 a minute per network address, short bursts up to 60
Requests from a signed-in agent or API key600 a minute, short bursts up to 120
Changes per business30 a minute, short bursts up to 10

Above a limit, Nola answers with status 429 and a Retry-After header.

For developers

  • Protocol: MCP 2026-07-28 over Streamable HTTP. Clients on the 2025 protocol versions are served too. The server keeps no sessions.
  • Sign-in: OAuth 2.1 with PKCE. The endpoint answers 401 with a WWW-Authenticate header that points to /.well-known/oauth-protected-resource/api/mcp/provider. Clients register with Client ID Metadata Documents or Dynamic Client Registration. Scopes: openid profile email.
  • Errors come back as tool results with isError: true and a readable reason, so the agent can correct itself.
  • Requests from browser pages on other sites are refused.
AddressWhat it holds
/.well-known/mcp/server-card.jsonServer card: name, addresses, sign-in and the full tool list
/.well-known/mcpA shorter manifest with both addresses and tool names
/.well-known/oauth-protected-resource/api/mcp/providerOAuth protected resource metadata
/llms.txt, /llms-full.txtPlain-text summaries for crawlers, including the MCP addresses
/openapi.jsonThe REST API description

In browsers that support WebMCP (navigator.modelContext), Nola pages also register a few tools for the browser's built-in assistant: list_industries, list_plans, search_help, list_providers, get_provider and navigate (public pages only). list_plans returns plan names and what each includes, without prices while Nola shares its prices on request.

Still stuck?

Ask the AI Copilot inside Nola, or send a request to the Nola team. A person answers within one working day.