Connecting an AI Assistant

DJfindr provides a Model Context Protocol (MCP) server for Claude, ChatGPT and any other MCP client. One connector serves both purposes: anyone can search and compare DJs without an account, and a signed-in person can work in their own DJfindr account as a client or a DJ.

https://mcp.djfindr.com

Account requirements

CapabilityAccount required
Search DJs; read profiles, mixes, reviews and live events; look up genres, occasions and locationsNo
Client: send a booking request, review an offer and get its checkout link, request an extension, write a reviewYes
DJ: answer requests, build and send offers and documents, manage the calendar, profile, mixes, posts and live events, PayLinks, payouts, refunds and analyticsYes
Messages, files and search across the person's own recordsYes
📘

Sign-in on demand

Searching and comparing never requires sign-in. The first time the assistant needs the person's account, it asks them to sign in with DJfindr and then continues. There is no API key to enter.

Add the connector

Claude

On a Free, Pro or Max plan (the Free plan allows one custom connector):

  1. Go to Customize > Connectors and click Add custom connector.
  2. Enter DJfindr as the name and https://mcp.djfindr.com as the server URL. Leave the OAuth client ID and secret under Advanced settings empty. If the dialog asks how people sign in, choose to sign in later, when a tool needs it, and select Use Claude's published identity for the OAuth client (Register automatically also works).
  3. Click Add. In a chat, click +, select Connectors and turn on DJfindr.
  4. The first time Claude needs the person's account, a Connect button appears in the chat. The person signs in to DJfindr (or creates a client account), reviews the scopes and approves.

On a Team or Enterprise plan, an Owner adds the connector once in Organization settings > Connectors (Add, then Custom, then Web if prompted, with the same URL). Each member then finds it under Customize > Connectors with the Custom label and clicks Connect to sign in with their own DJfindr account.

ChatGPT

DJfindr is an approved app in ChatGPT. No server URL or developer mode is required.

👍

Add DJfindr to ChatGPT

Open DJfindr in ChatGPT and add it to your account.

  1. Open the link above and add DJfindr.
  2. Start a chat and ask ChatGPT to find a DJ.
  3. The first time ChatGPT needs the person's account, it opens DJfindr's sign-in. The person signs in (or creates a client account), reviews the scopes and approves.

Other MCP clients

Add https://mcp.djfindr.com as a remote server (Streamable HTTP). Catalog tools require no authentication. Clients that implement the MCP authorization specification discover DJfindr's sign-in automatically, as described below.

Other MCP clients (Claude Code, Cursor, MCP Inspector and the rest) are third-party apps. Any client account can use their account tools; a DJ account needs the Platinum plan for them. Catalog tools work on every plan.

Sign-in

Account tools accept OAuth only; an API key is refused with code: "oauth_required". The sign-in is the same Sign in with DJfindr used by connected applications.

TopicDetail
Eligible accountsAny client account. DJ accounts on any plan with Claude and ChatGPT; other MCP clients (Claude Code, Cursor and the rest) are third-party apps and need the Platinum plan for account tools. DJfindr staff and developer accounts cannot connect. Missing account details (name, date of birth, phone number or acceptance of the Terms) are collected before approval.
New accountsA client account can be created during sign-in. DJ accounts are created on DJfindr first.
TokensAn access token lasts one hour. The connector offers offline_access, so the assistant can refresh it for up to 30 days; each refresh issues a new refresh token.
DisconnectingRevoke the connection on DJfindr, in Settings > Integrations > Connected apps (DJs) or Settings > Account > Connected apps (clients), to end it immediately. Removing the connector from the assistant stops it from using the token.
DiscoveryA call to an account tool without a token returns 401 with a WWW-Authenticate header pointing to https://mcp.djfindr.com/.well-known/oauth-protected-resource, which names DJfindr's authorization server. ChatGPT reads each tool's securitySchemes and the same challenge in the tool result (mcp/www_authenticate). The protected resource is https://mcp.djfindr.com.

Account tools

