Connect an assistant
Milestone keeps one approved set of freelance milestone definitions, and what done means, for ChatGPT, Claude, Gemini, Grok, Cursor, and any other MCP client that speaks Streamable HTTP and OAuth. It is not a ChatGPT-only plugin. Milestone tools need Pro or an active trial. A new subscription includes a 14-day trial.
Shared connection
MCP address:
https://milestone-continuity2.vercel.app/mcp
Transport: Streamable HTTP. Sign in with your Milestone account when the assistant opens OAuth. Dynamic client registration is supported, so leave the client id and secret empty. Do not paste an API key, access token, or password into a header or into the chat.
An unauthenticated tool call returns 401 with a WWW-Authenticate challenge pointing at https://milestone-continuity2.vercel.app/.well-known/oauth-protected-resource/mcp. That document names the OAuth issuer. The issuer registers clients. Ask for the email scope, and offline_access when the client can refresh tokens.
- Sign in and start a trial if you have not already.
- Add the MCP address using the steps below.
- Approve Milestone, then ask the assistant to read the milestone set before it answers.
ChatGPT
- Enable custom MCP connectors if your workspace requires it.
- Create a custom app and enter the MCP address.
- Choose OAuth, leave client credentials empty, and approve Milestone.
Claude
- Add a custom connector and paste the MCP address.
- Choose OAuth and register the client automatically. Do not put a token in request headers.
- Approve Milestone, then enable the connector in the chat.
Claude Code:
claude mcp add --transport http milestone https://milestone-continuity2.vercel.app/mcp
Do not pass an Authorization header. In a JSON config, set "type": "http" next to url.
Gemini
- In the Gemini web app, open Settings, then Connected apps.
- Add a custom app and paste the MCP address.
- Leave advanced credentials empty. Milestone's authorization server registers the client.
Gemini CLI:
gemini mcp add --transport http --scope user milestone https://milestone-continuity2.vercel.app/mcp
Do not set an Authorization header.
Grok
- Open grok.com/connectors.
- Choose a custom connector and paste the MCP address.
- Finish the sign-in Grok presents.
grok mcp add --transport http milestone https://milestone-continuity2.vercel.app/mcp
Do not set an Authorization header. The xAI API's static bearer field is not a Milestone API key. Use a client that performs OAuth.
Cursor and other MCP clients
In ~/.cursor/mcp.json or a project .cursor/mcp.json:
{
"mcpServers": {
"milestone": {
"url": "https://milestone-continuity2.vercel.app/mcp"
}
}
}
Do not add headers or a static client id. Cursor registers a client and opens sign-in. Any other client can use the same address when it supports Streamable HTTP, OAuth with PKCE, and dynamic client registration. Clients that call from their own servers should omit a browser Origin. Browser calls are accepted only from Milestone and the assistant sites on the server allowlist.
After it connects
Ask the assistant to call read_milestone_set before it talks about a milestone, what done means, whether a milestone is complete, or whether the next payment is released. Completion and payment release need every saved acceptance criterion to be met. An extra deliverable and unsaved work are refused. If a tool refuses, the assistant must stop rather than invent a workaround.
When you run this server yourself, the address above is the configured base URL. This repository does not publish a separate production domain.