Using an agent (MCP)

You can use Ptarmigan-1 from an AI agent through its MCP server. An agent connected to it can find targets and libraries, estimate and run screens, and read the results, all on your account.

Create an API key

Create a key on the API keys page. It appears only once, right after you create it, so copy it with Copy key before you leave the page.

A key acts as your account: it sees your libraries and spends your balance. Treat it like a password, and keep it out of code, notebooks and chats you share. If a key may have leaked, revoke it on the API keys page straight away and create a new one. Give each agent its own key, and revoke any key you no longer use.

Connect a client

The server is at https://ptarmigan.app/api/v1/mcp (Streamable HTTP). Every request carries the key as Authorization: Bearer <key>. Where your client allows it, also set a descriptive User-Agent, such as acme-screen-mcp/1.0. If Cloudflare returns 403 with error code: 1010, see Errors.

Claude Code: put the key in an environment variable, then add the server. The command reads the key from the variable, so it stays out of your shell history:

export PTARMIGAN_API_KEY=...        # from the API keys page
claude mcp add --transport http ptarmigan https://ptarmigan.app/api/v1/mcp \
  --header "Authorization: Bearer $PTARMIGAN_API_KEY" \
  --header "User-Agent: acme-screen-mcp/1.0"

Claude Desktop connects through mcp-remote, which needs Node.js. Add to claude_desktop_config.json:

{
  "mcpServers": {
    "ptarmigan": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://ptarmigan.app/api/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer <your API key>" }
    }
  }
}

Cursor: add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "ptarmigan": {
      "url": "https://ptarmigan.app/api/v1/mcp",
      "headers": { "Authorization": "Bearer <your API key>" }
    }
  }
}

Other clients: any MCP client that can send a custom header over Streamable HTTP works with the same URL and header.

claude.ai: add Ptarmigan-1 as a custom connector.

  1. Go to Customize > Connectors and choose Add custom connector.
  2. Enter a name, such as Ptarmigan-1, and the URL https://ptarmigan.app/api/v1/mcp.
  3. Under Authentication, choose No sign-in. Ptarmigan-1 takes an API key, not a sign-in.
  4. Under Request headers, choose the authorization header and enter Bearer followed by your key, with the space: Bearer <your API key>. claude.ai sends the value exactly as you enter it, so without Bearer every request is refused.
  5. Choose Add.

claude.ai doesn't show the key again, and you can't edit a connector's authentication. To use a new key, remove the connector and add it again.

Request headers is a claude.ai beta that not every account has yet. If your Add custom connector dialog has no Request headers section, connect from Claude Code or Claude Desktop instead. On a Team or Enterprise plan, an Owner adds custom connectors for the whole organization, and every member's requests then carry the key the Owner entered. That key spends the balance of the account that created it, so add Ptarmigan-1 this way only if everyone in the organization should screen on that account.

What the agent can do

Tool Does
list_proteins Find targets by gene, name or accession
list_compound_collections, get_compound_collection List libraries and check whether one is ready
get_balance Read the balance
estimate_screen Price a screen before running it
create_screen Queue a screen (this spends the balance)
list_screens, get_screen, cancel_screen Follow or cancel screens
get_screen_hits Read the top of a ranking (25 per page unless it passes limit)
get_screen_download Get a link to the full ranking as Parquet or CSV
get_screen_compound_detail One compound against the target, residue by residue

Uploading and deleting libraries are not MCP tools; use the web app or the REST API.

Example prompts

Start a conversation by naming Ptarmigan-1, so the agent knows to use its tools:

Tips