Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted 4 min ago
teppi

Server definition

Hash
sha256:84de49663c4e11102c30f8113e2d951249a7b571e4a81d232d570fc63a08d2ad
What it is
What a remote MCP server returned when asked what it offers: 6 tools

The blob, as servednamed by its sha256

{ "instructions": "Protein-first research over UniProt (rest.uniprot.org), keyless. Start with uniprot_search_proteins (function/gene/organism queries) or arrive from a sibling identifier through uniprot_map_ids — the bridge that turns a gene, Ensembl, ChEMBL, RefSeq, or PDB id into a UniProtKB accession. Reviewed Swiss-Prot entries are manually curated; unreviewed TrEMBL are computationally predicted and ~30x more numerous, so favor reviewed:true unless you specifically want predictions. Chain accessions into uniprot_get_entry (full curated record; large records return an outline — re-call with sections) and uniprot_get_sequence (FASTA). Cross-references hop outward: PDB ids to protein-mcp-server for structure, ChEMBL ids to chembl for bioactivity, PubMed evidence to pubmed. Data is UniProt, CC BY 4.0 — attribute UniProt in downstream use.", "tools": [ { "description": "Fetch full curated UniProtKB entries by accession in one batch (up to 20). Each entry carries function, catalytic activity, cofactors, subcellular location, disease involvement, PTMs, natural variants, isoforms, domains, GO terms, keywords, and cross-references. Partial failures do not abort the batch — resolved entries land in succeeded[] and unknown/withdrawn accessions in failed[]. Pass fields to trim the upstream projection. A single oversized record returns kind: \"outline\" (a section listing with byte sizes) instead of overflowing context — re-call the same accession with sections:[...] (e.g. [\"disease\",\"variants\"]) to pull only those. This tool does not search: accessions come from uniprot_search_proteins.results[].accession or uniprot_map_ids. Strip any isoform suffix (P04637-2 to P04637) before calling.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "accessions": { "description": "Accessions to fetch (1–20). From uniprot_search_proteins or uniprot_map_ids.", "items": { "description": "A UniProtKB primary accession, e.g. \"P04637\". Canonical form only — strip any \"-N\" isoform suffix.", "pattern": "^(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2})$", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" }, "fields": { "description": "Comma-separated UniProtKB field names to project, e.g. \"accession,gene_names,cc_function,ft_variant\". Omit for the full curated default set. Use this on the initial call to trim payload.", "type": "string" }, "sections": { "description": "Only used to re-call after a kind: \"outline\" response — pass a subset of the outlined section keys to fetch just those sections. Do not pass on the initial call.", "items": { "description": "A section key from a prior outline response, e.g. \"disease\", \"variants\", \"function\", \"xrefs\".", "type": "string" }, "type": "array" } }, "required": [ "accessions" ], "type": "object" }, "name": "uniprot_get_entry", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "kind" ] }, { "required": [ "error" ] } ], "properties": { "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `all_not_found`: Every accession in the batch was well-formed but unknown to UniProtKB. Other values are possible when a failure originates below the handler.", "examples": [ "all_not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "failed": { "description": "Accessions that were well-formed but not found in UniProtKB. Present when kind is \"full\".", "items": { "additionalProperties": false, "description": "A per-accession failure.", "properties": { "accession": { "description": "The requested accession that did not resolve.", "type": "string" }, "error": { "description": "Why it failed and how to recover.", "type": "string" } }, "required": [ "accession", "error" ], "type": "object" }, "type": "array" }, "kind": { "description": "Result kind. \"full\": the batch resolved — read succeeded[] and failed[]. \"outline\": a single record exceeded the context budget and is returned as a section listing — re-call the same accession with sections:[...] to pull specific sections.", "enum": [ "full", "outline" ], "type": "string" }, "notice": { "description": "Re-call guidance when kind is \"outline\" — re-call the same accession with sections:[...] to pull specific sections.", "type": "string" }, "sections": { "description": "Section outline returned when a single record exceeds the context budget. Present when kind is \"outline\".", "items": { "additionalProperties": false, "description": "An outlined section with its serialized size.", "properties": { "bytes": { "description": "Serialized byte size of the section.", "type": "number" }, "name": { "description": "Section identifier — pass a subset in sections:[...] to retrieve it.", "type": "string" } }, "required": [ "name", "bytes" ], "type": "object" }, "type": "array" }, "succeeded": { "description": "Entries that resolved successfully. Present when kind is \"full\".", "items": { "additionalProperties": false, "description": "A full curated UniProtKB entry.", "properties": { "accession": { "description": "UniProtKB primary accession.", "type": "string" }, "annotationScore": { "description": "Annotation confidence on a 1–5 scale.", "type": "number" }, "catalyticActivity": { "description": "Catalytic-activity reactions (Rhea-cross-referenced). Absent when not an enzyme.", "items": { "additionalProperties": false, "description": "A catalyzed reaction.", "properties": { "ecNumber": { "description": "Enzyme Commission number. Omitted when none.", "type": "string" }, "name": { "description": "Reaction equation, e.g. \"ATP + L-tyrosyl-[protein] = ...\".", "type": "string" }, "rheaId": { "description": "Rhea reaction ID, e.g. \"RHEA:10596\". Omitted when none.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "cofactors": { "description": "Cofactors. Absent when none are annotated.", "items": { "additionalProperties": false, "description": "A required cofactor.", "properties": { "chebiId": { "description": "ChEBI identifier. Omitted when none.", "type": "string" }, "name": { "description": "Cofactor name, e.g. \"Zn(2+)\".", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "disease": { "description": "Disease involvements (DISEASE comments). Absent when none.", "items": { "additionalProperties": false, "description": "A disease association.", "properties": { "acronym": { "description": "Disease acronym. Omitted when none.", "type": "string" }, "description": { "description": "Disease description. Omitted when none.", "type": "string" }, "diseaseId": { "description": "UniProt disease accession, e.g. \"DI-01537\". Omitted when none.", "type": "string" }, "name": { "description": "Disease name.", "type": "string" }, "omimId": { "description": "OMIM identifier. Omitted when none.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "domains": { "description": "Domain and region features. Absent when none.", "items": { "additionalProperties": false, "description": "A sequence feature.", "properties": { "description": { "description": "Free-text description of the feature. Omitted when absent.", "type": "string" }, "featureId": { "description": "Stable feature identifier, e.g. \"VAR_066493\". Omitted when none.", "type": "string" }, "location": { "additionalProperties": false, "description": "Residue range of the feature.", "properties": { "end": { "description": "End residue position. Omitted when not exact.", "type": "number" }, "start": { "description": "Start residue position. Omitted when not exact.", "type": "number" } }, "type": "object" }, "type": { "description": "Feature type, e.g. \"Modified residue\" or \"Domain\".", "type": "string" } }, "required": [ "type", "location" ], "type": "object" }, "type": "array" }, "entryName": { "description": "UniProtKB mnemonic ID, e.g. \"P53_HUMAN\".", "type": "string" }, "function": { "description": "FUNCTION annotations. Absent on most TrEMBL entries.", "items": { "additionalProperties": false, "description": "An annotation with its source evidence preserved.", "properties": { "evidence": { "description": "Source evidence codes. Omitted when none are attached.", "items": { "description": "A PubMed/source evidence reference, e.g. \"PubMed:11025664\".", "type": "string" }, "type": "array" }, "value": { "description": "The annotated text.", "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "genes": { "description": "Gene names and synonyms.", "items": { "description": "A gene name or synonym.", "type": "string" }, "type": "array" }, "goTerms": { "description": "GO annotations. Absent when none.", "items": { "additionalProperties": false, "description": "A Gene Ontology annotation.", "properties": { "aspect": { "description": "GO aspect: P (process), F (function), or C (component).", "type": "string" }, "id": { "description": "GO identifier, e.g. \"GO:0006915\".", "type": "string" }, "term": { "description": "GO term label, e.g. \"apoptotic process\".", "type": "string" } }, "required": [ "id", "term", "aspect" ], "type": "object" }, "type": "array" }, "isoforms": { "description": "Isoforms (ALTERNATIVE PRODUCTS). Absent when only one product.", "items": { "additionalProperties": false, "description": "An alternatively-spliced isoform.", "properties": { "isoformId": { "description": "Isoform accession, e.g. \"P04637-2\".", "type": "string" }, "name": { "description": "Isoform name. Omitted when none.", "type": "string" }, "sequenceStatus": { "description": "Sequence status, e.g. \"Displayed\" or \"Described\". Omitted when none.", "type": "string" } }, "required": [ "isoformId" ], "type": "object" }, "type": "array" }, "keywords": { "description": "UniProt keywords. Absent when none.", "items": { "additionalProperties": false, "description": "A UniProt keyword.", "properties": { "category": { "description": "Keyword category. Omitted when none.", "type": "string" }, "id": { "description": "Keyword identifier, e.g. \"KW-0053\".", "type": "string" }, "name": { "description": "Keyword name, e.g. \"Apoptosis\".", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "length": { "description": "Canonical sequence length in residues.", "type": "number" }, "organism": { "additionalProperties": false, "description": "Source organism.", "properties": { "commonName": { "description": "Organism common name. Omitted when none.", "type": "string" }, "mnemonic": { "description": "Organism mnemonic, e.g. \"HUMAN\". Omitted when none.", "type": "string" }, "scientificName": { "description": "Organism scientific name.", "type": "string" }, "taxonId": { "description": "NCBI taxonomy ID.", "type": "number" } }, "required": [ "scientificName", "taxonId" ], "type": "object" }, "proteinExistence": { "description": "Protein-existence evidence level.", "type": "string" }, "proteinName": { "description": "Recommended full protein name. Omitted when none.", "type": "string" }, "ptms": { "description": "Post-translational modification features (modified residues, glycosylation, etc.). Absent when none.", "items": { "additionalProperties": false, "description": "A sequence feature.", "properties": { "description": { "description": "Free-text description of the feature. Omitted when absent.", "type": "string" }, "featureId": { "description": "Stable feature identifier, e.g. \"VAR_066493\". Omitted when none.", "type": "string" }, "location": { "additionalProperties": false, "description": "Residue range of the feature.", "properties": { "end": { "description": "End residue position. Omitted when not exact.", "type": "number" }, "start": { "description": "Start residue position. Omitted when not exact.", "type": "number" } }, "type": "object" }, "type": { "description": "Feature type, e.g. \"Modified residue\" or \"Domain\".", "type": "string" } }, "required": [ "type", "location" ], "type": "object" }, "type": "array" }, "reviewed": { "description": "True for reviewed Swiss-Prot, false for unreviewed TrEMBL.", "type": "boolean" }, "subcellularLocation": { "description": "Subcellular locations. Absent when none are annotated.", "items": { "additionalProperties": false, "description": "A subcellular location.", "properties": { "location": { "description": "Subcellular location, e.g. \"Nucleus\".", "type": "string" }, "topology": { "description": "Membrane topology. Omitted when not applicable.", "type": "string" } }, "required": [ "location" ], "type": "object" }, "type": "array" }, "variants": { "description": "Natural variants (dbSNP/ClinVar-linked). Absent when none.", "items": { "additionalProperties": false, "description": "A natural variant.", "properties": { "description": { "description": "Variant description. Omitted when none.", "type": "string" }, "featureId": { "description": "Variant identifier, e.g. \"VAR_066493\". Omitted when none.", "type": "string" }, "location": { "additionalProperties": false, "description": "Residue range of the variant.", "properties": { "end": { "description": "End residue position. Omitted when not exact.", "type": "number" }, "start": { "description": "Start residue position. Omitted when not exact.", "type": "number" } }, "type": "object" }, "original": { "description": "Original residue(s). Omitted when not a substitution.", "type": "string" }, "variation": { "description": "Variant residue(s). Omitted when not a substitution.", "type": "string" } }, "required": [ "location" ], "type": "object" }, "type": "array" }, "xrefs": { "additionalProperties": { "items": { "description": "A cross-reference identifier in that database.", "type": "string" }, "type": "array" }, "description": "Cross-references grouped by database (PDB, Ensembl, RefSeq, ChEMBL, AlphaFoldDB). Chain a PDB id into protein-mcp-server, a ChEMBL id into chembl. Absent when none.", "propertyNames": { "type": "string" }, "type": "object" } }, "required": [ "accession", "entryName", "genes", "organism", "length", "reviewed", "annotationScore", "proteinExistence" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch the reference proteome for an organism by UPID (e.g. \"UP000005640\") or NCBI taxon ID (e.g. 9606) — provide exactly one. Returns metadata inline: proteome type, total protein count, BUSCO completeness (score, complete/fragmented/missing counts, lineage dataset), and the genome assembly accession. The protein set is opt-in via include_proteins (it is large — human is ~147,506) and returns a capped page with a forward cursor; narrow it with the query filter (UniProtKB Lucene syntax) for a subset. Resolve an organism name to a taxon ID first with uniprot_get_taxonomy.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "Forward-pagination cursor from a prior protein page. Only meaningful with include_proteins.", "type": "string" }, "include_proteins": { "default": false, "description": "When true, also return a capped, cursor-paginated page of the proteome's proteins. Defaults to false — metadata alone is the common case.", "type": "boolean" }, "query": { "description": "Optional UniProtKB Lucene filter to narrow the protein list, e.g. \"reviewed:true AND keyword:KW-0067\". Only applies when include_proteins is true.", "type": "string" }, "size": { "description": "Proteins per page when include_proteins is true (max 500). Omit for the server default.", "exclusiveMinimum": 0, "maximum": 500, "type": "integer" }, "taxon_id": { "description": "NCBI taxon ID, e.g. 9606 for human. Resolves to the reference proteome. Provide this OR upid, not both.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "upid": { "anyOf": [ { "const": "", "type": "string" }, { "description": "Proteome identifier, e.g. \"UP000005640\".", "pattern": "^UP[0-9]{9}$", "type": "string" } ], "description": "Proteome UPID. Provide this OR taxon_id, not both." } }, "type": "object" }, "name": "uniprot_get_proteome", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "proteome" ] }, { "required": [ "error" ] } ], "properties": { "cap": { "description": "The page-size cap that was applied.", "type": "number" }, "cursor": { "description": "Forward cursor for the next protein page. Absent on the last page.", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `missing_identifier`: Neither upid nor taxon_id was provided. `conflicting_identifier`: Both upid and taxon_id were provided. `not_found`: The UPID or taxon has no reference proteome. Other values are possible when a failure originates below the handler.", "examples": [ "missing_identifier", "conflicting_identifier", "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "notice": { "description": "Truncation guidance when the protein page was capped — how to reach the rest (walk the cursor or narrow with the query filter).", "type": "string" }, "proteins": { "description": "A capped page of the proteome's proteins. Present only when include_proteins is true.", "items": { "additionalProperties": false, "description": "A protein in the proteome.", "properties": { "accession": { "description": "UniProtKB primary accession.", "type": "string" }, "annotationScore": { "description": "Annotation confidence on a 1–5 scale.", "type": "number" }, "entryName": { "description": "UniProtKB mnemonic ID.", "type": "string" }, "functionSnippet": { "description": "First function sentence(s), evidence stripped. Omitted when none.", "type": "string" }, "geneNames": { "description": "Gene names and synonyms.", "items": { "description": "A gene name or synonym.", "type": "string" }, "type": "array" }, "length": { "description": "Canonical sequence length in residues.", "type": "number" }, "organism": { "additionalProperties": false, "description": "Source organism.", "properties": { "commonName": { "description": "Organism common name. Omitted when none.", "type": "string" }, "scientificName": { "description": "Organism scientific name.", "type": "string" }, "taxonId": { "description": "NCBI taxonomy ID.", "type": "number" } }, "required": [ "scientificName", "taxonId" ], "type": "object" }, "proteinExistence": { "description": "Protein-existence evidence level.", "type": "string" }, "proteinName": { "description": "Recommended protein name. Omitted when none.", "type": "string" }, "reviewed": { "description": "True for reviewed Swiss-Prot, false for unreviewed TrEMBL.", "type": "boolean" } }, "required": [ "accession", "entryName", "geneNames", "organism", "length", "reviewed", "annotationScore", "proteinExistence" ], "type": "object" }, "type": "array" }, "proteome": { "additionalProperties": false, "description": "Proteome metadata.", "properties": { "busco": { "additionalProperties": false, "description": "BUSCO completeness report. Absent for proteomes without one.", "properties": { "complete": { "description": "Complete BUSCO genes.", "type": "number" }, "completeDuplicated": { "description": "Complete and duplicated BUSCOs.", "type": "number" }, "completeSingle": { "description": "Complete and single-copy BUSCOs.", "type": "number" }, "fragmented": { "description": "Fragmented BUSCOs.", "type": "number" }, "lineageDb": { "description": "BUSCO lineage dataset, e.g. \"primates_odb10\". Omitted when none.", "type": "string" }, "missing": { "description": "Missing BUSCOs.", "type": "number" }, "score": { "description": "Completeness percentage (0–100). Omitted when none.", "type": "number" }, "total": { "description": "Total BUSCO genes searched.", "type": "number" } }, "required": [ "complete", "completeSingle", "completeDuplicated", "fragmented", "missing", "total" ], "type": "object" }, "genomeAssembly": { "description": "Genome assembly accession, e.g. \"GCA_000001405.29\". Omitted when none.", "type": "string" }, "organism": { "additionalProperties": false, "description": "Source organism.", "properties": { "commonName": { "description": "Organism common name. Omitted when none.", "type": "string" }, "mnemonic": { "description": "Organism mnemonic, e.g. \"HUMAN\". Omitted when none.", "type": "string" }, "scientificName": { "description": "Organism scientific name.", "type": "string" }, "taxonId": { "description": "NCBI taxonomy ID.", "type": "number" } }, "required": [ "scientificName", "taxonId" ], "type": "object" }, "proteinCount": { "description": "Total number of proteins in the proteome.", "type": "number" }, "proteomeType": { "description": "Proteome type, e.g. \"Reference proteome\".", "type": "string" }, "upid": { "description": "Proteome identifier, e.g. \"UP000005640\".", "type": "string" } }, "required": [ "upid", "proteomeType", "organism", "proteinCount" ], "type": "object" }, "shown": { "description": "Number of proteins returned in this page.", "type": "number" }, "totalProteinsMatched": { "description": "Total proteins matching the (optionally filtered) proteome query.", "type": "number" }, "truncated": { "description": "True when the protein page hit the size cap — more remain via cursor.", "type": "boolean" } }, "type": "object" } }, { "description": "Fetch the canonical amino-acid sequence (FASTA) for a UniProtKB accession, with length and the parsed header. Set include_isoforms to also return the alternatively-spliced isoform sequences. This is the cheap sequence-only path — for the full functional record use uniprot_get_entry. Accessions come from uniprot_search_proteins or uniprot_map_ids; strip any \"-N\" isoform suffix (P04637-2 to P04637) before calling.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "accession": { "description": "UniProtKB primary accession, e.g. \"P04637\". Canonical form only — strip any \"-N\" isoform suffix.", "pattern": "^(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2})$", "type": "string" }, "include_isoforms": { "default": false, "description": "When true, also return the isoform sequences. Defaults to false (canonical only).", "type": "boolean" } }, "required": [ "accession" ], "type": "object" }, "name": "uniprot_get_sequence", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "accession", "canonical" ] }, { "required": [ "error" ] } ], "properties": { "accession": { "description": "The accession that was fetched.", "type": "string" }, "canonical": { "additionalProperties": false, "description": "The canonical sequence record.", "properties": { "header": { "description": "The FASTA header line (without the leading \">\"), e.g. \"sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4\".", "type": "string" }, "length": { "description": "Sequence length in residues.", "type": "number" }, "sequence": { "description": "The amino-acid sequence as a single string (newlines removed).", "type": "string" } }, "required": [ "header", "sequence", "length" ], "type": "object" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The accession has no sequence in UniProtKB. Other values are possible when a failure originates below the handler.", "examples": [ "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "isoforms": { "description": "Isoform sequence records. Present only when include_isoforms is true and isoforms exist.", "items": { "additionalProperties": false, "description": "An isoform sequence record.", "properties": { "header": { "description": "The FASTA header line (without the leading \">\"), e.g. \"sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4\".", "type": "string" }, "isoformId": { "description": "Isoform accession, e.g. \"P04637-2\".", "type": "string" }, "length": { "description": "Sequence length in residues.", "type": "number" }, "sequence": { "description": "The amino-acid sequence as a single string (newlines removed).", "type": "string" } }, "required": [ "header", "sequence", "length", "isoformId" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Resolve a taxonomy record by NCBI taxon ID (e.g. 9606) or scientific name (e.g. \"Homo sapiens\") — provide exactly one. Returns the scientific and common name, mnemonic, rank, parent, and the full lineage. Set include_children to also fetch immediate child taxa (a separate lookup — not inline on the record). Use this to turn an organism name into the taxon ID that uniprot_search_proteins (organism_id) and uniprot_get_proteome (taxon_id) expect.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "include_children": { "default": false, "description": "When true, also fetch the immediate child taxa via a follow-up search. Defaults to false.", "type": "boolean" }, "name": { "description": "Organism scientific name, e.g. \"Homo sapiens\". Provide this OR taxon_id, not both. Matched against the scientific name.", "type": "string" }, "taxon_id": { "description": "NCBI taxonomy ID, e.g. 9606. Provide this OR name, not both.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "type": "object" }, "name": "uniprot_get_taxonomy", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "taxon", "lineage" ] }, { "required": [ "error" ] } ], "properties": { "childCount": { "description": "Number of immediate children returned (when include_children is true).", "type": "number" }, "children": { "description": "Immediate children. Present only when include_children is true.", "items": { "additionalProperties": false, "description": "An immediate child taxon.", "properties": { "rank": { "description": "Child rank.", "type": "string" }, "scientificName": { "description": "Child scientific name.", "type": "string" }, "taxonId": { "description": "Child taxon ID.", "type": "number" } }, "required": [ "taxonId", "scientificName", "rank" ], "type": "object" }, "type": "array" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `missing_identifier`: Neither taxon_id nor name was provided. `conflicting_identifier`: Both taxon_id and name were provided. `not_found`: The taxon ID or name did not resolve to a record. Other values are possible when a failure originates below the handler.", "examples": [ "missing_identifier", "conflicting_identifier", "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "lineage": { "description": "Full lineage from root to the taxon's near ancestor.", "items": { "additionalProperties": false, "description": "A node in the lineage, ordered root → near.", "properties": { "commonName": { "description": "Common name of the node. Omitted when none.", "type": "string" }, "rank": { "description": "Taxonomic rank, e.g. \"phylum\", \"clade\", \"no rank\".", "type": "string" }, "scientificName": { "description": "Scientific name of the lineage node.", "type": "string" }, "taxonId": { "description": "NCBI taxonomy ID of the lineage node.", "type": "number" } }, "required": [ "taxonId", "scientificName", "rank" ], "type": "object" }, "type": "array" }, "taxon": { "additionalProperties": false, "description": "The taxonomy record.", "properties": { "commonName": { "description": "Common name. Omitted when none.", "type": "string" }, "mnemonic": { "description": "UniProt organism mnemonic, e.g. \"HUMAN\". Omitted when none.", "type": "string" }, "otherNames": { "description": "Synonyms and alternative spellings. Omitted when none.", "items": { "description": "An alternative name or synonym.", "type": "string" }, "type": "array" }, "parent": { "additionalProperties": false, "description": "Immediate parent taxon. Omitted at the root.", "properties": { "scientificName": { "description": "Parent scientific name.", "type": "string" }, "taxonId": { "description": "Parent taxon ID.", "type": "number" } }, "required": [ "taxonId", "scientificName" ], "type": "object" }, "rank": { "description": "Taxonomic rank, e.g. \"species\".", "type": "string" }, "scientificName": { "description": "Scientific name.", "type": "string" }, "taxonId": { "description": "NCBI taxonomy ID.", "type": "number" } }, "required": [ "taxonId", "scientificName", "rank" ], "type": "object" } }, "type": "object" } }, { "description": "Translate identifiers across databases via UniProt's ID-mapping service — gene names to accessions, accession to PDB / Ensembl / RefSeq / ChEMBL / GeneID, and back. The job runs asynchronously; this tool submits it and polls within a budget. A running job returns status \"running\" with a ticket; pass that ticket alone to poll the same job. A completed call returns status \"finished\" with one results page; when continuation is present, pass it alone to fetch the next completed page without re-submitting or polling the job. A gene name often maps to one reviewed Swiss-Prot accession plus dozens of unreviewed TrEMBL ones, so target UniProtKB-Swiss-Prot (reviewed only) for the usual intent, or UniProtKB / UniProtKB_AC-ID to include TrEMBL. Pair a gene-symbol from_db with tax_id to disambiguate species. Chain the resulting accessions into uniprot_get_entry.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "continuation": { "description": "Completed-page continuation from a prior status \"finished\" response. Pass it alone to fetch the next page without polling or re-submitting.", "properties": { "cursor": { "description": "Opaque cursor for the next completed results page.", "minLength": 1, "type": "string" }, "jobId": { "description": "UniProt ID-mapping job identifier for the completed job.", "minLength": 1, "type": "string" } }, "required": [ "jobId", "cursor" ], "type": "object" }, "from_db": { "description": "Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.", "enum": [ "UniProtKB_AC-ID", "Gene_Name", "GeneID", "Ensembl", "Ensembl_Protein", "PDB", "RefSeq_Nucleotide", "RefSeq_Protein", "ChEMBL", "PomBase", "WormBase_Protein" ], "type": "string" }, "ids": { "description": "Identifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.", "items": { "description": "A source identifier in the from_db namespace, e.g. \"TP53\" for Gene_Name.", "type": "string" }, "maxItems": 100000, "type": "array" }, "tax_id": { "description": "NCBI taxon ID to disambiguate ambiguous source IDs (e.g. a gene symbol across species). Recommended with Gene_Name; e.g. 9606 for human.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "ticket": { "description": "Running-job ticket from a prior status \"running\" response. Pass it alone to poll that job; do not combine it with continuation or submission inputs.", "minLength": 1, "type": "string" }, "to_db": { "description": "Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.", "enum": [ "UniProtKB", "UniProtKB-Swiss-Prot", "UniProtKB_AC-ID", "Gene_Name", "GeneID", "Ensembl", "Ensembl_Protein", "PDB", "RefSeq_Nucleotide", "RefSeq_Protein", "ChEMBL", "PomBase", "WormBase_Protein" ], "type": "string" } }, "type": "object" }, "name": "uniprot_map_ids", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "status" ] }, { "required": [ "error" ] } ], "properties": { "continuation": { "additionalProperties": false, "description": "Next completed-page continuation (finished jobs only). Pass it alone to fetch the next page; absent on the terminal page.", "properties": { "cursor": { "description": "Opaque cursor for the next completed results page.", "minLength": 1, "type": "string" }, "jobId": { "description": "UniProt ID-mapping job identifier for the completed job.", "minLength": 1, "type": "string" } }, "required": [ "jobId", "cursor" ], "type": "object" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation refers to a result page that is unknown or expired. Other values are possible when a failure originates below the handler.", "examples": [ "missing_inputs", "conflicting_inputs", "unsupported_db_pair", "invalid_ticket", "invalid_continuation" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "mappedCount": { "description": "Number of resolved mappings (finished jobs only).", "type": "number" }, "notice": { "description": "Status guidance — e.g. that the job is still running, or that no IDs mapped.", "type": "string" }, "results": { "description": "Resolved mappings on this completed page (present only when status is \"finished\"). Failed source IDs are reported in unmappedIds.", "items": { "additionalProperties": false, "description": "A single from→to mapping.", "properties": { "from": { "description": "The source identifier that was mapped.", "type": "string" }, "to": { "description": "The resolved target identifier (e.g. a UniProtKB accession).", "type": "string" } }, "required": [ "from", "to" ], "type": "object" }, "type": "array" }, "status": { "description": "Job state: \"finished\" (one completed results page included) or \"running\" (poll with ticket).", "enum": [ "finished", "running" ], "type": "string" }, "ticket": { "description": "Running-job ticket (present only when status is \"running\"). Pass it alone to poll the same job.", "type": "string" }, "unmappedIds": { "description": "Source IDs UniProt reported as failed on this completed page. Absent when none failed.", "items": { "description": "A source ID that resolved to nothing.", "type": "string" }, "type": "array" } }, "type": "object" } }, { "description": "Search UniProtKB and return curated protein records. Pass text_search for a plain-language query (the 80% case) or query for the full Lucene field syntax (gene:TP53 AND organism_id:9606 AND reviewed:true) — exactly one is required. Reviewed (Swiss-Prot) entries are manually curated; unreviewed (TrEMBL) are computationally predicted and ~30x more numerous, so reviewed defaults to true to avoid drowning in predictions — set it false to include TrEMBL. Request facets (e.g. reviewed, model_organism) for server-side count breakdowns. Results page forward with an opaque cursor; UniProtKB has no offset paging. This is the discovery entry point — chain results[].accession into uniprot_get_entry for full records, or uniprot_get_sequence for FASTA.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "Opaque forward-pagination cursor from a prior response. Walk pages with this; random access to page N is not supported.", "type": "string" }, "facets": { "description": "Comma-separated upstream facet names for count breakdowns, e.g. \"reviewed,model_organism,proteins_with\". Returns a facets array alongside the hits.", "type": "string" }, "fields": { "description": "Comma-separated UniProtKB field names to project, e.g. \"accession,gene_names,cc_function\". Omit for a sensible default set covering name, gene, organism, length, reviewed, score, and a function snippet.", "type": "string" }, "organism_id": { "description": "Restrict to an NCBI taxon ID, e.g. 9606 for human. A convenience filter ANDed onto the query; resolve names with uniprot_get_taxonomy.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "query": { "description": "UniProtKB Lucene query with field prefixes — gene, organism_id, keyword (KW-xxxx), go (GO id), reviewed, protein_name, family, length, existence, accession. Example: \"gene:BRCA1 AND organism_id:9606 AND reviewed:true\". Provide this OR text_search, not both.", "type": "string" }, "reviewed": { "default": true, "description": "Restrict to reviewed Swiss-Prot entries. Defaults to true (curated only); set false to include unreviewed TrEMBL. Ignored when query already pins a reviewed: clause.", "type": "boolean" }, "size": { "description": "Number of hits per page (max 500). Omit for the server default.", "exclusiveMinimum": 0, "maximum": 500, "type": "integer" }, "text_search": { "description": "Plain-language search across protein names, gene names, and function, e.g. \"kinase apoptosis\". Provide this OR query, not both.", "type": "string" } }, "type": "object" }, "name": "uniprot_search_proteins", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "results", "totalResults", "effectiveQuery" ] }, { "required": [ "error" ] } ], "properties": { "cursor": { "description": "Forward cursor for the next page. Absent on the last page.", "type": "string" }, "effectiveQuery": { "description": "The query as the server assembled and sent it to UniProtKB.", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `missing_query`: Neither text_search nor query was provided. `conflicting_query`: Both text_search and query were provided. Other values are possible when a failure originates below the handler.", "examples": [ "missing_query", "conflicting_query" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "facets": { "description": "Upstream facet count breakdowns. Present only when facets were requested.", "items": { "additionalProperties": false, "description": "A server-side facet breakdown.", "properties": { "label": { "description": "Human-readable facet label, e.g. \"Status\".", "type": "string" }, "name": { "description": "Facet identifier, e.g. \"reviewed\".", "type": "string" }, "values": { "description": "Count buckets for this facet.", "items": { "additionalProperties": false, "description": "A single facet bucket.", "properties": { "count": { "description": "Number of matches in this bucket.", "type": "number" }, "label": { "description": "Human-readable value label, e.g. \"Reviewed (Swiss-Prot)\".", "type": "string" }, "value": { "description": "Facet value, e.g. \"true\".", "type": "string" } }, "required": [ "value", "label", "count" ], "type": "object" }, "type": "array" } }, "required": [ "name", "label", "values" ], "type": "object" }, "type": "array" }, "notice": { "description": "Guidance when nothing matched — echoes the query and suggests how to broaden.", "type": "string" }, "results": { "description": "Matching protein hits for this page.", "items": { "additionalProperties": false, "description": "A UniProtKB search hit.", "properties": { "accession": { "description": "UniProtKB primary accession, e.g. \"P04637\". The lookup key for uniprot_get_entry and uniprot_get_sequence.", "type": "string" }, "annotationScore": { "description": "Annotation confidence on a 1–5 scale; higher means more curation evidence.", "type": "number" }, "entryName": { "description": "UniProtKB mnemonic ID, e.g. \"P53_HUMAN\". Not an input key — use accession.", "type": "string" }, "functionSnippet": { "description": "First sentence(s) of the FUNCTION annotation, evidence references stripped. Omitted when no function is annotated.", "type": "string" }, "geneNames": { "description": "Gene names and synonyms for the protein.", "items": { "description": "A gene name or synonym.", "type": "string" }, "type": "array" }, "length": { "description": "Canonical sequence length in residues.", "type": "number" }, "organism": { "additionalProperties": false, "description": "Source organism.", "properties": { "commonName": { "description": "Organism common name, e.g. \"Human\". Omitted when none.", "type": "string" }, "scientificName": { "description": "Organism scientific name, e.g. \"Homo sapiens\".", "type": "string" }, "taxonId": { "description": "NCBI taxonomy ID, e.g. 9606.", "type": "number" } }, "required": [ "scientificName", "taxonId" ], "type": "object" }, "proteinExistence": { "description": "Evidence level for the protein's existence, e.g. \"1: Evidence at protein level\".", "type": "string" }, "proteinName": { "description": "Recommended full protein name. Omitted when the entry has none.", "type": "string" }, "reviewed": { "description": "True for reviewed Swiss-Prot (manually curated), false for unreviewed TrEMBL (computationally predicted).", "type": "boolean" } }, "required": [ "accession", "entryName", "geneNames", "organism", "length", "reviewed", "annotationScore", "proteinExistence" ], "type": "object" }, "type": "array" }, "totalResults": { "description": "Total matches for the query before pagination (from the upstream result count).", "type": "number" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:84de49663c4e11102c30f8113e2d951249a7b571e4a81d232d570fc63a08d2ad | sha256sum