QuarterMaster QuarterMaster MCP
Model Context Protocol

QuarterMaster MCP Server

Connect AI assistants, Claude Desktop, Cursor, and agentic LLMs directly to the KARAT QuarterMaster equestrian management platform.

Overview

The KARAT QuarterMaster API doubles as an official Model Context Protocol (MCP) server via fastapi-mcp. Every REST endpoint mounted under /api/v1 (except browser push notifications) is automatically exposed as a typed, structured MCP tool.

LLM agents operating through MCP execute with the exact same permissions and tenancy boundaries as the authenticated user.

Connection Specification

Server Endpoint
https://api.quarter-master.ai/mcp
Transport Protocol
Streamable HTTP
Authentication
OAuth 2.1 + PKCE
Discovery
/.well-known/oauth-protected-resource

Connecting

Paste the endpoint above into your client. Nothing else is configured — the sign-in flow is discovered from the endpoint itself, and you log in with the same account you use for the web app.

Claude Code is not supported. It binds a different loopback port each session, and Auth0 accepts no port wildcard in a callback URL.

Authentication & Multi-Tenancy

An unauthenticated call to the endpoint answers 401 with a WWW-Authenticate header naming this server's protected-resource metadata. Your client follows that to the authorization server, registers itself, and runs authorization code with PKCE. Auth0 authenticates you; the token it issues carries your stable memberships.

POST /mcp                                  → 401 WWW-Authenticate: Bearer resource_metadata="…"
GET  /.well-known/oauth-protected-resource → the authorization server
GET  /.well-known/oauth-authorization-server → authorize, token, register
POST /mcp  Authorization: Bearer …         → tools

Most tools act on one stable, and you do not have to say which:

Tenancy check: whichever way the stable is resolved, it is authorized against the https://karat-equestrian.com/stables claim on your access token. A stable you are not a member of returns 403, and a stored choice you have since left resolves to nothing rather than to access.

Tool Catalog & Naming Conventions

48 of the API's operations are exposed, named {action}_{resource} after their OpenAPI operation_id:

Every tool carries a title and behaviour annotations, so a client knows which calls only read and which change something before it runs them.

Not exposed: the AI harness endpoints, system-prompt overrides, background jobs, web search, browser push, sensor provider credentials, and stable administration — machinery for the web app rather than for an assistant.