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.

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 — 25,000+ tools with EDAM semantic matching
  4. BioContainers — container image resolution for reproducibility

On this page