# MCP server

> Connect Claude, ChatGPT, Cursor or Claude Code to https://youspot.com/mcp/v1 and let an agent read and write your own CRM.

YouSpot runs a Model Context Protocol server at `https://youspot.com/mcp/v1`. Transport is streamable HTTP; auth is OAuth 2.1, so a client that speaks MCP can connect with no key pasted anywhere.

## Connect a client

### Claude

Settings, Connectors, Add custom connector, then paste `https://youspot.com/mcp/v1`. Claude registers itself and opens the consent screen.

### ChatGPT

Settings, Connectors, Create, then paste `https://youspot.com/mcp/v1` and choose OAuth. ChatGPT registers dynamically the same way.

### Claude Code

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

### Cursor

Add this to `~/.cursor/mcp.json`:

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

## What the tools do

| Family | What it covers |
| --- | --- |
| Brain graph | Search, read and write the objects in your graph: people, companies, notes, files. |
| Attention | What needs you today: unanswered threads, stale follow-ups, upcoming meetings. |
| LinkedIn | Query your imported connections and the companies behind them. |
| Gmail | Read threads, draft and send mail from a connected mailbox. |
| Google Calendar | Read events for context on who you are about to meet. |
| HubSpot | Read and sync contacts and companies with a connected portal. |
| Company research | Research a company and file the result as an object. |
| Prospecting | Find people and companies that match a description. |
| Files and imports | Import a file and read what was extracted from it. |
| Domains | Value and suggest domain names. |
| Slack, X/Twitter, Obsidian | Read from the other sources a member has connected. |

## What it is not

This is not a public web search and not a shared directory. Every tool call is scoped to the signed-in member, so an agent asking "who do I know at Acme" gets that person's network and nobody else's.

## Calling it directly

The server is plain JSON-RPC over HTTP POST. `initialize`, `ping` and `tools/list` answer without a credential, so you can handshake and read the tool list before anyone has signed in:

```bash
curl -X POST https://youspot.com/mcp/v1 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

Every `tools/call` needs an OAuth access token or a member API token, because every tool reads one person's own CRM. See [Authentication](https://youspot.com/docs/authentication) or the machine walkthrough at [auth.md](https://youspot.com/auth.md).

```bash
curl -X POST https://youspot.com/mcp/v1 \
  -H "Authorization: Bearer $YOUSPOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_connections_summary","arguments":{}}}'
```

## Machine descriptions

| Document | What it holds |
| --- | --- |
| [Server card](https://youspot.com/.well-known/mcp/server-card.json) | The endpoint, the transport, the protocol versions and every tool. Built from the live tool table, so it cannot claim one that does not exist. `GET /mcp/v1` returns the same document. |
| [auth.md](https://youspot.com/auth.md) | Discover, register, consent, exchange, call, revoke. In that order, with runnable requests. |
| [api-catalog](https://youspot.com/.well-known/api-catalog) | RFC 9727 linkset pointing at the card, the docs and the OAuth metadata. |

`https://youspot.com/mcp` still answers for every client that already has it, so nothing that is connected today has to change. `/mcp/v1` is the URL every discovery document advertises.
