# Clients

Any MCP client that supports Streamable HTTP and OAuth sign-in can use PorchQ. The address is always `https://porchq.com/mcp`; the client finds everything else from the server.

## Claude

**Free, Pro and Max plans:** on claude.ai or in the desktop app, go to **Customize → Connectors → Add custom connector**. Enter a name and `https://porchq.com/mcp`. Under Authentication, Claude detects **Sign in now**; under OAuth client, it detects **Use Claude's published identity**. Choose **Add**, then **Connect**, and PorchQ's consent page opens in your browser.

**Team and Enterprise plans:** an Owner adds it under **Organization settings → Connectors → Add → Custom → Web**; members then choose **Connect** under **Customize → Connectors**.

What PorchQ sees from Claude:

- Claude identifies itself with its client ID metadata document, `https://claude.ai/oauth/mcp-oauth-client-metadata`, so the consent page shows "Claude" and where its details came from.
- Its redirect address is `https://claude.ai/api/mcp/auth_callback`.
- Claude asks for `server/discover` (revision `2026-07-28`) first, and falls back to `initialize` on older servers.
- Anthropic's servers call from `160.79.104.0/21`, useful if you put PorchQ behind your own proxy.

A connector added on claude.ai also appears in Claude Code when you're signed in with the same Claude account.

## Claude Code

```bash
claude mcp add --transport http porchq https://porchq.com/mcp
```

Run `/mcp` inside Claude Code and choose `porchq` to sign in. Claude Code listens on your own computer for the answer, so PorchQ's consent page notes that the app runs on your computer.

## ChatGPT

PorchQ's app for ChatGPT isn't listed in ChatGPT yet; see [PorchQ in ChatGPT](/chatgpt) for its status. Until then, connect PorchQ through developer mode.

Developer mode is available on ChatGPT Business, Enterprise and Edu, on the web only. (Pro users can connect apps with read and fetch permissions only.)

1. **Turn it on.** Business: an admin or owner turns it on under **Settings → Apps → Advanced settings → Developer mode**. Enterprise and Edu: an admin grants it under **Workspace Settings → Permissions & Roles → Connected Data**, then the person turns it on under **Settings → Apps → Advanced settings**.
2. **Add PorchQ.** Under **Settings → Apps → Create** (or **Workspace settings → Apps → Create** for admins), enter `https://porchq.com/mcp`, choose **OAuth**, choose **Scan Tools**, complete PorchQ's sign-in, then **Create**. PorchQ appears with a "Dev" label.

ChatGPT identifies itself with its client ID metadata document, `https://chatgpt.com/oauth/client.json`.

ChatGPT reads sign-in requests from inside a tool result as well as from the HTTP header, so every `401` and `403` from a tool call also carries `_meta["mcp/www_authenticate"]`; see [Errors and limits](/developers/mcp/errors-and-limits#a-tool-call-without-a-token).

## MCP Inspector

```bash
npx @modelcontextprotocol/inspector
```

Choose Streamable HTTP, enter `https://porchq.com/mcp` and connect. The Inspector registers itself (dynamic client registration), runs the sign-in, then lets you list tools and call them one at a time with the raw requests and responses shown.

## Your own client

Use an official [MCP SDK](https://modelcontextprotocol.io/docs/sdk). The TypeScript and Python SDKs speak Streamable HTTP and run the OAuth flow, given:

- the server address `https://porchq.com/mcp`;
- your client's identity: the URL of your client ID metadata document, or let the SDK register;
- a redirect address: `https`, or a loopback address on any port for a desktop or command-line tool;
- somewhere to keep tokens.

Then follow these rules, which PorchQ's tools assume:

- Pass `property_id` on every tool call.
- Send an `idempotency_key` with every change, and reuse it when you retry.
- Read `scope` in the token response and offer only what was granted.
- On `401`, refresh; on `403` with `insufficient_scope`, ask the person for more.
- Respect `Retry-After` on `429`.

Without an SDK, [Sign-in and tokens](/developers/mcp/authorization) and [Protocol](/developers/mcp/protocol) describe every request and response.

## Scripts and servers

Every connection today starts with a person signing in through a browser. A script on a server needs that person to sign in once (for example with a loopback redirect on their computer); it can then refresh for as long as it keeps being used.
