UniProt through GeneFoundry
Explore protein function, features and cross-references through the UniProt integration.
- Research area
- Genes & proteins
- Namespace
uniprot- Listed tools
- 15
- Upstream source
- UniProt
Research tasks
- Find proteins with relevant annotations
- Inspect protein features and annotation evidence
Start with tool discovery
The catalog lists uniprot_find_proteins as a representative tool. After connecting your client, inspect the tools and input requirements returned by the service before submitting a query.
Identifiers to prepare
- UniProt accession
- Gene symbol with organism context
- Taxonomy identifier
All available tools (15)
The router surfaces these tools namespaced under uniprot_*:
get_server_capabilitiesReturn the uniprot-link discovery surface. detail='summary' (default) is light: identity/build/release, the tool list WITH call signatures, accepted argument aliases, response modes, recommended workflows, error taxonomy, and limits -- enough to call any tool without guessing an argument name. detail='full' adds the heavy reference blocks (21 named graphs with triple counts, the full SPARQL prefix map, full latency bands, feature-type and cross-reference vocabularies). Call this first in a cold session, or read uniprot://tools (signatures only) or uniprot://capabilities (full). Signature: get_server_capabilities(detail=).
Return the uniprot-link discovery surface. detail='summary' (default) is light: identity/build/release, the tool list WITH call signatures, accepted argument aliases, response modes, recommended workflows, error taxonomy, and limits -- enough to call any tool without guessing an argument name. detail='full' adds the heavy reference blocks (21 named graphs with triple counts, the full SPARQL prefix map, full latency bands, feature-type and cross-reference vocabularies). Call this first in a cold session, or read uniprot://tools (signatures only) or uniprot://capabilities (full). Signature: get_server_capabilities(detail=).
Input parameters
detail(string) — summary (default, light) or full (adds named graphs/prefixes).
search_sparql_queryExecute a bounded SPARQL SELECT/ASK query against the UniProt endpoint (bounded SELECT / ASK only). SERVICE federation and graph-returning CONSTRUCT/DESCRIBE forms are rejected. SELECT results come back as columns+rows JSON; ASK as a boolean. A LIMIT is auto-injected into unbounded SELECTs (see `_meta`/`truncated`). This is the escape hatch for anything the typed tools do not cover -- seed queries from search_example_queries. Use uniprot://prefixes for the standard PREFIX block. Broad, unanchored queries can take 10-60 s; bound lookups (anchored on an accession/gene/taxon) return in <2 s. Signature: search_sparql_query(query, result_format=, limit=, timeout_seconds=).
Execute a bounded SPARQL SELECT/ASK query against the UniProt endpoint (bounded SELECT / ASK only). SERVICE federation and graph-returning CONSTRUCT/DESCRIBE forms are rejected. SELECT results come back as columns+rows JSON; ASK as a boolean. A LIMIT is auto-injected into unbounded SELECTs (see `_meta`/`truncated`). This is the escape hatch for anything the typed tools do not cover -- seed queries from search_example_queries. Use uniprot://prefixes for the standard PREFIX block. Broad, unanchored queries can take 10-60 s; bound lookups (anchored on an accession/gene/taxon) return in <2 s. Signature: search_sparql_query(query, result_format=, limit=, timeout_seconds=).
Input parameters
limit(any) — LIMIT to inject when a SELECT lacks one (capped at 10000).query(string) [required] — A complete SPARQL 1.1 query string. SELECT/ASK only; SERVICE federation and CONSTRUCT/DESCRIBE are rejected. An unbounded SELECT gets an auto-injected LIMIT.result_format(string) — Result serialisation. Use json for SELECT/ASK.timeout_seconds(any) — Per-call timeout override in seconds.
search_example_queriesSearch UniProt's 126 curated, executable SPARQL example queries by free text over their descriptions and keyword tags (e.g. 'disease', '3D structure', 'cross-reference', 'taxonomy'). Returns example ids, descriptions, tags, and query types. Fetch the full query text with get_example_query, then run it via search_sparql_query. The best way to learn how to query UniProt. Signature: search_example_queries(text=, limit=).
Search UniProt's 126 curated, executable SPARQL example queries by free text over their descriptions and keyword tags (e.g. 'disease', '3D structure', 'cross-reference', 'taxonomy'). Returns example ids, descriptions, tags, and query types. Fetch the full query text with get_example_query, then run it via search_sparql_query. The best way to learn how to query UniProt. Signature: search_example_queries(text=, limit=).
Input parameters
limit(integer) — Max examples to return.text(any) — Free-text filter over descriptions and keywords.
get_example_queryFetch one curated example's full SPARQL text, description, keyword tags, and any federated endpoints it joins. Pass an example_id (full IRI) from search_example_queries. `_meta.next_commands` offers to run it directly via search_sparql_query. Signature: get_example_query(example_id).
Fetch one curated example's full SPARQL text, description, keyword tags, and any federated endpoints it joins. Pass an example_id (full IRI) from search_example_queries. `_meta.next_commands` offers to run it directly via search_sparql_query. Signature: get_example_query(example_id).
Input parameters
example_id(string) [required] — Full example IRI from search_example_queries.
find_proteinsSearch UniProtKB for the entries of a GENE and return matching entries (accession, mnemonic, recommended name, reviewed flag, organism). gene_symbol is REQUIRED; refine the hits with organism_taxon (a positive NCBI taxon id or an exact common/scientific organism name), reviewed, name_contains (matched per word, in any order, case-insensitive), or the structured filters mnemonic / ec_number / keyword. Reviewed (Swiss-Prot) hits are ranked first. UniProt SPARQL has no general full-text index; for EC-only, keyword-only, or free-text search WITHOUT a gene, use search_example_queries or search_sparql_query. Pair with get_protein for full detail. Results are ordered reviewed-first, then by mnemonic, then accession (stable across pages). Cold search can take several seconds; an identical repeat is cached (~0 ms). If you already know the accession, call get_protein directly -- it is far faster. Signature: find_proteins(gene_symbol, organism_taxon=, reviewed=, keyword=, ec_number=, mnemonic=, name_contains=, limit=, offset=).
Search UniProtKB for the entries of a GENE and return matching entries (accession, mnemonic, recommended name, reviewed flag, organism). gene_symbol is REQUIRED; refine the hits with organism_taxon (a positive NCBI taxon id or an exact common/scientific organism name), reviewed, name_contains (matched per word, in any order, case-insensitive), or the structured filters mnemonic / ec_number / keyword. Reviewed (Swiss-Prot) hits are ranked first. UniProt SPARQL has no general full-text index; for EC-only, keyword-only, or free-text search WITHOUT a gene, use search_example_queries or search_sparql_query. Pair with get_protein for full detail. Results are ordered reviewed-first, then by mnemonic, then accession (stable across pages). Cold search can take several seconds; an identical repeat is cached (~0 ms). If you already know the accession, call get_protein directly -- it is far faster. Signature: find_proteins(gene_symbol, organism_taxon=, reviewed=, keyword=, ec_number=, mnemonic=, name_contains=, limit=, offset=).
Input parameters
ec_number(any) — EC number, e.g. 2.7.11.1.gene_symbol(string) [required] — Gene symbol to search for, e.g. BRCA1.keyword(any) — UniProt keyword (KW-id like KW-0007, or a label).limit(integer) — Max results per page.mnemonic(any) — Entry mnemonic, e.g. BRCA1_HUMAN.name_contains(any) — Words to match in the recommended protein name. Multi-word input matches per word (each word must appear, in any order), so 'polynucleotide kinase' matches 'Bifunctional polynucleotide phosphatase/kinase'. Case-insensitive.offset(integer) — Pagination offset.organism_taxon(any) — Positive NCBI taxon id or exact common/scientific organism name, e.g. 9606, 'human', or 'Homo sapiens'.reviewed(any) — True = Swiss-Prot only; False = TrEMBL only.
find_proteins_batchResolve SEVERAL gene symbols to UniProtKB entries in ONE call, running the lookups concurrently -- so N genes cost about one cold round-trip instead of N sequential ones. Use this for multi-gene tasks (e.g. 'get domains for PNKP and NAA10'). Returns by_gene (gene -> accessions, reviewed-first), a flat proteins list tagged with matched_gene, resolved_genes, and unresolved_genes (a symbol that matched nothing is disclosed, never silently dropped). Optionally scope by organism_taxon (a positive NCBI taxon id or an exact common/scientific organism name) and reviewed. next_commands fan out to get_protein on each resolved gene's top hit. For a single gene use find_proteins. Signature: find_proteins_batch(gene_symbols, organism_taxon=, reviewed=, limit_per_gene=).
Resolve SEVERAL gene symbols to UniProtKB entries in ONE call, running the lookups concurrently -- so N genes cost about one cold round-trip instead of N sequential ones. Use this for multi-gene tasks (e.g. 'get domains for PNKP and NAA10'). Returns by_gene (gene -> accessions, reviewed-first), a flat proteins list tagged with matched_gene, resolved_genes, and unresolved_genes (a symbol that matched nothing is disclosed, never silently dropped). Optionally scope by organism_taxon (a positive NCBI taxon id or an exact common/scientific organism name) and reviewed. next_commands fan out to get_protein on each resolved gene's top hit. For a single gene use find_proteins. Signature: find_proteins_batch(gene_symbols, organism_taxon=, reviewed=, limit_per_gene=).
Input parameters
gene_symbols(array) [required] — Gene symbols to resolve, e.g. ['PNKP','NAA10'].limit_per_gene(integer) — Max entries per gene (default 5).organism_taxon(any) — Positive NCBI taxon id or exact common/scientific organism name, e.g. 9606, 'human', or 'Homo sapiens'.reviewed(any) — True = Swiss-Prot only; False = TrEMBL only.
get_proteinReturn the core summary for a single UniProtKB entry by accession: mnemonic, reviewed flag, recommended/short name, gene(s), organism + taxon, protein existence, sequence length and mass, a function summary, and creation/modification dates, plus has_variants/has_diseases/has_structure presence flags that drive content-aware next_commands. An obsolete/demerged accession returns a flagged obsolete record (obsolete:true + replaced_by). response_mode (default compact) controls verbosity; standard/full add the created/modified dates. Signature: get_protein(accession, response_mode=).
Return the core summary for a single UniProtKB entry by accession: mnemonic, reviewed flag, recommended/short name, gene(s), organism + taxon, protein existence, sequence length and mass, a function summary, and creation/modification dates, plus has_variants/has_diseases/has_structure presence flags that drive content-aware next_commands. An obsolete/demerged accession returns a flagged obsolete record (obsolete:true + replaced_by). response_mode (default compact) controls verbosity; standard/full add the created/modified dates. Signature: get_protein(accession, response_mode=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).response_mode(string) — Verbosity: minimal | compact | standard | full.
get_protein_sequenceReturn the amino-acid sequence(s) for an entry: the canonical isoform (length, mass, sequence) plus any additional (non-canonical) isoforms. Pass a canonical accession for all isoforms, or an isoform accession (e.g. P05067-2) to get THAT isoform's specific sequence and mass. response_mode controls verbosity: minimal=metadata only; compact (default)=length/mass + a first/last-30-residue sequence_preview (sequence_truncated:true) — cheap for large proteins; standard/full return the complete sequence string. Set canonical_only=true to return only the canonical isoform (skip the additional-isoform list). Signature: get_protein_sequence(accession, response_mode=, canonical_only=).
Return the amino-acid sequence(s) for an entry: the canonical isoform (length, mass, sequence) plus any additional (non-canonical) isoforms. Pass a canonical accession for all isoforms, or an isoform accession (e.g. P05067-2) to get THAT isoform's specific sequence and mass. response_mode controls verbosity: minimal=metadata only; compact (default)=length/mass + a first/last-30-residue sequence_preview (sequence_truncated:true) — cheap for large proteins; standard/full return the complete sequence string. Set canonical_only=true to return only the canonical isoform (skip the additional-isoform list). Signature: get_protein_sequence(accession, response_mode=, canonical_only=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).canonical_only(boolean) — Return only the canonical isoform (omit the additional-isoform list).response_mode(string) — Verbosity: minimal | compact | standard | full.
get_protein_featuresReturn sequence features with begin/end coordinates (FALDO) for an entry: domains, regions, transmembrane segments, binding/active sites, PTMs, signal peptides, secondary structure, mutagenesis sites, and more. feature_types=['domain'] returns positional domain extents; each returned `type` round-trips to the filter vocabulary. Filter keys come from capabilities (feature_types); a zero-match filter echoes the accepted keys as a filter_hint. Secondary-structure features (helix/strand/turn) are hidden by default and disclosed under excluded_secondary_structure; set include_secondary_structure=true (or name them in feature_types) to return them. DNA-binding extents are not available from UniProt RDF, so dna_binding is deliberately not a filter. response_mode=compact/minimal drops repeated fenced descriptions; standard (default) preserves existing full records. Signature: get_protein_features(accession, feature_types=, limit=, include_secondary_structure=, response_mode=).
Return sequence features with begin/end coordinates (FALDO) for an entry: domains, regions, transmembrane segments, binding/active sites, PTMs, signal peptides, secondary structure, mutagenesis sites, and more. feature_types=['domain'] returns positional domain extents; each returned `type` round-trips to the filter vocabulary. Filter keys come from capabilities (feature_types); a zero-match filter echoes the accepted keys as a filter_hint. Secondary-structure features (helix/strand/turn) are hidden by default and disclosed under excluded_secondary_structure; set include_secondary_structure=true (or name them in feature_types) to return them. DNA-binding extents are not available from UniProt RDF, so dna_binding is deliberately not a filter. response_mode=compact/minimal drops repeated fenced descriptions; standard (default) preserves existing full records. Signature: get_protein_features(accession, feature_types=, limit=, include_secondary_structure=, response_mode=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).feature_types(any) — Feature-type keys to keep (omit for all). Closed vocabulary: an unrecognised key is rejected (invalid_input), never matched to nothing. See feature_types in get_server_capabilities.include_secondary_structure(boolean) — Include helix/strand/turn features (hidden by default).limit(integer) — Max features to return (default 200).response_mode(string) — Verbosity: minimal | compact | standard | full.
get_protein_variantsReturn natural-variant annotations for an entry: position, wild-type residue, amino-acid substitution, an HGVS-style `notation` (e.g. `L176F`) for simple substitutions, `variant_type` (substitution|other), free-text description, structured linked `diseases`, and `dbsnp` rsIDs. Set disease_associated_only=true to keep only disease-linked variants. Set position_start and/or position_end to keep annotations that overlap that residue interval (inclusive). response_mode=compact/minimal drops the repeated free-text provenance; standard (default) preserves the existing full records. Signature: get_protein_variants(accession, limit=, disease_associated_only=, response_mode=, position_start=, position_end=).
Return natural-variant annotations for an entry: position, wild-type residue, amino-acid substitution, an HGVS-style `notation` (e.g. `L176F`) for simple substitutions, `variant_type` (substitution|other), free-text description, structured linked `diseases`, and `dbsnp` rsIDs. Set disease_associated_only=true to keep only disease-linked variants. Set position_start and/or position_end to keep annotations that overlap that residue interval (inclusive). response_mode=compact/minimal drops the repeated free-text provenance; standard (default) preserves the existing full records. Signature: get_protein_variants(accession, limit=, disease_associated_only=, response_mode=, position_start=, position_end=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).disease_associated_only(boolean) — Return only variants linked to a disease.limit(integer) — Max variants to return.position_end(any) — Last residue of an inclusive overlap interval.position_start(any) — First residue of an inclusive overlap interval.response_mode(string) — Verbosity: minimal | compact | standard | full.
get_protein_diseasesReturn disease annotations associated with an entry: disease name, UniProt disease id, mnemonic, MIM id, the clinical `definition` (the disease vocabulary's own description), and `involvement` (the entry-specific note). Pairs with get_protein_variants for variant-level disease evidence. response_mode=compact/minimal drops the free-text definition/involvement; standard (default) preserves them. Signature: get_protein_diseases(accession, response_mode=).
Return disease annotations associated with an entry: disease name, UniProt disease id, mnemonic, MIM id, the clinical `definition` (the disease vocabulary's own description), and `involvement` (the entry-specific note). Pairs with get_protein_variants for variant-level disease evidence. response_mode=compact/minimal drops the free-text definition/involvement; standard (default) preserves them. Signature: get_protein_diseases(accession, response_mode=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).response_mode(string) — Verbosity: minimal | compact | standard | full.
get_protein_cross_referencesReturn database cross-references for an entry, grouped by database (PDB, AlphaFoldDB, Ensembl, RefSeq, Reactome, STRING, InterPro, ...). Optionally restrict to specific databases (case-sensitive); any requested name that matched nothing is echoed under unmatched_databases with a did-you-mean, so a typo never reads as 'no data'. response_mode (default compact) returns short ids; full restores raw IRIs. Returns every cross-reference database; use resolve_identifiers for a focused primary-id mapping. Signature: get_protein_cross_references(accession, databases=, response_mode=).
Return database cross-references for an entry, grouped by database (PDB, AlphaFoldDB, Ensembl, RefSeq, Reactome, STRING, InterPro, ...). Optionally restrict to specific databases (case-sensitive); any requested name that matched nothing is echoed under unmatched_databases with a did-you-mean, so a typo never reads as 'no data'. response_mode (default compact) returns short ids; full restores raw IRIs. Returns every cross-reference database; use resolve_identifiers for a focused primary-id mapping. Signature: get_protein_cross_references(accession, databases=, response_mode=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).databases(any) — Database short names to keep (case-sensitive; omit for all). A malformed name is rejected (invalid_input); a well-formed name that matched nothing is echoed under unmatched_databases.response_mode(string) — Verbosity: minimal | compact | standard | full.
get_protein_go_termsReturn Gene Ontology annotations for an entry, grouped by aspect (biological_process / molecular_function / cellular_component) where available, each with GO id, label, and (when annotated) ECO `evidence` ids plus mapped GO `evidence_codes` (IDA/IEA/IMP/...) for citation. Always returns `count` and `count_by_aspect`; pass `aspect` to scope to one ontology and `limit` to cap a large set (token economy). Signature: get_protein_go_terms(accession, aspect=, limit=).
Return Gene Ontology annotations for an entry, grouped by aspect (biological_process / molecular_function / cellular_component) where available, each with GO id, label, and (when annotated) ECO `evidence` ids plus mapped GO `evidence_codes` (IDA/IEA/IMP/...) for citation. Always returns `count` and `count_by_aspect`; pass `aspect` to scope to one ontology and `limit` to cap a large set (token economy). Signature: get_protein_go_terms(accession, aspect=, limit=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).aspect(any) — Restrict to one GO aspect (omit for all).limit(integer) — Max terms to return (0 = all).
resolve_identifiersResolve a UniProtKB accession to its PRIMARY external identifiers: the genomic/structural/family core (PDB, AlphaFoldDB, Ensembl, RefSeq, GeneID, HGNC, KEGG, OrthoDB, Pfam, InterPro) by default. Optionally restrict to specific databases. Returns ids grouped by database plus the databases that matched and per-database counts. response_mode (default compact) returns short ids; full restores raw IRIs. For the exhaustive cross-reference set (incl. drug/disease databases like DrugBank/ChEMBL/OpenTargets) use get_protein_cross_references instead. Signature: resolve_identifiers(accession, databases=, response_mode=).
Resolve a UniProtKB accession to its PRIMARY external identifiers: the genomic/structural/family core (PDB, AlphaFoldDB, Ensembl, RefSeq, GeneID, HGNC, KEGG, OrthoDB, Pfam, InterPro) by default. Optionally restrict to specific databases. Returns ids grouped by database plus the databases that matched and per-database counts. response_mode (default compact) returns short ids; full restores raw IRIs. For the exhaustive cross-reference set (incl. drug/disease databases like DrugBank/ChEMBL/OpenTargets) use get_protein_cross_references instead. Signature: resolve_identifiers(accession, databases=, response_mode=).
Input parameters
accession(string) [required] — UniProtKB accession, e.g. P05067 (isoforms like P05067-2 accepted).databases(any) — Target database short names (case-sensitive; omit for the primary set).response_mode(string) — Verbosity: minimal | compact | standard | full.
get_taxonResolve an organism in the UniProt taxonomy. Pass a numeric NCBI taxon id (e.g. 9606) for full detail (scientific/common name, rank, the DIRECT parent, and an optional ordered lineage from species up to root), or a scientific/common name to get candidate taxon ids. Use the resolved taxon id with find_proteins(gene_symbol=..., organism_taxon=...). Name matches are ranked best-first (an exact scientific/common-name hit leads, tagged match_quality:'exact'), so matches[0] and next_commands point at the right organism. Numeric-id and common-organism-name lookups are fast (~0 ms for common names); an uncommon name triggers a multi-second taxonomy scan. Signature: get_taxon(taxon, include_lineage=).
Resolve an organism in the UniProt taxonomy. Pass a numeric NCBI taxon id (e.g. 9606) for full detail (scientific/common name, rank, the DIRECT parent, and an optional ordered lineage from species up to root), or a scientific/common name to get candidate taxon ids. Use the resolved taxon id with find_proteins(gene_symbol=..., organism_taxon=...). Name matches are ranked best-first (an exact scientific/common-name hit leads, tagged match_quality:'exact'), so matches[0] and next_commands point at the right organism. Numeric-id and common-organism-name lookups are fast (~0 ms for common names); an uncommon name triggers a multi-second taxonomy scan. Signature: get_taxon(taxon, include_lineage=).
Input parameters
include_lineage(boolean) — Include the ancestor lineage (id lookups only).taxon(string) [required] — NCBI taxon id (digits) or a scientific/common name.
Database & release provenance
- Data mode
none- Attestation
- unhosted
- Release version
v5.1.3
ghcr.io/berntpopp/uniprot-link@sha256:d64cc760dbd8b3b190b051beecf984bb7f2495c1b4b48e49b43a093e60891efbReview the response
Keep the source record link and submitted identifiers with your notes. Record the dataset version and retrieval date when available. This page does not contain a captured UniProt response.