Instant Roofer MCP
Connect your assistant
All clients use the same server URL: https://mcp-staging.instantroofer.com/mcp. The first time you use a tool, a browser window opens so you can sign in to Instant Roofer and approve what the assistant may do. No account yet? The same window creates one: verify your mobile number, fill in four fields, and approve. Free, about a minute, no card.
Cursor
One click: Add Instant Roofer to Cursor
Or by hand: add this to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global), then open Settings → Tools & MCP and click Connect:
{
"mcpServers": {
"instant-roofer": {
"url": "https://mcp-staging.instantroofer.com/mcp"
}
}
}
Claude (claude.ai, Claude Desktop, Claude Code)
- claude.ai / Desktop: Settings → Connectors → Add custom connector, paste the server URL, then click Connect and sign in.
- Claude Code:
claude mcp add --transport http instant-roofer https://mcp-staging.instantroofer.com/mcp
OpenAI Codex (CLI and IDE extension)
codex mcp add instant-roofer --url https://mcp-staging.instantroofer.com/mcp
codex mcp login instant-roofer
Or in ~/.codex/config.toml:
[mcp_servers.instant_roofer]
url = "https://mcp-staging.instantroofer.com/mcp"
Grok (grok.com and grok CLI)
- grok.com: open Connectors → New Connector → Custom, paste the server URL, and complete sign-in.
- grok CLI:
grok mcp add --transport http instant-roofer https://mcp-staging.instantroofer.com/mcp
ChatGPT
Enable Settings → Connectors → Advanced → Developer mode, choose Create, paste the server URL, and select OAuth authentication.
Hermes Agent
One click: Add Instant Roofer to Hermes (Hermes desktop app)
Or by hand: add this to your Hermes config, then run /reload-mcp or hermes mcp login instant-roofer:
mcp_servers:
instant-roofer:
url: "https://mcp-staging.instantroofer.com/mcp"
auth: oauth
OpenClaw
openclaw mcp add instant-roofer --url https://mcp-staging.instantroofer.com/mcp --transport streamable-http --auth oauth
openclaw mcp login instant-roofer
What happens after you click Allow access
- Cursor opens itself; the browser tab stays on Instant Roofer and confirms once Cursor has connected.
- claude.ai, ChatGPT, Grok return you to their own site.
- Hermes, OpenClaw, Codex CLI, Claude Code, grok CLI and other command-line agents run on your computer, so the browser hands the result to them at a
localhostaddress. You land on a plain page from the agent saying the authorization succeeded. That page is the agent itself, not an error: close it and go back to the agent. If the agent runs on another machine (for example over SSH), that page cannot load; copy the full URL from the address bar and paste it into the agent's prompt, or use its--codeoption.
"Cannot be completed" after an update
If the sign-in page says the assistant asked us to send the result to an address it never registered, the assistant is holding a registration from before it was updated or reconfigured. Disconnect from Instant Roofer inside the assistant and connect again so it registers afresh, then retry:
- OpenClaw:
openclaw mcp logout instant-roofer, thenopenclaw mcp login instant-roofer - Hermes:
hermes mcp login instant-roofer - Codex:
codex mcp logout instant-roofer, thencodex mcp login instant-roofer - Cursor, Claude, ChatGPT, Grok: remove the Instant Roofer server or connector and add it again
Building your own client or agent
Any MCP client that supports Streamable HTTP and OAuth 2.1 works. Discovery documents:
- Protected resource metadata:
https://mcp-staging.instantroofer.com/.well-known/oauth-protected-resource - Authorization server metadata:
https://mcp-staging.instantroofer.com/.well-known/oauth-authorization-server
Clients may register with a Client ID Metadata Document (preferred) or Dynamic Client Registration. Loopback http://127.0.0.1:*, http://localhost:*, http://[::1]:* (interchangeable, any port, same path) and private-use app-scheme redirect URIs are accepted for native clients. There is no client-update endpoint: if your redirect URI changes, register again rather than reusing the old client_id.
Token endpoint authentication: none (public clients with PKCE) or private_key_jwt (a signed client assertion verified against the keys in your jwks/jwks_uri, RS/PS/ES algorithms). Dynamically registered clients may also use client_secret_basic or client_secret_post.