BioContext7

Adding Tools

How to add and register tools with BioContext7

Overview

BioContext7 discovers tools automatically from bio.tools, nf-core, and Bioconda. You can also register custom tools using a biocontext7.json manifest file and declare crawl-time metadata for GitHub repositories with biocontext7.yaml.

Repository Metadata via biocontext7.yaml

If your tool lives on GitHub, add a biocontext7.yaml file at repository root to override auto-extracted metadata during documentation crawling.

# biocontext7.yaml (repository root)
name: DESeq2
description: Differential gene expression analysis based on the negative binomial distribution
language: [R]
edam_operations: ["operation:3223"]
edam_topics: ["topic:3308"]
documentation:
  - url: https://bioconductor.org/packages/DESeq2/
    type: reference
  - url: https://bioconductor.org/packages/DESeq2/vignettes/DESeq2.html
    type: vignette
citation:
  doi: "10.1186/s13059-014-0550-8"
deprecated: false

biocontext7.yaml Schema

FieldTypeRequiredNotes
namestringNoAuthor-preferred tool display name
descriptionstringNoAuthor-preferred summary
languagestring[]NoProgramming languages
edam_operationsstring[]NoMust match operation:NNNN
edam_topicsstring[]NoMust match topic:NNNN
documentation[{ url, type }]NoPreferred docs URLs (higher priority than auto URLs)
citation.doistringNoDOI format 10.XXXX/...
deprecatedbooleanNoAuthor-declared deprecation state

Malformed biocontext7.yaml files are rejected by schema validation and ignored for overrides. Valid files take precedence over auto-extracted metadata for supported fields.

The biocontext7.json Manifest

Create a biocontext7.json file in your tool's root directory:

{
  "name": "my-custom-tool",
  "version": "1.0.0",
  "description": "A custom bioinformatics tool",
  "operations": ["operation:0292"],
  "topics": ["topic:3308"],
  "inputs": [
    {
      "data": "data:2044",
      "format": "format:1930",
      "description": "Input FASTQ files"
    }
  ],
  "outputs": [
    {
      "data": "data:0863",
      "format": "format:2573",
      "description": "Aligned BAM file"
    }
  ],
  "container": {
    "docker": "myregistry/my-tool:1.0.0",
    "singularity": "docker://myregistry/my-tool:1.0.0"
  },
  "command": "my-tool align --input {input} --output {output}",
  "documentation": "https://my-tool.readthedocs.io"
}

Manifest Fields

FieldRequiredDescription
nameYesUnique tool identifier
versionYesSemantic version string
descriptionYesShort description of the tool
operationsYesEDAM operation URIs
topicsNoEDAM topic URIs
inputsYesInput data types and formats (EDAM)
outputsYesOutput data types and formats (EDAM)
containerNoDocker/Singularity image references
commandNoCommand template with {input} / {output} placeholders
documentationNoURL to tool documentation

EDAM Ontology Terms

Use EDAM terms to describe your tool's operations, topics, and data types. You can look up terms using the CLI:

# Look up operations
bc7 edam lookup "sequence alignment"
 
# Look up topics
bc7 edam lookup --type topic "genomics"
 
# Look up data types
bc7 edam lookup --type data "sequence"

Register a Custom Tool

# Register from a manifest file
bc7 register ./biocontext7.json
 
# Register from a directory (auto-discovers biocontext7.json)
bc7 register ./my-tool/
 
# Verify registration
bc7 info my-custom-tool

Register via Python API

from bio_pipeline_maker.registry import ToolRegistry
 
registry = ToolRegistry()
 
await registry.register_tool({
    "name": "my-custom-tool",
    "version": "1.0.0",
    "description": "A custom bioinformatics tool",
    "operations": ["operation:0292"],
    "inputs": [{"data": "data:2044", "format": "format:1930"}],
    "outputs": [{"data": "data:0863", "format": "format:2573"}],
})

Tool Discovery Pipeline

When BioContext7 resolves tools for a pipeline, it searches in order:

  1. Local registry — custom tools registered via biocontext7.json
  2. nf-core modules — community-curated Nextflow modules (if prefer_nfcore is enabled)
  3. bio.tools — 47,000+ tools with EDAM semantic matching
  4. BioContainers — container image resolution for reproducibility

On this page