# Connect AI apps (/connect)

Fieldgeist runs an [MCP](https://modelcontextprotocol.io) server, so AI apps can use Verify as a tool: an agent parses an address, matches it to a parcel and asks you for a missing unit, on its own.

```text
https://mcp.fieldgeist.com/mcp
```

Add that URL to the app, sign in to Fieldgeist with the code we email you, pick the team the app should use, and allow it. Each tool call is billed to that team like the equivalent API request (see [Credits and billing](/billing)). You can disconnect an app anytime from **Team → Connected apps** in the portal.

## ChatGPT [#chatgpt]

In ChatGPT, open [Plugins](https://chatgpt.com/plugins), select **+**, then **Add custom MCP server**. Give it a name, enter the URL above under **Connection**, choose OAuth, and select **Create as a plugin**. Sign in to Fieldgeist, pick a team and allow. Install the plugin, start a new conversation, type `@` and pick Fieldgeist.

If you connected before we changed the tools, open the plugin under [Plugins](https://chatgpt.com/plugins) and select **Refresh**.

## Claude [#claude]

In claude.ai or Claude Desktop, go to **Settings → Connectors → Add custom connector**, paste the URL and select **Connect**. Sign in, pick a team and allow.

## Claude Code [#claude-code]

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

Then run `/mcp` in Claude Code and sign in. To use an API key instead of signing in (for CI or a shared machine):

```bash
claude mcp add --transport http fieldgeist https://mcp.fieldgeist.com/mcp \
  --header "Authorization: Bearer $FIELDGEIST_API_KEY"
```

## Cursor [#cursor]

Add the server to `.cursor/mcp.json` (or **Settings → MCP**), then sign in when Cursor asks:

```json
{
  "mcpServers": {
    "fieldgeist": { "url": "https://mcp.fieldgeist.com/mcp" }
  }
}
```

An API key works here too: add `"headers": { "Authorization": "Bearer fg_live_…" }` to the server entry.

## Tools [#tools]

| Tool | Does | Requests |
| --- | --- | --- |
| `verify_address` | Free text to the standardized address and its parcel, in one call | A parse, then a lookup when the address is a street address with a ZIP or city |
| `parse_address` | Free text to USPS components with [US-LEX-1](/models/us-lex-1) | A parse |
| `lookup_parcel` | Parsed components to a parcel | A lookup |
| `get_parcel` | One parcel by its [Fieldgeist ID](/fieldgeist-ids) | A lookup by ID |

All four only read data. A fifth tool, `get_profile`, tells the app which person and team the connection belongs to (ChatGPT uses it to tell two connections apart). It is free and runs no request. Their answers are the same JSON as the [API reference](/api-reference/verify/parse) describes, with a one-line summary first, so the agent reads statuses such as `ambiguous` and `unit_required` the same way your code would.

## What the app can do [#what-the-app-can-do]

An app you connect can run these tools for the team you picked, and spend that team's credits. It can't see your API keys, billing details or team members. Its requests show in the portal's **Logs** with the source **MCP**.

Sign-in uses OAuth 2.1 with PKCE; the app gets a token that only works with this server, expires after 15 minutes and is renewed while the app is in use. Disconnecting stops it within 15 minutes.
