# Working with Other Clients (Agent)

Operationally inert. The setup is client-side and the user's responsibility.
What matters to you: regardless of the client, your tool surface is
identical. Same MCP, same tools, same semantics, same error codes.

## Client requirements (what makes one work)

A compatible MCP client must:

- Speak **MCP streamable HTTP** transport.
- Support **OAuth 2.1** with PKCE and DCR (RFC 7591).

If the user is using a client that only supports stdio MCP servers, it
cannot connect to Markbase. There's no local binary.

## Known-working clients

- Anthropic: Claude Code, Claude Desktop, Claude.ai.
- Cursor.
- Zed.
- Recent VS Code MCP-aware extensions.

If a user's client isn't on this list but supports HTTP MCP + OAuth, it
should work with `https://api.markbase.cloud/mcp`.

## Building a client (reference)

Standard OAuth 2.1 + MCP-over-HTTP. Sequence:

1. Discover AS metadata at `/.well-known/oauth-authorization-server`.
2. DCR at `/oauth/register` if no `client_id`.
3. PKCE authorize at `/oauth/authorize` (user signs in via Markbase →
   `app.markbase.cloud`).
4. Exchange code at `/oauth/token`.
5. Connect to `/mcp` with `Authorization: Bearer <access_token>`.

See [/agents/mcp/authentication.md](/agents/mcp/authentication.md).

## What does NOT work

- **Self-hosting** Markbase. Hosted only.
- **API keys / personal access tokens.** OAuth only.
- **stdio MCP.** HTTP only.
- **The dashboard's REST API** — it exists but is undocumented / unstable.
  Don't program against it. Use MCP.

## Next

- [/agents/mcp/authentication.md](/agents/mcp/authentication.md)
- [/agents/mcp/tools.md](/agents/mcp/tools.md)
- [/agents/mcp/claude.md](/agents/mcp/claude.md)