IUPHAR/BPS Guide to PHARMACOLOGY (GtoPdb) MCP — keyless. Expert-curated pharmacology database of drug targets, ligands, and their interactions.
Four well-named, read-only tools with complete input schemas and strong descriptions (avg 180 chars). All parameters are typed and described. Tool names follow verb_noun pattern (search_*, target_interactions, ligand_interactions). Descriptions clearly state purpose, use case, and relationship to other tools. However, output schemas are not formally documented, only inferred from code. Error handling returns generic error objects without recovery guidance. No parameter constraints (enums, ranges) despite opportunities (e.g., limit defaults). Missing tool annotations (readOnlyHint). Composition is sound: search tools feed into interaction tools via ID chaining.
List the quantitative target interactions for a drug ligand in the Guide to PHARMACOLOGY (IUPHAR/BPS). Given a GtoPdb ligand id (from search_ligands), returns the protein targets it acts on with interaction type (Agonist/Antagonist/Inhibitor/etc.), action, and binding affinity (e.g. pKi/pIC50). Keyless.
Search the Guide to PHARMACOLOGY (IUPHAR/BPS) — an expert-curated pharmacology database — for drug ligands by name. Returns matching ligands with their GtoPdb ligand id, type (e.g. Synthetic organic, Peptide, Antibody, Metabolite), and approval status. Use the returned ligand id with ligand_interactions to find which protein targets it acts on. Keyless. Complements ChEMBL/DrugBank.
Search the Guide to PHARMACOLOGY (IUPHAR/BPS) — an expert-curated pharmacology database — for protein targets by name. Returns matching targets with their GtoPdb target id, abbreviation, and type (e.g. GPCR, CatalyticReceptor, Enzyme, Transporter). Use the returned target id with target_interactions to find ligands that bind it. Keyless. Complements ChEMBL/DrugBank.
List the quantitative ligand interactions for a protein target in the Guide to PHARMACOLOGY (IUPHAR/BPS). Given a GtoPdb target id (from search_targets), returns the ligands acting on it with interaction type (Agonist/Antagonist/Inhibitor/etc.), action, and binding affinity (e.g. pKi/pIC50). Keyless.
Output schemas not formally documented. Code infers response structure (e.g., {count, ligands}, {count, targets}, {target_id, count, interactions}), but no JSON Schema or TypeScript interface is exposed to the MCP client. LLMs cannot plan downstream operations without knowing what fields to expect.
Error handling returns generic {error: string} without recovery guidance. E.g., 'GtoPdb: 404' tells the LLM nothing about whether to retry, call a different tool, or ask the user. Should include error classification (retryable, user-fixable, fatal) and actionable next steps.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All four tools are read-only and idempotent, but this is not declared in the tool definition. Clients cannot infer safety properties without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Parameter 'limit' lacks constraints. Defaults are sensible (15, 25), but no min/max bounds are declared. An LLM could pass limit=999999, causing excessive API load or timeout. Should specify limit: {type: 'number', minimum: 1, maximum: 100}.
No pagination support. Tools slice results client-side (limit parameter) but do not return total_count or next_cursor. If GtoPdb returns 1000 ligands matching 'aspirin', the tool silently truncates to 15. LLM cannot know if more results exist or how to fetch them.