The server provides one tool for each Management API endpoint, except the two that carry file bytes; import_file and get_upload_link add files instead. The tools an assistant sees depend on three factors:

FactorEffect
Approved scopesA tool appears only when its scope was approved. Without bookings:write, for example, request_booking and send_offer are not listed. To add a scope, connect again and approve it.
PlanA DJ without the Platinum plan who connects a third-party MCP client still sees every account tool, and each one answers code: "plan_required" without doing anything, so the assistant can explain why. Catalog tools keep working. Claude and ChatGPT are not affected.
Account sideA client sees client booking tools (request_booking, reject_offer, withdraw_booking, get_checkout_link, reviews and extension requests). A DJ sees DJ tools (accept_request, edit_offer, send_offer, documents, the profile, mixes, posts, live events, PayLinks, payouts, refunds, the calendar and its integrations, and analytics). Messages, files and search are available to both. An account that is both a client and a DJ sees both sets. The side is determined with account:read; without that scope, tools follow the scopes alone.

DJfindr checks the scope, the account side and record ownership on every call, as it does for any connected application.

Confirmation of changes

Every tool that changes data takes two calls. The first call changes nothing.

  1. The first call validates the change as DJfindr would (unknown fields, invalid values, missing access) and refuses it with the field named. A valid change returns a summary of what will happen and a confirm_token. For request_booking, the summary is the full validation of the request, warnings included, the same as ?dry_run=true. For an action on a booking (accepting a request, sending, editing or rejecting an offer, declining, withdrawing), it shows the booking's current state.
  2. The assistant presents the summary. After the person agrees, the assistant calls the tool again with the same arguments and the confirm_token, and the change is made once.
PropertyDetail
Lifetime15 minutes.
ScopeThe same tool, the same arguments and the same connection.
RepeatsA repeated confirmation is never applied twice.
Changed recordsIf the booking changed between the summary and the confirmation, nothing is done and the assistant reads the booking again.

Reads and links take one call. An assistant's own permission prompts apply in addition to this confirmation.

Actions completed on DJfindr

An assistant never accepts an offer, signs documents or pays, pays a balance or an extension, cancels a paid booking, issues a DJ's refund or blocks someone. For each of these it creates an action link (get_checkout_link, get_pay_link, get_cancel_link, get_refund_link, get_block_link) and gives it to the person, who opens it on DJfindr, signed in as themselves, and confirms there. A link works only for the person it was created for.

Updates

whats_next returns the updates feed: changes to the person's bookings, payments, messages and links, oldest first. The assistant passes the response's cursor as since on the next call; without it, the feed covers the last 24 hours. Items carry ids and statuses, and the assistant reads the booking or payment for details. A booking.confirmed item means the booking is confirmed.

Untrusted content

Much of what the connector reads is written by people rather than DJfindr: offer notes and documents, request notes, messages, reviews, bios and captions. Every such field is marked untrusted. The text result encloses it in <untrusted-data> tags, and the structured result lists its paths in untrusted_fields. The connector instructs the assistant to treat this text as information to show the person, never as instructions. Actions that spend money or give consent always require the person, on DJfindr.

Interactive views

In assistants that support MCP Apps (Claude on web, desktop and mobile, ChatGPT, VS Code Copilot and others), results also render as DJfindr views beside the answer: profile cards for a shortlist, a full profile with a request button, a genre or occasion page, and a city page. Profiles, reviews and mixes can be browsed inside the view; requesting a DJ opens djfindr.com. Assistants without MCP Apps receive the same text answer.

Limits and protocol

Detail
Without sign-in300 requests per minute per IP address. Assistants reach the server from a small number of shared addresses, so the limit is set high. Developers can send an API key with catalog:read to use their key's rate limit instead.
Signed in100 requests per minute for each person and application, the same as any connected application. Account responses are sent with Cache-Control: private, no-store.
TransportStreamable HTTP, stateless, POST only.
Protocol versions2026-07-28 (with server/discover), and 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05 through the initialize handshake.