DevOps & Infra
tooluniverse-bioinformatics-resource-discovery - Claude MCP Skill
Discover which bioinformatics software tool, biomedical REST API, R/Bioconductor package, CRAN package, or training material exists for a task, before writing analysis code or building a pipeline. Covers ELIXIR bio.tools (30,000+ software tools/databases by keyword, EDAM topic, or EDAM operation), SmartAPI (biomedical API registry, incl. NCATS Translator components), ELIXIR TeSS (bioinformatics training materials/events), Bioconductor (R packages for computational biology), and CRAN (general R packages). Use when someone asks 'is there an existing tool/package for X', 'what software does [analysis]', 'find an API for Y', or 'is there a tutorial on Z'.
SEO Guide: Enhance your AI agent with the tooluniverse-bioinformatics-resource-discovery tool. This Model Context Protocol (MCP) server allows Claude Desktop and other LLMs to discover which bioinformatics software tool, biomedical rest api, r/bioconductor package, cran packa... Download and configure this skill to unlock new capabilities for your AI workflow.
Documentation
SKILL.md# Bioinformatics Resource Discovery
Answers "what already exists for this task" — software, APIs, R packages, or training material — **before** writing new analysis code, choosing an nf-core pipeline, or wrapping a new REST API by hand.
**LOOK UP, DON'T GUESS**: Never assert that a tool/package/API does or doesn't exist for a task from memory. These 5 registries are live and current — search them.
## When to Use This Skill
- "Is there existing software for [bioinformatics task]?" -> bio.tools
- "What biomedical APIs exist for [domain], and where's the base URL/spec?" -> SmartAPI
- "Is there a tutorial/course on [technique]?" -> ELIXIR TeSS
- "What R package does [analysis] in Bioconductor?" -> Bioconductor
- "What does CRAN package X do / what version / what does it depend on?" -> CRAN
**NOT for**: actually running an nf-core pipeline once you've picked one (-> `tooluniverse-nfcore-pipelines`); resolving IDs between databases (-> `tooluniverse-sequence-retrieval`'s Bioregistry/Identifiers.org/TogoID section); retrieving biological data itself (sequences, structures, expression) rather than software/APIs about it.
## 1. bio.tools — Bioinformatics Software & Database Registry
ELIXIR's registry of 30,000+ bioinformatics tools, web services, and databases.
| Tool | Use for | Key params |
|---|---|---|
| `BioTools_search` | Free-text keyword search across name/description/topics | `q`, `page`, `size` (max 50) |
| `BioTools_get_tool` | Full record for a known tool by its bio.tools ID | `biotoolsID` |
| `BioTools_search_by_topic` | Filter by EDAM scientific topic (e.g. "Genomics", "Proteomics") | `topic`, `page`, `size` |
| `BioTools_search_by_operation` | Filter by EDAM operation — what the tool DOES (e.g. "Sequence alignment", "Variant calling") | `operation`, `page`, `size` |
| `BioTools_search_by_type` | Filter by resource type | `toolType` (e.g. "Database portal"), `q`, `page`, `size` |
**Which tool for "what software does X?"**: start with `BioTools_search` (free text). Results are relevance-ranked (`sort=score`): `q="blast"` returns BLAST first and `q="variant calling"` returns the GATK tools first. The `_by_topic` / `_by_operation` / `_by_type` filters are for narrowing and counting: they return the exact EDAM set (multi-word terms are sent as exact phrases, so `operation="Variant calling"` matches 1,015 tools, not the 4,165 a loose match gives), but upstream's ordering within a filter is not by relevance, so do not read the first few hits as "the best tools". Combine both: read the count from a filter, then rank with a text query.
Verified live: `BioTools_search {"q": "RNA-seq", "size": 3}` -> 6,081 total matches. `BioTools_get_tool {"biotoolsID": "blast"}` -> the real BLAST record (homepage, EDAM operations, full description). `BioTools_search_by_topic {"topic": "Genomics"}` -> 10,165 matches; `BioTools_search_by_operation {"operation": "Sequence alignment"}` -> 5,890 matches; `BioTools_search_by_type {"toolType": "Database portal"}` -> 2,597 matches — note `toolType` is the required param name, not `tool_type`, and `topic`/`operation` searches return a real, differently-sized result set per filter even when the very top-ranked item coincides across filters (bio.tools' own relevance/recency ranking, not a wrapper bug) — always check `count` and page through more than the first result.
## 2. SmartAPI — Biomedical API Registry
~270 OpenAPI-described biomedical web APIs, many of them NCATS Biomedical Data Translator components (BioThings APIs, knowledge-provider APIs).
| Tool | Use for | Key params |
|---|---|---|
| `SmartAPI_search_apis` | Keyword or field-scoped Lucene search (e.g. `tags.name:translator`) | `query`, `limit` (max 100) |
| `SmartAPI_get_api` | Full spec for one API: base URLs, endpoint list, contact | `api_id` |
Verified live: `SmartAPI_search_apis {"query": "biothings", "limit": 3}` -> real APIs including "Biothings Therapeutic Target Database API" (`base_url: https://biothings.transltr.io/ttd`) and "MyGeneset.info API". Feeding that `api_id` into `SmartAPI_get_api` returns `base_urls` (prod/test/CI variants), `endpoint_count: 5`, and the actual endpoint paths (`/query`, `/metadata`, `/association/{id}`, ...).
**Use this to find an API not yet wrapped as a dedicated ToolUniverse tool** — resolve its base URL and endpoints here, then either call it directly (if simple/one-off) or use `create-tooluniverse-skill` to wrap it properly (the `devtu-create-tool` workflow it builds on now ships in the separate tu-harness plugin). Also useful for resolving an API mentioned in a paper's methods section to its actual current base URL.
## 3. ELIXIR TeSS — Training Materials & Events
Aggregates bioinformatics/life-science tutorials, courses, webinars, and events from ELIXIR nodes and partners.
| Tool | Use for | Key params |
|---|---|---|
| `ELIXIRTeSS_search_materials` | Find tutorials/courses/webinars | `q`, `scientific_topics` (EDAM), `target_audience`, `difficulty_level`, `licence`, `page_size`, `page` |
| `ELIXIRTeSS_search_events` | Find live/scheduled training events | `q`, plus similar filters |
Verified live: `ELIXIRTeSS_search_materials {"q": "RNA-seq", "page_size": 3}` -> real materials, e.g. "A practical introduction to bioinformatics and RNA-seq using Galaxy". `ELIXIRTeSS_search_events {"q": "bioinformatics"}` -> real upcoming events (e.g. a 2026-09-21 SIB Swiss Institute of Bioinformatics course, "Feature Selection for Bioinformatics with Python"). A query with zero matches (e.g. `q: "CRISPR"` at time of testing) returns a clean empty list, not an error — confirmed by re-running with a broader query and an empty-query call, both of which returned real, different, non-empty result sets, so treat an empty result as "nothing currently listed for that exact term," not a broken call.
## 4. Bioconductor — R Packages for Computational Biology
2,200+ R packages for RNA-seq, single-cell, proteomics, epigenomics, and more, indexed via the R-universe search API.
| Tool | Use for | Key params |
|---|---|---|
| `Bioconductor_search_packages` | Keyword/topic search | `q`, `limit` (max 100) |
| `Bioconductor_get_package` | Full metadata for a known package | `package_name` (exact, case-sensitive) |
Verified live: `Bioconductor_search_packages {"q": "differential expression", "limit": 3}` -> real packages ranked by relevance score (`_score`), e.g. `compcodeR`. `Bioconductor_get_package {"package_name": "DESeq2"}` -> the real current DESeq2 record (`Version: "1.53.3"`, full author list, description) — note the param is `package_name`, not `package` (that name is reserved for the separate CRAN tools below; passing `package` to this tool fails validation).
## 5. CRAN — General R Package Registry
20,000+ general R packages (via the `crandb` mirror) — use for R packages outside Bioconductor's bio-specific scope (stats, viz, data wrangling, and bio-adjacent packages like `survival`).
| Tool | Use for | Key params |
|---|---|---|
| `CRAN_get_package` | Current metadata: version, description, license, dependencies | `package` (exact, case-sensitive) |
| `CRAN_get_package_versions` | Full release history | `package` |
Verified live: `CRAN_get_package {"package": "ggplot2"}` -> real current metadata (`Version: "4.0.3"`, full author list, license). `CRAN_get_package_versions {"package": "ggplot2"}` -> full version history back to `0.5` (2007-01-01) with each version's own metadata snapshot.
## Choosing Among the Five Resources
| Resource | What it holds | Example question |
|---|---|---|
| **bio.tools** (Sec. 1) | Bioinformatics software/services/databases, catalogued by EDAM topic & operation | "What tools do variant calling from BAM files?" |
| **SmartAPI** (Sec. 2) | Live biomedical REST APIs with machine-readable specs | "What's the base URL and endpoints for the BioThings TTD API?" |
| **ELIXIR TeSS** (Sec. 3) | Training materials and events | "Is there a beginner RNA-seq course I can point someone to?" |
| **Bioconductor** (Sec. 4) | R packages specifically for computational biology | "What Bioconductor package does differential expression on RNA-seq counts?" |
| **CRAN** (Sec. 5) | General-purpose R packages (incl. bio-adjacent) | "What does the `survival` package's current version support?" |
A `Bioconductor_search_packages` hit and a `CRAN_get_package` hit can both resolve for a genuinely bio-relevant R package (e.g. `survival` lives on CRAN, not Bioconductor) — try Bioconductor first for a task that sounds computational-biology-specific, and fall back to CRAN if it's a general statistics/viz need or Bioconductor returns nothing relevant.
## Common Pitfalls
- **Parameter name mismatches across similarly-shaped tools**: `Bioconductor_get_package` takes `package_name`; `CRAN_get_package`/`CRAN_get_package_versions` take `package`; `BioTools_search_by_type` takes `toolType` (camelCase), not `tool_type`. Don't assume a shared convention across these 5 resources — check each tool's own schema.
- **A shared top result across different filters on bio.tools is not a bug** — verify by checking the `count` field, which does differ, and by paging further if the very top hit looks generic.
- **An empty ELIXIR TeSS result is a real "nothing listed," not a broken call** — retry with a broader query before concluding the tool is down.Signals
Information
- Repository
- mims-harvard/ToolUniverse
- Author
- mims-harvard
- Last Sync
- 11/3/2026
- Repo Updated
- 11/3/2026
- Created
- 10/7/2026
Reviews (0)
No reviews yet. Be the first to review this skill!
Related Skills
CLAUDE
Claude-Mem: AI Development Instructions
cursorrules
CrewAI Development Rules
firecrawl-build-interact
Integrate Firecrawl `/interact` into product code for dynamic pages and browser actions after scraping. Use when a feature needs clicks, form fills, pagination, authentication-aware flows, or other multi-step interactions that plain `/scrape` cannot complete.
firecrawl-build
Integrate Firecrawl into application code whenever a product, agent, or workflow needs web data inside the app — web search, live search results, page scraping, structured extraction, or browser interaction. Use when building any feature that needs data from the web in code, even if the user does not mention Firecrawl explicitly and only describes wanting web data, website content, search, scraping, or interaction in an application. Trigger for Firecrawl requests, "fire girl" shorthand, and generic app-level web-data needs that should map to `/scrape`, `/search`, or `/interact`. Do not use this skill for one-off terminal-only web tasks during the current session; use `firecrawl/cli` for those.
Related Guides
Bear Notes Claude Skill: Your AI-Powered Note-Taking Assistant
Learn how to use the bear-notes Claude skill. Complete guide with installation instructions and examples.
OpenAI Whisper API Claude Skill: Complete Guide to AI-Powered Audio Transcription
Learn how to use the openai-whisper-api Claude skill. Complete guide with installation instructions and examples.
Mastering the Oracle CLI: A Complete Guide to the Claude Skill for Database Professionals
Learn how to use the oracle Claude skill. Complete guide with installation instructions and examples.