
Drug Discovery Search
- 16 installs
- 869 repo stars
- Updated June 8, 2026
- beita6969/scienceclaw
drug-discovery-search is a Claude skill that runs natural-language semantic search across ChEMBL, DrugBank, FDA drug labels and Open Targets using Valyu's API.
About
This skill searches major drug discovery databases (ChEMBL, DrugBank, FDA drug labels, Open Targets) at once using natural-language queries powered by Valyu's semantic search API. A researcher uses it for target validation, lead optimization, drug repurposing and safety assessment. It requires a Valyu API key and returns unified, source-tagged results with structure images.
- Searches ChEMBL, DrugBank, FDA drug labels and Open Targets simultaneously with natural language
- Powered by Valyu's semantic search API; needs a Valyu API key
- Returns unified compound, target and drug results with structure image links
Drug Discovery Search by the numbers
- 16 all-time installs (skills.sh)
- Ranked #1,318 of 2,065 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
drug-discovery-search capabilities & compatibility
Requires a Valyu API key ($10 free credits); example query cost 0.035
- Capabilities
- drug database search · semantic search · target validation
- Use cases
- research · web search · data analysis
- Runs
- Runs locally
- Pricing
- Bring your own API key
What drug-discovery-search says it does
Search across all major drug discovery databases (ChEMBL, DrugBank, FDA drug labels, Open Targets) simultaneously using natural language queries powered by Valyu's semantic search API.
Valyu API key from https://platform.valyu.ai ($10 free credits)
npx skills add https://github.com/beita6969/scienceclaw --skill drug-discovery-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 16 |
|---|---|
| repo stars | ★ 869 |
| Last updated | June 8, 2026 |
| Repository | beita6969/scienceclaw ↗ |
What it does
Run natural-language semantic search across ChEMBL, DrugBank, FDA labels and Open Targets via the Valyu API.
Who is it for?
Cross-database natural-language search over compounds, targets, drug labels and target-disease data.
Skip if: Offline use or workflows that cannot obtain a Valyu API key.
When should I use this skill?
You need unified drug/compound/target search across ChEMBL, DrugBank, FDA labels and Open Targets.
What you get
Unified JSON results from multiple drug databases for one natural-language query, with source tags and images.
- Unified JSON search results across drug databases
- Structure image links
By the numbers
- Searches 4 databases simultaneously (ChEMBL, DrugBank, FDA labels, Open Targets)
- Example cost 0.035 per query
Files
Drug Discovery Search
Search across all major drug discovery databases (ChEMBL, DrugBank, FDA drug labels, Open Targets) simultaneously using natural language queries powered by Valyu's semantic search API.
Why This Skill is Powerful
- No API Parameter Parsing: Just pass natural language queries directly - no need to construct complex search parameters
- Semantic Search: Understands the meaning of your query, not just keyword matching
- Full-Text Access: Returns complete compound, target, and drug information
- Image Links: Includes molecular structures and data visualizations
- Comprehensive Coverage: Search across ChEMBL, DrugBank, drug labels, and Open Targets simultaneously
- Unified Results: Get results from all drug discovery sources in a single query
Requirements
1. Node.js 18+ (uses built-in fetch) 2. Valyu API key from https://platform.valyu.ai ($10 free credits)
CRITICAL: Script Path Resolution
The scripts/search commands in this documentation are relative to this skill's installation directory.
Before running any command, locate the script using:
DRUG_DISCOVERY_SCRIPT=$(find ~/.claude/plugins/cache -name "search" -path "*/drug-discovery-search/*/scripts/*" -type f 2>/dev/null | head -1)Then use the full path for all commands:
$DRUG_DISCOVERY_SCRIPT "JAK2 inhibitors" 20API Key Setup Flow
When you run a search and receive "setup_required": true, follow this flow:
1. Ask the user for their API key: "To search drug discovery databases, I need your Valyu API key. Get one free ($10 credits) at https://platform.valyu.ai"
2. Once the user provides the key, run:
scripts/search setup <api-key>3. Retry the original search.
When to Use This Skill
- End-to-end drug discovery information
- Target validation through compounds and trials
- Complete drug development information
- Compound optimization with target data
- Safety and efficacy research
Output Format
{
"success": true,
"type": "drug_discovery_search",
"query": "JAK2 inhibitors",
"result_count": 20,
"results": [
{
"title": "Compound/Drug/Target Title",
"url": "https://...",
"content": "Full data including compounds, targets, mechanisms...",
"source": "chembl|drugbank|drug-labels|open-targets",
"relevance_score": 0.95,
"images": ["https://example.com/structure.png"]
}
],
"cost": 0.035
}Processing Results
With jq
# Get titles
scripts/search "query" 20 | jq -r '.results[].title'
# Get URLs
scripts/search "query" 20 | jq -r '.results[].url'
# Extract full content
scripts/search "query" 20 | jq -r '.results[].content'
# Filter by source
scripts/search "query" 20 | jq -r '.results[] | select(.source == "chembl") | .title'Common Use Cases
Target Identification
# Find validated targets and compounds
scripts/search "BTK inhibitors for autoimmune diseases" 50Lead Optimization
# Search SAR and compound data
scripts/search "EGFR inhibitors blood-brain barrier penetration" 40Drug Repurposing
# Find repurposing opportunities
scripts/search "mTOR inhibitors cancer and aging" 30Safety Assessment
# Gather safety and interaction data
scripts/search "tyrosine kinase inhibitors cardiac toxicity" 60Error Handling
All commands return JSON with success field:
{
"success": false,
"error": "Error message"
}Exit codes:
0- Success1- Error (check JSON for details)
API Endpoint
- Base URL:
https://api.valyu.ai/v1 - Endpoint:
/search - Authentication: X-API-Key header
Architecture
scripts/
├── search # Bash wrapper
└── search.mjs # Node.js CLIDirect API calls using Node.js built-in fetch(), zero external dependencies.
Adding to Your Project
If you're building an AI project and want to integrate Drug Discovery Search directly into your application, use the Valyu SDK:
Python Integration
from valyu import Valyu
client = Valyu(api_key="your-api-key")
response = client.search(
query="your search query here",
included_sources=["valyu/valyu-chembl", "valyu/valyu-drugbank", "valyu/valyu-drug-labels", "valyu/valyu-open-targets"],
max_results=20
)
for result in response["results"]:
print(f"Title: {result['title']}")
print(f"URL: {result['url']}")
print(f"Content: {result['content'][:500]}...")TypeScript Integration
import { Valyu } from "valyu-js";
const client = new Valyu("your-api-key");
const response = await client.search({
query: "your search query here",
includedSources: ["valyu/valyu-chembl", "valyu/valyu-drugbank", "valyu/valyu-drug-labels", "valyu/valyu-open-targets"],
maxResults: 20
});
response.results.forEach((result) => {
console.log(`Title: ${result.title}`);
console.log(`URL: ${result.url}`);
console.log(`Content: ${result.content.substring(0, 500)}...`);
});See the Valyu docs for full integration examples and SDK reference.
#!/bin/bash
# Search CLI wrapper
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCRIPT_PATH="${SCRIPT_DIR}/search"
# Special commands for discoverability
case "$1" in
--path|--location|--where)
echo "$SCRIPT_PATH"
exit 0
;;
--script-dir)
echo "$SCRIPT_DIR"
exit 0
;;
esac
node "${SCRIPT_DIR}/search.mjs" "$@"
#!/usr/bin/env node
/**
* drug-discovery-search Search via Valyu API
* Full-text search across multiple data sources with semantic search capabilities
*/
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
import { homedir } from 'os';
import { join } from 'path';
const VALYU_API_BASE = 'https://api.valyu.ai/v1';
const CONFIG_DIR = join(homedir(), '.valyu');
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
/**
* Get API key from multiple sources (in order of priority):
* 1. Environment variable (VALYU_API_KEY)
* 2. Config file (~/.valyu/config.json)
*/
function getApiKey() {
if (process.env.VALYU_API_KEY) {
return process.env.VALYU_API_KEY;
}
if (existsSync(CONFIG_FILE)) {
try {
const config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
if (config.apiKey) {
return config.apiKey;
}
} catch (e) {
// Ignore parse errors
}
}
return null;
}
/**
* Save API key to config file
*/
function saveApiKey(apiKey) {
if (!existsSync(CONFIG_DIR)) {
mkdirSync(CONFIG_DIR, { recursive: true });
}
let config = {};
if (existsSync(CONFIG_FILE)) {
try {
config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
} catch (e) {
// Start fresh if parse fails
}
}
config.apiKey = apiKey;
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
return true;
}
/**
* Return setup required response
*/
function setupRequiredResponse() {
return {
success: false,
setup_required: true,
message: "Valyu API key not configured. Get your free API key ($10 credits) at https://platform.valyu.ai"
};
}
/**
* Search multiple sources via Valyu API
*/
async function search(query, maxResults = 10) {
const apiKey = getApiKey();
if (!apiKey) {
return setupRequiredResponse();
}
try {
const response = await fetch(`${VALYU_API_BASE}/search`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey
},
body: JSON.stringify({
query: query,
search_type: 'proprietary',
included_sources: ['valyu/valyu-chembl', 'valyu/valyu-drugbank', 'valyu/valyu-drug-labels', 'valyu/valyu-open-targets'],
limit: maxResults
})
});
const data = await response.json();
if (!response.ok) {
return {
success: false,
error: data.detail || data.message || `HTTP ${response.status}`,
status: response.status
};
}
return {
success: true,
type: 'drug_discovery_search',
query: query,
result_count: data.results?.length || 0,
results: data.results || [],
cost: data.cost || 0
};
} catch (error) {
return {
success: false,
error: error.message
};
}
}
/**
* Setup command - save API key
*/
function setup(apiKey) {
if (!apiKey) {
return {
success: false,
error: "API key required. Usage: search setup <api-key>"
};
}
saveApiKey(apiKey);
return {
success: true,
type: 'setup',
message: "API key saved to ~/.valyu/config.json"
};
}
// Main CLI handler
const [,, command, ...args] = process.argv;
(async () => {
let result;
if (command === 'setup') {
result = setup(args[0]);
} else {
// Treat first arg as query, second as maxResults
const query = command || '';
const maxResults = args[0] ? parseInt(args[0], 10) : 10;
if (!query) {
result = {
success: false,
error: "Query required. Usage: search <query> [maxResults]"
};
} else {
result = await search(query, maxResults);
}
}
console.log(JSON.stringify(result, null, 2));
process.exit(result.success ? 0 : 1);
})();
Related skills
FAQ
Does it need an API key?
Yes. It requires a Valyu API key from platform.valyu.ai, which comes with $10 of free credits.
Which databases does it cover?
ChEMBL, DrugBank, FDA drug labels and Open Targets, searched simultaneously.