Connect your AI to migratelms.com.
Pick the section for the client you use. Each one is a single copy-paste; nothing to install, no auth to configure. The same four tools (get_migration_quote, create_checkout_session, list_migration_paths, get_status) show up in every client.
Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json (or the equivalent on Windows / Linux) and merge in:
{
"mcpServers": {
"migratelms": {
"url": "https://migratelms.com/api/mcp"
}
}
}Restart Claude Desktop. The four migratelms tools register as a new MCP server. Ask Claude "what migrations do you support?" to verify.
Claude Code
One-line install:
claude mcp add --transport http migratelms https://migratelms.com/api/mcpThen /mcp in any Claude Code session lists the registered tools.
Cursor
Cursor → Settings → Cursor Settings → MCP → Add new MCP server. Or edit ~/.cursor/mcp.json directly:
{
"mcpServers": {
"migratelms": {
"url": "https://migratelms.com/api/mcp"
}
}
}Reopen Cursor; the tools appear in the MCP panel.
Continue (VS Code / JetBrains)
Add to ~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "http",
"url": "https://migratelms.com/api/mcp"
}
}
]
}
}Zed
Add to your Zed settings.json via Cmd-, → Open JSON:
{
"context_servers": {
"migratelms": {
"command": null,
"url": "https://migratelms.com/api/mcp"
}
}
}ChatGPT (Custom GPT)
ChatGPT doesn't speak MCP yet. The native path is a Custom GPT with Actions. Build a new GPT in the GPT Builder and import the OpenAPI:
https://migratelms.com/openapi.jsonIn the GPT Builder, choose Configure → Actions → Import from URL, paste the URL above, save. Auth: None. The four endpoints register as callable actions.
Gemini API / Vertex AI
Gemini doesn't auto-discover, but the function-declarations file registers all four tools in one fetch. Python:
import json, urllib.request
from google import genai
from google.genai import types
with urllib.request.urlopen("https://migratelms.com/.well-known/gemini-tools.json") as r:
spec = json.load(r)
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.0-flash",
contents="Quote a Thinkific to LearnDash migration with 12 courses, 300 videos, 2000 users.",
config=types.GenerateContentConfig(
tools=[types.Tool(function_declarations=spec["function_declarations"])]
),
)For AI Studio's UI: Tools → Function Calling → paste the contents of /.well-known/gemini-tools.json into the function declarations field.
Test the connection from a terminal
Want to confirm the MCP endpoint is alive before wiring anything? Hit it with curl:
curl -X POST https://migratelms.com/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'You should see a JSON-RPC response listing the four tools and their schemas. If you see anything else, the issue is client-side, not server-side — the endpoint is stateless and always reachable.
What does "connect" actually do?
Once connected, your agent can call our REST API as if it were a built-in tool. A user can ask "Get me a quote for migrating 12 Thinkific courses to LearnDash, 300 videos, 2000 users." The agent calls get_migration_quote, returns a tier and price range, and offers to call create_checkout_session if the user wants to proceed. The agent surfaces the Stripe URL for the user to click. We invoice like normal and email the post-sale intake link from the same flow a human visitor would hit at /contact. No human in the loop on our side; no scraping on yours.
The full surface inventory and constraint list lives at /agents.txt. Tooling-specific issues: hello@migratelms.com.