Pav runs a remote Model Context Protocol
server. Every read endpoint of the API is an MCP tool, so an agent can search
programs, trials, deals, patents and FDA records and cite the records it used.
Connect a client
Claude Code
Claude Desktop
Cursor
Python
Verify with claude mcp list, or type /mcp inside Claude Code. Claude Desktop reaches remote servers that need a header through the
mcp-remote adapter (requires
Node.js 18+). Open Settings → Developer → Edit Config and add:claude_desktop_config.json
Restart Claude Desktop. The Pav tools appear under the tools menu in a new
chat. Keep Authorization:${PAV_AUTH_HEADER} without a space after the
colon; the value comes from env. Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one
project):Check Settings → MCP shows pav with its tools. Use the FastMCP client: pip install fastmcp.
Any other MCP client that supports streamable HTTP and custom headers works
with the same URL and header.
Each tool is one API endpoint. Its arguments are the endpoint’s parameters and
its result is the endpoint’s JSON response. The dataset pages describe the
fields and filters.
Resolve a company name with list_companies first, then pass its company_id
to list_company_programs, list_deals, list_patents, list_fda_records or
list_changes.
Example prompts
- “Which KRAS G12C inhibitors are in Phase 3, and who owns them?”
- “List recruiting Phase 3 obesity trials and their sponsors.”
- “What are the five largest biopharma acquisitions by headline value? Cite the source filing for each.”
- “Which live US patent families does Eli Lilly own that mention tirzepatide, and when do their statutory terms end?”
- “List the Orange Book patents and exclusivities for Mounjaro and when each expires.”
- “What changed in Eli Lilly’s pipeline since June 1?”
- “Find programs similar to Merck’s calderasib.”
Errors and limits
- A missing or invalid key returns HTTP
401 before any MCP message is
handled.
- An API error inside a tool, such as an unknown
deal_id, returns an MCP tool
error that carries the API’s { error: { code, message, request_id } } body.
- Each tool call counts as one request toward your key’s
rate limit. Connecting and listing tools do not count.