For developers
MCP server: connect Claude and ChatGPT
Wlaunch runs a Model Context Protocol (MCP) server. Connect Claude, ChatGPT or any other MCP client to it, and your AI assistant can answer questions about your business data in Wlaunch: clients, appointments, finance and reports. It only reads and never changes anything.
What the MCP server does
It gives an AI assistant read access to your Wlaunch data through 25 tools, covering:
Clients
Appointments
Schedules
Services
Memberships
Orders
Finance
Payroll
Inventory
Ratings
Surveys
Messages
P&L, cash flow, cash balance, statistics and retention reports
Every tool targets a fixed endpoint chosen when the tool was written, so the data your assistant can reach is a reviewed list rather than whatever it decides to ask for.
It can only read. No tool creates, edits, cancels or deletes anything: no booking an appointment, no changing a price, no adding a client. Every tool is annotated readOnlyHint: true.
It also cannot see more than you can. The server performs no authorization of its own: every request is made to the Wlaunch API as you, under the same per-company and per-permission rules as in the back office. If your account cannot see a branch's payroll, neither can your assistant.
The server also carries 3 general-purpose tools used for Wlaunch staff diagnostics, such as wlaunch_api_get. They are refused on customer accounts: if an assistant tries one, you will see it declined.
Who can use it
The MCP server is part of the Extended license, together with API integrations.
Extended license on the prices page
To connect, you need an Extended license and a personal access token, which Wlaunch support issues on request. The next step explains how to get one.
Step 1:Request an access token
Access tokens are issued by Wlaunch support. Contact support and ask for a personal access token for your Wlaunch account.
Request a token from Wlaunch support
Support sends you the token. In every example below, replace <access_token> with it.
Step 2:Connect your AI client
The server speaks MCP over Streamable HTTP and expects the token in a standard bearer header on every request:
Authorization: Bearer <access_token>Claude Code
Put the token in the WLAUNCH_MCP_TOKEN environment variable, loaded from a secret manager or your system keychain, then add the server from your terminal:
claude mcp add --transport http wlaunch https://mcp.wlaunch.net/mcp \
--header "Authorization: Bearer $WLAUNCH_MCP_TOKEN"Check that it was added with claude mcp list, and remove it with claude mcp remove wlaunch. Do not type the token itself into the command: the shell keeps every command in its history. Claude Code writes the token into its config in plain text, so treat that file as a credential.
Codex CLI
With the token in the WLAUNCH_MCP_TOKEN environment variable, add the server:
codex mcp add wlaunch \
--url https://mcp.wlaunch.net/mcp \
--bearer-token-env-var WLAUNCH_MCP_TOKENOr add it to ~/.codex/config.toml:
[mcp_servers.wlaunch]
url = "https://mcp.wlaunch.net/mcp"
bearer_token_env_var = "WLAUNCH_MCP_TOKEN"bearer_token_env_var names an environment variable rather than holding the token: Codex reads it at connection time and sends Authorization: Bearer <access_token>. Prefer it to writing the token into the file. It is the one client here that keeps the token out of config and out of logs: load the token into the environment from a secret manager or your system keychain, never as a literal in a shell profile or a repository.
http_headers (a fixed value) and env_http_headers (a value read from an environment variable) also exist, but this server reads only the Authorization header, so bearer_token_env_var is the one to use.
Claude Desktop
Add the server as a custom connector. The token goes in the Request headers section of the Add custom connector dialog.
Anthropic offers Request headers as a beta to a limited set of organizations. If your dialog has no Request headers section, your account does not have it yet and Claude Desktop cannot send this server your token: connect through Claude Code instead.
On Team and Enterprise plans only an Owner can add a custom connector, under Organization settings → Connectors, and a header stored there is one credential shared by everyone in the organization. That goes against one token per person, so on those plans connect through Claude Code instead.
The order of the steps below matters: set the authentication first, then the header.
- Open Customize → Connectors and press Add custom connector.
- Enter
Wlaunchas the Name (it is what appears in the connectors list) andhttps://mcp.wlaunch.net/mcpas the URL, then press Continue. - Under Authentication, choose No sign-in. The dialog may detect Sign in now and preselect it: do not take it. The server publishes no OAuth discovery metadata (every
/.well-known/oauth-*path returns404), so a sign-in flow has no authorization server to reach and fails. With No sign-in selected, the OAuth client section no longer applies. - Under Request headers, press Add header. The header name is a dropdown: pick
authorizationand enterBearer <access_token>as the value. Leave Required checked. Include theBearerscheme in the value: a bare token without it is rejected. The server reads no other header name, sox-api-keyand the rest are ignored. - Press Add. The dialog stores header values without showing them again, so keep the token somewhere you can retrieve it.
If authorization is grayed out in the dropdown, you are still on Sign in now. In that mode Claude fills this header itself and does not let you override it. Go back, choose No sign-in and open the dropdown again.
After it connects, the connector page lists Tool permissions: 28 read-only tools, the staff diagnostics ones included. Each can be set to Always allow, Needs approval, Blocked or Custom, one by one or for the whole group. Every tool only reads, but its results include text your clients typed, such as names and comments, and such text can carry instructions aimed at the assistant. Choose Always allow only if this assistant has no tools that can send data elsewhere; otherwise keep Needs approval, at least on wlaunch_api_get.
ChatGPT app
In the ChatGPT app, custom connectors live under Settings → Connectors, on the plans that offer Developer Mode. Add the server by URL:
https://mcp.wlaunch.net/mcpChatGPT's connector dialog is built around OAuth or no authentication, while this server needs a fixed bearer token. If the dialog gives you no field for a custom header, this combination is not supported, and the Responses API below is the route that works. We have not been able to confirm which of the two the current dialog does, so try the app and fall back to the API.
ChatGPT: the Responses API
The OpenAI Responses API takes an MCP server as a tool and lets you set headers, which is what this server needs. With the token in the WLAUNCH_MCP_TOKEN environment variable, send:
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<EOF
{
"model": "gpt-5",
"tools": [{
"type": "mcp",
"server_label": "wlaunch",
"server_url": "https://mcp.wlaunch.net/mcp",
"headers": { "Authorization": "Bearer $WLAUNCH_MCP_TOKEN" }
}],
"input": "What companies can this integration see?"
}
EOFrequire_approval controls whether the model pauses for your confirmation before each tool call. The example leaves it out, so every call waits for your approval. Setting it to "never" is an option only for an assistant with no tools that can send data elsewhere: tool results include text your clients typed, such as names and comments, which can carry instructions aimed at the model.
Your Wlaunch token goes to OpenAI in that header. That is the same trust decision as pasting it into any hosted assistant.
Any other MCP client
Use the Streamable HTTP transport, the URL https://mcp.wlaunch.net/mcp and the Authorization header. There is nothing Wlaunch-specific in the protocol, so any client that speaks MCP over HTTP and lets you set a header will work.
Step 3:Check that it works
Ask your assistant:
What companies can this integration see?
It should call wlaunch_company_context with no arguments and list your companies. That tool is the only one that needs no company id, and every other question starts there: it also returns your company's own vocabulary (appointment statuses, branches, tags, finance operation types), which the other tools need to answer correctly.
Then try a real question:
How many appointments were completed at our main branch last month?
What you can ask
Questions work best when they are the ones you would ask a manager, not the ones you would type into a database:
- Which clients have not booked since March?
- What was our revenue last month, broken down by service?
- Show me the schedule for the Kyiv branch next Tuesday.
- A client says she never got her reminder. What happened?
- How did each specialist perform in the first half of June?
The assistant usually reads your company's dictionary first and runs other queries after.
Limits
Rate limits
Rate limits are counted per tool call, per user and per company, and capped at 3 times that across all of a user's companies.
| Limit group | Limit | Tools |
|---|---|---|
general | 60 calls per 5 minutes | Every other tool |
expensive | 10 calls per 5 minutes | reports_*, statistics_*, retention_*, clients_segment |
When you hit a limit, you do not get an HTTP 429 and there is no Retry-After header. The tool call succeeds at the protocol level and returns an error payload that names the group, the limit and how long to wait:
{
"error": "rate_limited",
"message": "Rate limit reached for expensive tools: 10 calls per window.",
"guidance": "Wait 47 seconds before calling this tool again. …",
"metadata": { "bucket": "expensive", "limit": 10, "resetInMs": 47000 }
}Page size and large responses
Page sizes default to 20 and cap at 100, the Wlaunch API's own ceiling.
Large responses are truncated by dropping whole rows, never by cutting a row in half. When that happens, the response says so and total stays accurate, so a count is trustworthy even when the list is partial. If you need only a count, that costs one call with size: 1.
Troubleshooting
The connection is refused with HTTP 401
The response body and the WWW-Authenticate header carry a machine-readable code. Read the code, not the text: the human-readable description is the same in every case on purpose, so that someone probing the endpoint cannot learn which part of their guess was wrong.
| Code | What it means | What to do |
|---|---|---|
invalid_request | There is no Authorization header, or it is malformed. | Add the header in the form Bearer <access_token>. |
invalid_token | The header is well formed, but the token is rejected or no longer valid. | Request a new token from Wlaunch support and update your client configuration. |
A tool returns an error instead of an answer
These come back as a normal tool result with an error field, not as an HTTP failure:
| Code | What it means |
|---|---|
plan_restricted | Your license does not include this feature. This is not the same as having no data: the count is unknown, not zero. |
forbidden | Your Wlaunch account has no permission for this company or resource. |
not_found | The id does not exist, or you cannot see it. |
validation | The assistant sent a bad argument. It should correct itself and retry. |
rate_limited | A rate limit was reached. See the limits above. |
upstream | The Wlaunch API is unavailable or timed out. Retry shortly. |
A revoked token can keep working for up to a minute
The server caches token verification for 60 seconds. If a token was invalidated, calls can keep succeeding for up to a minute afterwards. A newly issued token works immediately.
Technical reference
- MCP endpoint
https://mcp.wlaunch.net/mcp- Transport
Streamable HTTP- Authentication
Bearer <access_token>in theAuthorizationheader, the only header the server reads- Access token
- Personal, issued by Wlaunch support on request
- OAuth discovery metadata
- None:
/.well-known/oauth-*returns404 - Token verification cache
- 60 seconds
- Access
- Read-only, every tool annotated
readOnlyHint: true - Tools
- 25