[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-deepmind-uniprot-database":3,"mdc--hp66oe-key":33,"related-repo-google-deepmind-uniprot-database":1902,"related-org-google-deepmind-uniprot-database":2009},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"uniprot-database","retrieve protein metadata from UniProt","Access protein metadata, function, taxonomy, and sequences across UniProtKB, UniParc, and UniRef. Use when searching for proteins, mapping identifiers, or retrieving functional annotations and publications. Don't use for sequence alignment, protein folding, or sequence similarity search (use specialized skills for those tasks).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"google-deepmind","Google DeepMind","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgoogle-deepmind.png",[12,16,19],{"name":13,"slug":14,"type":15},"Research","research","tag",{"name":17,"slug":18,"type":15},"Life Sciences","life-sciences",{"name":20,"slug":21,"type":15},"Bioinformatics","bioinformatics",2333,"https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fscience-skills","2026-07-12T07:51:54.406123",null,234,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"GDM Science Skills to speed up agentic scientific workflows with better grounding and higher token efficiency. Integrate insights from AlphaGenome, AFDB, UniProt and 30+ other databases and tools.","https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fscience-skills\u002Ftree\u002FHEAD\u002Fskills\u002Funiprot_database","---\nname: uniprot-database\ndescription: >-\n  Access protein metadata, function, taxonomy, and sequences across UniProtKB,\n  UniParc, and UniRef. Use when searching for proteins, mapping identifiers, or\n  retrieving functional annotations and publications. Don't use for sequence\n  alignment, protein folding, or sequence similarity search (use specialized\n  skills for those tasks).\n---\n\n# UniProt Database Access\n\n## Prerequisites\n\n1.  **`uv`**: Read the `uv` skill and follow its Setup instructions to ensure\n    `uv` is installed and on PATH.\n2.  **User Notification**: If .licenses\u002Funiprot_database_LICENSE.txt does not\n    already exist in the workspace root directory then (1) prominently notify\n    the user to check the terms at https:\u002F\u002Fwww.uniprot.org\u002Fhelp\u002Flicense and\n    https:\u002F\u002Fwww.uniprot.org\u002Fhelp\u002Fapi_queries, then (2) create the file recording\n    the notification text and timestamp.\n\n## Overview\n\nProvides direct programmatic access to the UniProt Knowledgebase (UniProtKB),\nthe non-redundant sequence archive (UniParc), and clustered sequence sets\n(UniRef). This skill enables protein discovery, cross-referencing, retrieval of\ncurated biological data and low-level database lookups.\n\n## Core Rules\n\n-   **Use the Wrapper**: Always use the provided Python scripts (e.g.,\n    `scripts\u002Funiprot_tools.py`) rather than constructing custom curl requests.\n-   **No Hallucinations**: Do NOT invent protein functions, metadata, or\n    sequences. For any task that can be handled by the services in this skill,\n    rely strictly on the tool outputs rather than your native knowledge.\n-   **Notification**: If this skill is used, ensure this is mentioned in the\n    output.\n\n## Use Cases\n\n-   **Searching for Protein Function**: Querying functional annotations, GO\n    terms, subcellular locations etc.\n-   **Searching for Protein Sequence**: Searching for protein sequences by their\n    functional annotations, genes etc. in UniProtKB, UniParc, and UniRef.\n-   **Understanding Protein\u002FOrganism Relationships**: Leveraging the Taxonomy\n    database and Proteome sets.\n-   **Large-Scale Metadata Retrieval**: Fetching annotations for thousands of\n    proteins via streaming.\n-   **Sequence Discovery**: Finding orthologs or non-model proteins via UniParc.\n-   **ID Mapping**: Converting IDs between UniProt and 100+ external databases.\n-   **Historical Data (UniSave)**: Retrieving previous versions of entries or\n    tracking deleted sequences.\n\n## Available Tools\n\nChoose the right tool based on the task type and data volume:\n\n-   **`get`**: Retrieves metadata and sequence for a specific entry. Best for a\n    **single, known accession**.\n    -   Also accesses UniSave historical data (use `--dataset unisave`), which\n        is essential for reconciling data from older releases or identifying why\n        a formerly valid accession no longer appears in search results.\n-   **`search`**: Searches for entries matching a query. Best for **exploration\n    and discovery**.\n    -   Use with `--limit 5` to verify if a query returns the expected proteins\n        before committing to a larger download.\n    -   Automatically paginates if results exceed 500 entries to provide a\n        stable download.\n    -   *Warning*: For paginated search, TXT and other formats are not reliable\n        with `--limit` as it applies to lines, not entries.\n    -   See\n        [Search Query Fields Documentation](references\u002Fsearch_query_fields.md).\n-   **`stream`**: Streams all matching entries. Best for **bulk retrieval** of\n    large datasets (up to 10,000,000 entries).\n    -   Does NOT support `--limit`; always returns the full result set.\n    -   Use `search` with `--limit` if you need a subset.\n-   **`count`**: Counts entries matching a query. Best for answering direct\n    count questions or for **initial estimation** before running a full `search`\n    or `stream`.\n-   **`sparql`**: Executes graph queries for complex discovery. Best for\n    counting, exact sequence matches, and multi-database queries.\n    -   See [SPARQL Examples](references\u002Fsparql_examples.md).\n-   **`map`**: Converts IDs between UniProt and 100+ databases. Best for ID\n    mapping tasks.\n    -   See [ID Mapping Documentation](references\u002Fid_mapping_documentation.md).\n    -   **`search` vs. `map`**: Try `search` first before resorting to `map` if\n        not explicitly requested by the user. E.g., an external ID might be\n        searchable in UniParc but fail to map to UniProtKB.\n\n## Workflows\n\n### Typical Protein Research Workflow\n\nCopy this checklist and track progress:\n\n-   [ ] Step 1: Identify target protein(s) and organism(s).\n-   [ ] Step 2: Search UniProtKB for reviewed entries (`reviewed:true`).\n-   [ ] Step 3: If no reviewed entries, search unreviewed or use UniParc for\n    sequence discovery.\n-   [ ] Step 4: Map external IDs (e.g., Ensembl, PDB) to UniProt Accessions if\n    necessary.\n-   [ ] Step 5: Retrieve functional metadata or sequence in desired format\n    (JSON, FASTA).\n\n### Handling Search Misses (e.g. Gene Search in Non-Model Organisms)\n\nIf a direct query (e.g., `gene:SYMBOL`) fails:\n\n1.  **Pivot to Protein Name**: Search for the common protein name (e.g.,\n    `protein_name:Alpha-crystallin A`).\n2.  **Use UniParc**: Search the UniParc dataset, which integrates sequences from\n    across all of life, even if they aren't fully annotated in UniProtKB.\n3.  **Check Orthologs\u002FCanonical**: Resolve the Human\u002FMouse ortholog first to\n    find the correct naming\u002Fmnemonic.\n\n### Bulk Retrieval Priorities\n\n> [!IMPORTANT] Always prefer **`stream`** or **`sparql`** for bulk data.\n> `search` is suitable for exploration; if results exceed 500 entries, it\n> automatically paginates to provide a stable download.\n\n-   **Priority 0: `count`**: ALWAYS check the result count before running a\n    `search` or `stream`.\n-   **Priority 1: `stream`**: The primary method for bulk data retrieval (up to\n    10M entries). Does NOT support `--limit`; always returns all results.\n-   **Priority 2: `sparql`**: Best for complex filtering and exact matching\n    during retrieval.\n\n### Sequence-Based Search (Exact Match)\n\n> [!IMPORTANT] Use **SPARQL** when searching for a protein by its full amino\n> acid sequence. The REST API `\u002Fsearch` endpoint does not support direct\n> sequence-string lookups. For any non-exact match use specialized sequence\n> similarity search skills. Use UniParc if you cannot find query in UniProt.\n\n**SPARQL Query Pattern (UniProt):**\n\n```text\nPREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F>\nPREFIX rdf: \u003Chttp:\u002F\u002Fwww.w3.org\u002F1999\u002F02\u002F22-rdf-syntax-ns#>\nSELECT ?protein ?name WHERE {\n  ?protein a up:Protein ;\n           up:sequence\u002Frdf:value \"SEQUENCE_HERE\" .\n  OPTIONAL {\n    ?protein up:recommendedName\u002Fup:fullName ?name .\n  }\n}\n```\n\n**SPARQL Query Pattern (UniParc):**\n\n```text\nPREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F>\nPREFIX rdf: \u003Chttp:\u002F\u002Fwww.w3.org\u002F1999\u002F02\u002F22-rdf-syntax-ns#>\n\nSELECT ?uniparc ?val WHERE {\n  GRAPH \u003Chttp:\u002F\u002Fsparql.uniprot.org\u002Funiparc> {\n    ?uniparc a up:Sequence ;\n             rdf:value ?val .\n    FILTER (?val = \"SEQUENCE_HERE\")\n  }\n}\n```\n\n### Counting Entries Efficiently\n\n> [!IMPORTANT] Use **`count`** or **`SPARQL`** for counting entries (e.g., \"How\n> many proteins in Human?\").\n\n**Counting Pattern (Proteins per Organism):**\n\n```text\nPREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F>\nPREFIX taxon: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Ftaxonomy\u002F>\nSELECT (COUNT(?protein) AS ?count) WHERE {\n  ?protein a up:Protein ;\n           up:reviewed true ;\n           up:organism taxon:9606 .\n}\n```\n\n### REST Search Syntax\n\n-   **No Commas in Lists**: Commas are treated as literals. Use capitalized `OR`\n    to separate items.\n    *   Grouped: `accession:(P12345 OR P67890)`\n    *   Repeated: `accession:P12345 OR accession:P67890`\n-   **Space = AND**: E.g., `gene:p53 human` searches for both.\n\n## Example Commands\n\nBelow are example commands for each mode of `uniprot_tools.py`.\n\nCount total number of entries for a given query.\n\n```bash\nuv run scripts\u002Funiprot_tools.py count \"taxonomy_id:9606\"\n```\n\nSearch for entries.\n\n```bash\nuv run scripts\u002Funiprot_tools.py search \"gene:p53 AND reviewed:true\" --limit 5\n```\n\nRetrieve a single entry by accession.\n\n```bash\nuv run scripts\u002Funiprot_tools.py get P04637\n```\n\nRetrieve Historical\u002FDeleted Entry (UniSave).\n\n```bash\nuv run scripts\u002Funiprot_tools.py get P04637 --dataset unisave\n```\n\nStream large result sets for bulk retrieval (returns ALL matched entries, no\n`--limit` support).\n\n```bash\nuv run scripts\u002Funiprot_tools.py stream \"taxonomy_id:9606 AND reviewed:true\" --format tsv --fields accession,gene_names > human_reviewed.tsv\n```\n\nMap IDs from one database to another.\n\n```bash\nuv run scripts\u002Funiprot_tools.py map \"P04637\" --from_db UniProtKB_AC-ID --to_db Gene_Name\n```\n\nExecute graph queries with SPARQL.\n\n```bash\nuv run scripts\u002Funiprot_tools.py sparql 'PREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F> SELECT ?protein WHERE { ?protein a up:Protein ; up:reviewed true . } LIMIT 5'\n```\n\n## Common Mistakes\n\n-   **Using `name:` instead of `protein_name:`**: `name:` is not a supported\n    query term, use `protein_name:` instead.\n-   **Ignoring UniParc**: Non-model organisms might only exist in UniParc.\n-   **Confusing Accession with UPI**: UniProtKB Accessions (e.g., `P04637`) are\n    linked to functional metadata; UniParc IDs (`UPI...`) are for sequences\n    only. You can find cross-references from UniParc IDs to UniProtKB Accessions\n    using the ID Mapping tool.\n-   **Using UniProtKB-AC as Target in ID Mapping**: Use `UniProtKB` instead.\n-   **Giving up on Complex Queries**: If a complex search query fails, try to\n    use SPARQL instead of giving up.\n-   **Using IDs Without Verifying Meaning**: NEVER assume you know the meaning\n    of an ID (e.g. keyword, GO term, Pfam ID etc.). ALWAYS look up the natural\n    language description\u002Fmeaning of an ID in UniProt before using it for search\n    to ensure it matches your intended search term.\n-   **Ignoring Citation Noise in Broad Searches**: Broad text searches (`search\n    \"term\"`) frequently return false positives (e.g., common maintenance\n    proteins) because UniProt searches full metadata, including publication\n    titles. ALWAYS prefer field-specific filters like `cc_function:` or\n    `protein_name:` for functional discovery.\n-   **Forgetting to Quote Short Search Terms**: Short, unquoted terms (e.g.,\n    `lanM`) can match substrings in organism names (e.g., *Lan*cefieldella) or\n    other fields. Use quotes and field prefixes (e.g., `gene:lanM`) to isolate\n    true hits.\n-   **Manipulating Protein Sequences Directly**: Always use code and tools for\n    sequence-based operations. Do not attempt to edit, truncate, or modify\n    protein sequences manually.\n-   **Over-using Search for Bulk Data**: DO NOT use `search` for retrieving\n    millions of entries if `stream` or `sparql` can do the job. Streaming is\n    more efficient for very large datasets. Note that `stream` has a hard limit\n    of 10,000,000 outputs and does NOT support `--limit`.\n-   **Forgetting to Check Data Volume**: ALWAYS perform a `count` before running\n    a `search` without `--limit` or before using `stream`. Unlimited queries can\n    take a long time and consume significant resources if millions of entries\n    are returned.\n-   **Using `--limit` with `stream`**: The `stream` command does NOT support\n    `--limit`. If you need a limited number of results, use `search` with\n    `--limit` instead.\n-   **Forgetting the License Notice**: Do not neglect to state that the UniProt\n    Database was used and to advise the user to review the licensing terms when\n    presenting results for the **first time**. Even if the task is concise, this\n    attribution is required in the first response containing UniProt data.\n\n## Reference Materials\n\n-   [SPARQL Examples](references\u002Fsparql_examples.md)\n-   [Search Query Fields Documentation](references\u002Fsearch_query_fields.md)\n-   [ID Mapping Documentation](references\u002Fid_mapping_documentation.md)\n-   [UniProt Evidence Docs](https:\u002F\u002Fwww.uniprot.org\u002Fhelp\u002Fevidences)\n-   **Underlying API Endpoints** (Used by `scripts\u002Funiprot_tools.py`):\n    -   `get`, `search`, `stream`, `count` -> `rest.uniprot.org\u002F{dataset}\u002F`\n    -   `map` -> `rest.uniprot.org\u002Fidmapping\u002F`\n    -   `sparql` -> `sparql.uniprot.org\u002Fsparql`\n    -   `get --dataset unisave` -> `rest.uniprot.org\u002Funisave\u002F`\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,47,54,117,123,129,135,177,183,256,262,267,560,566,573,578,640,646,659,699,705,747,814,820,847,855,867,875,884,890,920,928,937,943,1007,1013,1025,1030,1081,1086,1138,1143,1175,1180,1221,1233,1303,1308,1368,1373,1415,1421,1755,1761,1896],{"type":39,"tag":40,"props":41,"children":43},"element","h1",{"id":42},"uniprot-database-access",[44],{"type":45,"value":46},"text","UniProt Database Access",{"type":39,"tag":48,"props":49,"children":51},"h2",{"id":50},"prerequisites",[52],{"type":45,"value":53},"Prerequisites",{"type":39,"tag":55,"props":56,"children":57},"ol",{},[58,89],{"type":39,"tag":59,"props":60,"children":61},"li",{},[62,73,75,80,82,87],{"type":39,"tag":63,"props":64,"children":65},"strong",{},[66],{"type":39,"tag":67,"props":68,"children":70},"code",{"className":69},[],[71],{"type":45,"value":72},"uv",{"type":45,"value":74},": Read the ",{"type":39,"tag":67,"props":76,"children":78},{"className":77},[],[79],{"type":45,"value":72},{"type":45,"value":81}," skill and follow its Setup instructions to ensure\n",{"type":39,"tag":67,"props":83,"children":85},{"className":84},[],[86],{"type":45,"value":72},{"type":45,"value":88}," is installed and on PATH.",{"type":39,"tag":59,"props":90,"children":91},{},[92,97,99,107,109,115],{"type":39,"tag":63,"props":93,"children":94},{},[95],{"type":45,"value":96},"User Notification",{"type":45,"value":98},": If .licenses\u002Funiprot_database_LICENSE.txt does not\nalready exist in the workspace root directory then (1) prominently notify\nthe user to check the terms at ",{"type":39,"tag":100,"props":101,"children":105},"a",{"href":102,"rel":103},"https:\u002F\u002Fwww.uniprot.org\u002Fhelp\u002Flicense",[104],"nofollow",[106],{"type":45,"value":102},{"type":45,"value":108}," and\n",{"type":39,"tag":100,"props":110,"children":113},{"href":111,"rel":112},"https:\u002F\u002Fwww.uniprot.org\u002Fhelp\u002Fapi_queries",[104],[114],{"type":45,"value":111},{"type":45,"value":116},", then (2) create the file recording\nthe notification text and timestamp.",{"type":39,"tag":48,"props":118,"children":120},{"id":119},"overview",[121],{"type":45,"value":122},"Overview",{"type":39,"tag":124,"props":125,"children":126},"p",{},[127],{"type":45,"value":128},"Provides direct programmatic access to the UniProt Knowledgebase (UniProtKB),\nthe non-redundant sequence archive (UniParc), and clustered sequence sets\n(UniRef). This skill enables protein discovery, cross-referencing, retrieval of\ncurated biological data and low-level database lookups.",{"type":39,"tag":48,"props":130,"children":132},{"id":131},"core-rules",[133],{"type":45,"value":134},"Core Rules",{"type":39,"tag":136,"props":137,"children":138},"ul",{},[139,157,167],{"type":39,"tag":59,"props":140,"children":141},{},[142,147,149,155],{"type":39,"tag":63,"props":143,"children":144},{},[145],{"type":45,"value":146},"Use the Wrapper",{"type":45,"value":148},": Always use the provided Python scripts (e.g.,\n",{"type":39,"tag":67,"props":150,"children":152},{"className":151},[],[153],{"type":45,"value":154},"scripts\u002Funiprot_tools.py",{"type":45,"value":156},") rather than constructing custom curl requests.",{"type":39,"tag":59,"props":158,"children":159},{},[160,165],{"type":39,"tag":63,"props":161,"children":162},{},[163],{"type":45,"value":164},"No Hallucinations",{"type":45,"value":166},": Do NOT invent protein functions, metadata, or\nsequences. For any task that can be handled by the services in this skill,\nrely strictly on the tool outputs rather than your native knowledge.",{"type":39,"tag":59,"props":168,"children":169},{},[170,175],{"type":39,"tag":63,"props":171,"children":172},{},[173],{"type":45,"value":174},"Notification",{"type":45,"value":176},": If this skill is used, ensure this is mentioned in the\noutput.",{"type":39,"tag":48,"props":178,"children":180},{"id":179},"use-cases",[181],{"type":45,"value":182},"Use Cases",{"type":39,"tag":136,"props":184,"children":185},{},[186,196,206,216,226,236,246],{"type":39,"tag":59,"props":187,"children":188},{},[189,194],{"type":39,"tag":63,"props":190,"children":191},{},[192],{"type":45,"value":193},"Searching for Protein Function",{"type":45,"value":195},": Querying functional annotations, GO\nterms, subcellular locations etc.",{"type":39,"tag":59,"props":197,"children":198},{},[199,204],{"type":39,"tag":63,"props":200,"children":201},{},[202],{"type":45,"value":203},"Searching for Protein Sequence",{"type":45,"value":205},": Searching for protein sequences by their\nfunctional annotations, genes etc. in UniProtKB, UniParc, and UniRef.",{"type":39,"tag":59,"props":207,"children":208},{},[209,214],{"type":39,"tag":63,"props":210,"children":211},{},[212],{"type":45,"value":213},"Understanding Protein\u002FOrganism Relationships",{"type":45,"value":215},": Leveraging the Taxonomy\ndatabase and Proteome sets.",{"type":39,"tag":59,"props":217,"children":218},{},[219,224],{"type":39,"tag":63,"props":220,"children":221},{},[222],{"type":45,"value":223},"Large-Scale Metadata Retrieval",{"type":45,"value":225},": Fetching annotations for thousands of\nproteins via streaming.",{"type":39,"tag":59,"props":227,"children":228},{},[229,234],{"type":39,"tag":63,"props":230,"children":231},{},[232],{"type":45,"value":233},"Sequence Discovery",{"type":45,"value":235},": Finding orthologs or non-model proteins via UniParc.",{"type":39,"tag":59,"props":237,"children":238},{},[239,244],{"type":39,"tag":63,"props":240,"children":241},{},[242],{"type":45,"value":243},"ID Mapping",{"type":45,"value":245},": Converting IDs between UniProt and 100+ external databases.",{"type":39,"tag":59,"props":247,"children":248},{},[249,254],{"type":39,"tag":63,"props":250,"children":251},{},[252],{"type":45,"value":253},"Historical Data (UniSave)",{"type":45,"value":255},": Retrieving previous versions of entries or\ntracking deleted sequences.",{"type":39,"tag":48,"props":257,"children":259},{"id":258},"available-tools",[260],{"type":45,"value":261},"Available Tools",{"type":39,"tag":124,"props":263,"children":264},{},[265],{"type":45,"value":266},"Choose the right tool based on the task type and data volume:",{"type":39,"tag":136,"props":268,"children":269},{},[270,307,380,435,469,498],{"type":39,"tag":59,"props":271,"children":272},{},[273,282,284,289,291],{"type":39,"tag":63,"props":274,"children":275},{},[276],{"type":39,"tag":67,"props":277,"children":279},{"className":278},[],[280],{"type":45,"value":281},"get",{"type":45,"value":283},": Retrieves metadata and sequence for a specific entry. Best for a\n",{"type":39,"tag":63,"props":285,"children":286},{},[287],{"type":45,"value":288},"single, known accession",{"type":45,"value":290},".\n",{"type":39,"tag":136,"props":292,"children":293},{},[294],{"type":39,"tag":59,"props":295,"children":296},{},[297,299,305],{"type":45,"value":298},"Also accesses UniSave historical data (use ",{"type":39,"tag":67,"props":300,"children":302},{"className":301},[],[303],{"type":45,"value":304},"--dataset unisave",{"type":45,"value":306},"), which\nis essential for reconciling data from older releases or identifying why\na formerly valid accession no longer appears in search results.",{"type":39,"tag":59,"props":308,"children":309},{},[310,319,321,326,327],{"type":39,"tag":63,"props":311,"children":312},{},[313],{"type":39,"tag":67,"props":314,"children":316},{"className":315},[],[317],{"type":45,"value":318},"search",{"type":45,"value":320},": Searches for entries matching a query. Best for ",{"type":39,"tag":63,"props":322,"children":323},{},[324],{"type":45,"value":325},"exploration\nand discovery",{"type":45,"value":290},{"type":39,"tag":136,"props":328,"children":329},{},[330,343,348,367],{"type":39,"tag":59,"props":331,"children":332},{},[333,335,341],{"type":45,"value":334},"Use with ",{"type":39,"tag":67,"props":336,"children":338},{"className":337},[],[339],{"type":45,"value":340},"--limit 5",{"type":45,"value":342}," to verify if a query returns the expected proteins\nbefore committing to a larger download.",{"type":39,"tag":59,"props":344,"children":345},{},[346],{"type":45,"value":347},"Automatically paginates if results exceed 500 entries to provide a\nstable download.",{"type":39,"tag":59,"props":349,"children":350},{},[351,357,359,365],{"type":39,"tag":352,"props":353,"children":354},"em",{},[355],{"type":45,"value":356},"Warning",{"type":45,"value":358},": For paginated search, TXT and other formats are not reliable\nwith ",{"type":39,"tag":67,"props":360,"children":362},{"className":361},[],[363],{"type":45,"value":364},"--limit",{"type":45,"value":366}," as it applies to lines, not entries.",{"type":39,"tag":59,"props":368,"children":369},{},[370,372,378],{"type":45,"value":371},"See\n",{"type":39,"tag":100,"props":373,"children":375},{"href":374},"references\u002Fsearch_query_fields.md",[376],{"type":45,"value":377},"Search Query Fields Documentation",{"type":45,"value":379},".",{"type":39,"tag":59,"props":381,"children":382},{},[383,392,394,399,401],{"type":39,"tag":63,"props":384,"children":385},{},[386],{"type":39,"tag":67,"props":387,"children":389},{"className":388},[],[390],{"type":45,"value":391},"stream",{"type":45,"value":393},": Streams all matching entries. Best for ",{"type":39,"tag":63,"props":395,"children":396},{},[397],{"type":45,"value":398},"bulk retrieval",{"type":45,"value":400}," of\nlarge datasets (up to 10,000,000 entries).\n",{"type":39,"tag":136,"props":402,"children":403},{},[404,416],{"type":39,"tag":59,"props":405,"children":406},{},[407,409,414],{"type":45,"value":408},"Does NOT support ",{"type":39,"tag":67,"props":410,"children":412},{"className":411},[],[413],{"type":45,"value":364},{"type":45,"value":415},"; always returns the full result set.",{"type":39,"tag":59,"props":417,"children":418},{},[419,421,426,428,433],{"type":45,"value":420},"Use ",{"type":39,"tag":67,"props":422,"children":424},{"className":423},[],[425],{"type":45,"value":318},{"type":45,"value":427}," with ",{"type":39,"tag":67,"props":429,"children":431},{"className":430},[],[432],{"type":45,"value":364},{"type":45,"value":434}," if you need a subset.",{"type":39,"tag":59,"props":436,"children":437},{},[438,447,449,454,456,461,463,468],{"type":39,"tag":63,"props":439,"children":440},{},[441],{"type":39,"tag":67,"props":442,"children":444},{"className":443},[],[445],{"type":45,"value":446},"count",{"type":45,"value":448},": Counts entries matching a query. Best for answering direct\ncount questions or for ",{"type":39,"tag":63,"props":450,"children":451},{},[452],{"type":45,"value":453},"initial estimation",{"type":45,"value":455}," before running a full ",{"type":39,"tag":67,"props":457,"children":459},{"className":458},[],[460],{"type":45,"value":318},{"type":45,"value":462},"\nor ",{"type":39,"tag":67,"props":464,"children":466},{"className":465},[],[467],{"type":45,"value":391},{"type":45,"value":379},{"type":39,"tag":59,"props":470,"children":471},{},[472,481,483],{"type":39,"tag":63,"props":473,"children":474},{},[475],{"type":39,"tag":67,"props":476,"children":478},{"className":477},[],[479],{"type":45,"value":480},"sparql",{"type":45,"value":482},": Executes graph queries for complex discovery. Best for\ncounting, exact sequence matches, and multi-database queries.\n",{"type":39,"tag":136,"props":484,"children":485},{},[486],{"type":39,"tag":59,"props":487,"children":488},{},[489,491,497],{"type":45,"value":490},"See ",{"type":39,"tag":100,"props":492,"children":494},{"href":493},"references\u002Fsparql_examples.md",[495],{"type":45,"value":496},"SPARQL Examples",{"type":45,"value":379},{"type":39,"tag":59,"props":499,"children":500},{},[501,510,512],{"type":39,"tag":63,"props":502,"children":503},{},[504],{"type":39,"tag":67,"props":505,"children":507},{"className":506},[],[508],{"type":45,"value":509},"map",{"type":45,"value":511},": Converts IDs between UniProt and 100+ databases. Best for ID\nmapping tasks.\n",{"type":39,"tag":136,"props":513,"children":514},{},[515,526],{"type":39,"tag":59,"props":516,"children":517},{},[518,519,525],{"type":45,"value":490},{"type":39,"tag":100,"props":520,"children":522},{"href":521},"references\u002Fid_mapping_documentation.md",[523],{"type":45,"value":524},"ID Mapping Documentation",{"type":45,"value":379},{"type":39,"tag":59,"props":527,"children":528},{},[529,544,546,551,553,558],{"type":39,"tag":63,"props":530,"children":531},{},[532,537,539],{"type":39,"tag":67,"props":533,"children":535},{"className":534},[],[536],{"type":45,"value":318},{"type":45,"value":538}," vs. ",{"type":39,"tag":67,"props":540,"children":542},{"className":541},[],[543],{"type":45,"value":509},{"type":45,"value":545},": Try ",{"type":39,"tag":67,"props":547,"children":549},{"className":548},[],[550],{"type":45,"value":318},{"type":45,"value":552}," first before resorting to ",{"type":39,"tag":67,"props":554,"children":556},{"className":555},[],[557],{"type":45,"value":509},{"type":45,"value":559}," if\nnot explicitly requested by the user. E.g., an external ID might be\nsearchable in UniParc but fail to map to UniProtKB.",{"type":39,"tag":48,"props":561,"children":563},{"id":562},"workflows",[564],{"type":45,"value":565},"Workflows",{"type":39,"tag":567,"props":568,"children":570},"h3",{"id":569},"typical-protein-research-workflow",[571],{"type":45,"value":572},"Typical Protein Research Workflow",{"type":39,"tag":124,"props":574,"children":575},{},[576],{"type":45,"value":577},"Copy this checklist and track progress:",{"type":39,"tag":136,"props":579,"children":582},{"className":580},[581],"contains-task-list",[583,596,613,622,631],{"type":39,"tag":59,"props":584,"children":587},{"className":585},[586],"task-list-item",[588,594],{"type":39,"tag":589,"props":590,"children":593},"input",{"disabled":591,"type":592},true,"checkbox",[],{"type":45,"value":595}," Step 1: Identify target protein(s) and organism(s).",{"type":39,"tag":59,"props":597,"children":599},{"className":598},[586],[600,603,605,611],{"type":39,"tag":589,"props":601,"children":602},{"disabled":591,"type":592},[],{"type":45,"value":604}," Step 2: Search UniProtKB for reviewed entries (",{"type":39,"tag":67,"props":606,"children":608},{"className":607},[],[609],{"type":45,"value":610},"reviewed:true",{"type":45,"value":612},").",{"type":39,"tag":59,"props":614,"children":616},{"className":615},[586],[617,620],{"type":39,"tag":589,"props":618,"children":619},{"disabled":591,"type":592},[],{"type":45,"value":621}," Step 3: If no reviewed entries, search unreviewed or use UniParc for\nsequence discovery.",{"type":39,"tag":59,"props":623,"children":625},{"className":624},[586],[626,629],{"type":39,"tag":589,"props":627,"children":628},{"disabled":591,"type":592},[],{"type":45,"value":630}," Step 4: Map external IDs (e.g., Ensembl, PDB) to UniProt Accessions if\nnecessary.",{"type":39,"tag":59,"props":632,"children":634},{"className":633},[586],[635,638],{"type":39,"tag":589,"props":636,"children":637},{"disabled":591,"type":592},[],{"type":45,"value":639}," Step 5: Retrieve functional metadata or sequence in desired format\n(JSON, FASTA).",{"type":39,"tag":567,"props":641,"children":643},{"id":642},"handling-search-misses-eg-gene-search-in-non-model-organisms",[644],{"type":45,"value":645},"Handling Search Misses (e.g. Gene Search in Non-Model Organisms)",{"type":39,"tag":124,"props":647,"children":648},{},[649,651,657],{"type":45,"value":650},"If a direct query (e.g., ",{"type":39,"tag":67,"props":652,"children":654},{"className":653},[],[655],{"type":45,"value":656},"gene:SYMBOL",{"type":45,"value":658},") fails:",{"type":39,"tag":55,"props":660,"children":661},{},[662,679,689],{"type":39,"tag":59,"props":663,"children":664},{},[665,670,672,678],{"type":39,"tag":63,"props":666,"children":667},{},[668],{"type":45,"value":669},"Pivot to Protein Name",{"type":45,"value":671},": Search for the common protein name (e.g.,\n",{"type":39,"tag":67,"props":673,"children":675},{"className":674},[],[676],{"type":45,"value":677},"protein_name:Alpha-crystallin A",{"type":45,"value":612},{"type":39,"tag":59,"props":680,"children":681},{},[682,687],{"type":39,"tag":63,"props":683,"children":684},{},[685],{"type":45,"value":686},"Use UniParc",{"type":45,"value":688},": Search the UniParc dataset, which integrates sequences from\nacross all of life, even if they aren't fully annotated in UniProtKB.",{"type":39,"tag":59,"props":690,"children":691},{},[692,697],{"type":39,"tag":63,"props":693,"children":694},{},[695],{"type":45,"value":696},"Check Orthologs\u002FCanonical",{"type":45,"value":698},": Resolve the Human\u002FMouse ortholog first to\nfind the correct naming\u002Fmnemonic.",{"type":39,"tag":567,"props":700,"children":702},{"id":701},"bulk-retrieval-priorities",[703],{"type":45,"value":704},"Bulk Retrieval Priorities",{"type":39,"tag":706,"props":707,"children":708},"blockquote",{},[709],{"type":39,"tag":124,"props":710,"children":711},{},[712,718,720,728,730,738,740,745],{"type":39,"tag":713,"props":714,"children":715},"span",{},[716],{"type":45,"value":717},"!IMPORTANT",{"type":45,"value":719}," Always prefer ",{"type":39,"tag":63,"props":721,"children":722},{},[723],{"type":39,"tag":67,"props":724,"children":726},{"className":725},[],[727],{"type":45,"value":391},{"type":45,"value":729}," or ",{"type":39,"tag":63,"props":731,"children":732},{},[733],{"type":39,"tag":67,"props":734,"children":736},{"className":735},[],[737],{"type":45,"value":480},{"type":45,"value":739}," for bulk data.\n",{"type":39,"tag":67,"props":741,"children":743},{"className":742},[],[744],{"type":45,"value":318},{"type":45,"value":746}," is suitable for exploration; if results exceed 500 entries, it\nautomatically paginates to provide a stable download.",{"type":39,"tag":136,"props":748,"children":749},{},[750,777,799],{"type":39,"tag":59,"props":751,"children":752},{},[753,763,765,770,771,776],{"type":39,"tag":63,"props":754,"children":755},{},[756,758],{"type":45,"value":757},"Priority 0: ",{"type":39,"tag":67,"props":759,"children":761},{"className":760},[],[762],{"type":45,"value":446},{"type":45,"value":764},": ALWAYS check the result count before running a\n",{"type":39,"tag":67,"props":766,"children":768},{"className":767},[],[769],{"type":45,"value":318},{"type":45,"value":729},{"type":39,"tag":67,"props":772,"children":774},{"className":773},[],[775],{"type":45,"value":391},{"type":45,"value":379},{"type":39,"tag":59,"props":778,"children":779},{},[780,790,792,797],{"type":39,"tag":63,"props":781,"children":782},{},[783,785],{"type":45,"value":784},"Priority 1: ",{"type":39,"tag":67,"props":786,"children":788},{"className":787},[],[789],{"type":45,"value":391},{"type":45,"value":791},": The primary method for bulk data retrieval (up to\n10M entries). Does NOT support ",{"type":39,"tag":67,"props":793,"children":795},{"className":794},[],[796],{"type":45,"value":364},{"type":45,"value":798},"; always returns all results.",{"type":39,"tag":59,"props":800,"children":801},{},[802,812],{"type":39,"tag":63,"props":803,"children":804},{},[805,807],{"type":45,"value":806},"Priority 2: ",{"type":39,"tag":67,"props":808,"children":810},{"className":809},[],[811],{"type":45,"value":480},{"type":45,"value":813},": Best for complex filtering and exact matching\nduring retrieval.",{"type":39,"tag":567,"props":815,"children":817},{"id":816},"sequence-based-search-exact-match",[818],{"type":45,"value":819},"Sequence-Based Search (Exact Match)",{"type":39,"tag":706,"props":821,"children":822},{},[823],{"type":39,"tag":124,"props":824,"children":825},{},[826,830,832,837,839,845],{"type":39,"tag":713,"props":827,"children":828},{},[829],{"type":45,"value":717},{"type":45,"value":831}," Use ",{"type":39,"tag":63,"props":833,"children":834},{},[835],{"type":45,"value":836},"SPARQL",{"type":45,"value":838}," when searching for a protein by its full amino\nacid sequence. The REST API ",{"type":39,"tag":67,"props":840,"children":842},{"className":841},[],[843],{"type":45,"value":844},"\u002Fsearch",{"type":45,"value":846}," endpoint does not support direct\nsequence-string lookups. For any non-exact match use specialized sequence\nsimilarity search skills. Use UniParc if you cannot find query in UniProt.",{"type":39,"tag":124,"props":848,"children":849},{},[850],{"type":39,"tag":63,"props":851,"children":852},{},[853],{"type":45,"value":854},"SPARQL Query Pattern (UniProt):",{"type":39,"tag":856,"props":857,"children":862},"pre",{"className":858,"code":860,"language":45,"meta":861},[859],"language-text","PREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F>\nPREFIX rdf: \u003Chttp:\u002F\u002Fwww.w3.org\u002F1999\u002F02\u002F22-rdf-syntax-ns#>\nSELECT ?protein ?name WHERE {\n  ?protein a up:Protein ;\n           up:sequence\u002Frdf:value \"SEQUENCE_HERE\" .\n  OPTIONAL {\n    ?protein up:recommendedName\u002Fup:fullName ?name .\n  }\n}\n","",[863],{"type":39,"tag":67,"props":864,"children":865},{"__ignoreMap":861},[866],{"type":45,"value":860},{"type":39,"tag":124,"props":868,"children":869},{},[870],{"type":39,"tag":63,"props":871,"children":872},{},[873],{"type":45,"value":874},"SPARQL Query Pattern (UniParc):",{"type":39,"tag":856,"props":876,"children":879},{"className":877,"code":878,"language":45,"meta":861},[859],"PREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F>\nPREFIX rdf: \u003Chttp:\u002F\u002Fwww.w3.org\u002F1999\u002F02\u002F22-rdf-syntax-ns#>\n\nSELECT ?uniparc ?val WHERE {\n  GRAPH \u003Chttp:\u002F\u002Fsparql.uniprot.org\u002Funiparc> {\n    ?uniparc a up:Sequence ;\n             rdf:value ?val .\n    FILTER (?val = \"SEQUENCE_HERE\")\n  }\n}\n",[880],{"type":39,"tag":67,"props":881,"children":882},{"__ignoreMap":861},[883],{"type":45,"value":878},{"type":39,"tag":567,"props":885,"children":887},{"id":886},"counting-entries-efficiently",[888],{"type":45,"value":889},"Counting Entries Efficiently",{"type":39,"tag":706,"props":891,"children":892},{},[893],{"type":39,"tag":124,"props":894,"children":895},{},[896,900,901,909,910,918],{"type":39,"tag":713,"props":897,"children":898},{},[899],{"type":45,"value":717},{"type":45,"value":831},{"type":39,"tag":63,"props":902,"children":903},{},[904],{"type":39,"tag":67,"props":905,"children":907},{"className":906},[],[908],{"type":45,"value":446},{"type":45,"value":729},{"type":39,"tag":63,"props":911,"children":912},{},[913],{"type":39,"tag":67,"props":914,"children":916},{"className":915},[],[917],{"type":45,"value":836},{"type":45,"value":919}," for counting entries (e.g., \"How\nmany proteins in Human?\").",{"type":39,"tag":124,"props":921,"children":922},{},[923],{"type":39,"tag":63,"props":924,"children":925},{},[926],{"type":45,"value":927},"Counting Pattern (Proteins per Organism):",{"type":39,"tag":856,"props":929,"children":932},{"className":930,"code":931,"language":45,"meta":861},[859],"PREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F>\nPREFIX taxon: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Ftaxonomy\u002F>\nSELECT (COUNT(?protein) AS ?count) WHERE {\n  ?protein a up:Protein ;\n           up:reviewed true ;\n           up:organism taxon:9606 .\n}\n",[933],{"type":39,"tag":67,"props":934,"children":935},{"__ignoreMap":861},[936],{"type":45,"value":931},{"type":39,"tag":567,"props":938,"children":940},{"id":939},"rest-search-syntax",[941],{"type":45,"value":942},"REST Search Syntax",{"type":39,"tag":136,"props":944,"children":945},{},[946,989],{"type":39,"tag":59,"props":947,"children":948},{},[949,954,956,962,964],{"type":39,"tag":63,"props":950,"children":951},{},[952],{"type":45,"value":953},"No Commas in Lists",{"type":45,"value":955},": Commas are treated as literals. Use capitalized ",{"type":39,"tag":67,"props":957,"children":959},{"className":958},[],[960],{"type":45,"value":961},"OR",{"type":45,"value":963},"\nto separate items.\n",{"type":39,"tag":136,"props":965,"children":966},{},[967,978],{"type":39,"tag":59,"props":968,"children":969},{},[970,972],{"type":45,"value":971},"Grouped: ",{"type":39,"tag":67,"props":973,"children":975},{"className":974},[],[976],{"type":45,"value":977},"accession:(P12345 OR P67890)",{"type":39,"tag":59,"props":979,"children":980},{},[981,983],{"type":45,"value":982},"Repeated: ",{"type":39,"tag":67,"props":984,"children":986},{"className":985},[],[987],{"type":45,"value":988},"accession:P12345 OR accession:P67890",{"type":39,"tag":59,"props":990,"children":991},{},[992,997,999,1005],{"type":39,"tag":63,"props":993,"children":994},{},[995],{"type":45,"value":996},"Space = AND",{"type":45,"value":998},": E.g., ",{"type":39,"tag":67,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":45,"value":1004},"gene:p53 human",{"type":45,"value":1006}," searches for both.",{"type":39,"tag":48,"props":1008,"children":1010},{"id":1009},"example-commands",[1011],{"type":45,"value":1012},"Example Commands",{"type":39,"tag":124,"props":1014,"children":1015},{},[1016,1018,1024],{"type":45,"value":1017},"Below are example commands for each mode of ",{"type":39,"tag":67,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":45,"value":1023},"uniprot_tools.py",{"type":45,"value":379},{"type":39,"tag":124,"props":1026,"children":1027},{},[1028],{"type":45,"value":1029},"Count total number of entries for a given query.",{"type":39,"tag":856,"props":1031,"children":1035},{"className":1032,"code":1033,"language":1034,"meta":861,"style":861},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","uv run scripts\u002Funiprot_tools.py count \"taxonomy_id:9606\"\n","bash",[1036],{"type":39,"tag":67,"props":1037,"children":1038},{"__ignoreMap":861},[1039],{"type":39,"tag":713,"props":1040,"children":1043},{"class":1041,"line":1042},"line",1,[1044,1049,1055,1060,1065,1071,1076],{"type":39,"tag":713,"props":1045,"children":1047},{"style":1046},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1048],{"type":45,"value":72},{"type":39,"tag":713,"props":1050,"children":1052},{"style":1051},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1053],{"type":45,"value":1054}," run",{"type":39,"tag":713,"props":1056,"children":1057},{"style":1051},[1058],{"type":45,"value":1059}," scripts\u002Funiprot_tools.py",{"type":39,"tag":713,"props":1061,"children":1062},{"style":1051},[1063],{"type":45,"value":1064}," count",{"type":39,"tag":713,"props":1066,"children":1068},{"style":1067},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1069],{"type":45,"value":1070}," \"",{"type":39,"tag":713,"props":1072,"children":1073},{"style":1051},[1074],{"type":45,"value":1075},"taxonomy_id:9606",{"type":39,"tag":713,"props":1077,"children":1078},{"style":1067},[1079],{"type":45,"value":1080},"\"\n",{"type":39,"tag":124,"props":1082,"children":1083},{},[1084],{"type":45,"value":1085},"Search for entries.",{"type":39,"tag":856,"props":1087,"children":1089},{"className":1032,"code":1088,"language":1034,"meta":861,"style":861},"uv run scripts\u002Funiprot_tools.py search \"gene:p53 AND reviewed:true\" --limit 5\n",[1090],{"type":39,"tag":67,"props":1091,"children":1092},{"__ignoreMap":861},[1093],{"type":39,"tag":713,"props":1094,"children":1095},{"class":1041,"line":1042},[1096,1100,1104,1108,1113,1117,1122,1127,1132],{"type":39,"tag":713,"props":1097,"children":1098},{"style":1046},[1099],{"type":45,"value":72},{"type":39,"tag":713,"props":1101,"children":1102},{"style":1051},[1103],{"type":45,"value":1054},{"type":39,"tag":713,"props":1105,"children":1106},{"style":1051},[1107],{"type":45,"value":1059},{"type":39,"tag":713,"props":1109,"children":1110},{"style":1051},[1111],{"type":45,"value":1112}," search",{"type":39,"tag":713,"props":1114,"children":1115},{"style":1067},[1116],{"type":45,"value":1070},{"type":39,"tag":713,"props":1118,"children":1119},{"style":1051},[1120],{"type":45,"value":1121},"gene:p53 AND reviewed:true",{"type":39,"tag":713,"props":1123,"children":1124},{"style":1067},[1125],{"type":45,"value":1126},"\"",{"type":39,"tag":713,"props":1128,"children":1129},{"style":1051},[1130],{"type":45,"value":1131}," --limit",{"type":39,"tag":713,"props":1133,"children":1135},{"style":1134},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1136],{"type":45,"value":1137}," 5\n",{"type":39,"tag":124,"props":1139,"children":1140},{},[1141],{"type":45,"value":1142},"Retrieve a single entry by accession.",{"type":39,"tag":856,"props":1144,"children":1146},{"className":1032,"code":1145,"language":1034,"meta":861,"style":861},"uv run scripts\u002Funiprot_tools.py get P04637\n",[1147],{"type":39,"tag":67,"props":1148,"children":1149},{"__ignoreMap":861},[1150],{"type":39,"tag":713,"props":1151,"children":1152},{"class":1041,"line":1042},[1153,1157,1161,1165,1170],{"type":39,"tag":713,"props":1154,"children":1155},{"style":1046},[1156],{"type":45,"value":72},{"type":39,"tag":713,"props":1158,"children":1159},{"style":1051},[1160],{"type":45,"value":1054},{"type":39,"tag":713,"props":1162,"children":1163},{"style":1051},[1164],{"type":45,"value":1059},{"type":39,"tag":713,"props":1166,"children":1167},{"style":1051},[1168],{"type":45,"value":1169}," get",{"type":39,"tag":713,"props":1171,"children":1172},{"style":1051},[1173],{"type":45,"value":1174}," P04637\n",{"type":39,"tag":124,"props":1176,"children":1177},{},[1178],{"type":45,"value":1179},"Retrieve Historical\u002FDeleted Entry (UniSave).",{"type":39,"tag":856,"props":1181,"children":1183},{"className":1032,"code":1182,"language":1034,"meta":861,"style":861},"uv run scripts\u002Funiprot_tools.py get P04637 --dataset unisave\n",[1184],{"type":39,"tag":67,"props":1185,"children":1186},{"__ignoreMap":861},[1187],{"type":39,"tag":713,"props":1188,"children":1189},{"class":1041,"line":1042},[1190,1194,1198,1202,1206,1211,1216],{"type":39,"tag":713,"props":1191,"children":1192},{"style":1046},[1193],{"type":45,"value":72},{"type":39,"tag":713,"props":1195,"children":1196},{"style":1051},[1197],{"type":45,"value":1054},{"type":39,"tag":713,"props":1199,"children":1200},{"style":1051},[1201],{"type":45,"value":1059},{"type":39,"tag":713,"props":1203,"children":1204},{"style":1051},[1205],{"type":45,"value":1169},{"type":39,"tag":713,"props":1207,"children":1208},{"style":1051},[1209],{"type":45,"value":1210}," P04637",{"type":39,"tag":713,"props":1212,"children":1213},{"style":1051},[1214],{"type":45,"value":1215}," --dataset",{"type":39,"tag":713,"props":1217,"children":1218},{"style":1051},[1219],{"type":45,"value":1220}," unisave\n",{"type":39,"tag":124,"props":1222,"children":1223},{},[1224,1226,1231],{"type":45,"value":1225},"Stream large result sets for bulk retrieval (returns ALL matched entries, no\n",{"type":39,"tag":67,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":45,"value":364},{"type":45,"value":1232}," support).",{"type":39,"tag":856,"props":1234,"children":1236},{"className":1032,"code":1235,"language":1034,"meta":861,"style":861},"uv run scripts\u002Funiprot_tools.py stream \"taxonomy_id:9606 AND reviewed:true\" --format tsv --fields accession,gene_names > human_reviewed.tsv\n",[1237],{"type":39,"tag":67,"props":1238,"children":1239},{"__ignoreMap":861},[1240],{"type":39,"tag":713,"props":1241,"children":1242},{"class":1041,"line":1042},[1243,1247,1251,1255,1260,1264,1269,1273,1278,1283,1288,1293,1298],{"type":39,"tag":713,"props":1244,"children":1245},{"style":1046},[1246],{"type":45,"value":72},{"type":39,"tag":713,"props":1248,"children":1249},{"style":1051},[1250],{"type":45,"value":1054},{"type":39,"tag":713,"props":1252,"children":1253},{"style":1051},[1254],{"type":45,"value":1059},{"type":39,"tag":713,"props":1256,"children":1257},{"style":1051},[1258],{"type":45,"value":1259}," stream",{"type":39,"tag":713,"props":1261,"children":1262},{"style":1067},[1263],{"type":45,"value":1070},{"type":39,"tag":713,"props":1265,"children":1266},{"style":1051},[1267],{"type":45,"value":1268},"taxonomy_id:9606 AND reviewed:true",{"type":39,"tag":713,"props":1270,"children":1271},{"style":1067},[1272],{"type":45,"value":1126},{"type":39,"tag":713,"props":1274,"children":1275},{"style":1051},[1276],{"type":45,"value":1277}," --format",{"type":39,"tag":713,"props":1279,"children":1280},{"style":1051},[1281],{"type":45,"value":1282}," tsv",{"type":39,"tag":713,"props":1284,"children":1285},{"style":1051},[1286],{"type":45,"value":1287}," --fields",{"type":39,"tag":713,"props":1289,"children":1290},{"style":1051},[1291],{"type":45,"value":1292}," accession,gene_names",{"type":39,"tag":713,"props":1294,"children":1295},{"style":1067},[1296],{"type":45,"value":1297}," >",{"type":39,"tag":713,"props":1299,"children":1300},{"style":1051},[1301],{"type":45,"value":1302}," human_reviewed.tsv\n",{"type":39,"tag":124,"props":1304,"children":1305},{},[1306],{"type":45,"value":1307},"Map IDs from one database to another.",{"type":39,"tag":856,"props":1309,"children":1311},{"className":1032,"code":1310,"language":1034,"meta":861,"style":861},"uv run scripts\u002Funiprot_tools.py map \"P04637\" --from_db UniProtKB_AC-ID --to_db Gene_Name\n",[1312],{"type":39,"tag":67,"props":1313,"children":1314},{"__ignoreMap":861},[1315],{"type":39,"tag":713,"props":1316,"children":1317},{"class":1041,"line":1042},[1318,1322,1326,1330,1335,1339,1344,1348,1353,1358,1363],{"type":39,"tag":713,"props":1319,"children":1320},{"style":1046},[1321],{"type":45,"value":72},{"type":39,"tag":713,"props":1323,"children":1324},{"style":1051},[1325],{"type":45,"value":1054},{"type":39,"tag":713,"props":1327,"children":1328},{"style":1051},[1329],{"type":45,"value":1059},{"type":39,"tag":713,"props":1331,"children":1332},{"style":1051},[1333],{"type":45,"value":1334}," map",{"type":39,"tag":713,"props":1336,"children":1337},{"style":1067},[1338],{"type":45,"value":1070},{"type":39,"tag":713,"props":1340,"children":1341},{"style":1051},[1342],{"type":45,"value":1343},"P04637",{"type":39,"tag":713,"props":1345,"children":1346},{"style":1067},[1347],{"type":45,"value":1126},{"type":39,"tag":713,"props":1349,"children":1350},{"style":1051},[1351],{"type":45,"value":1352}," --from_db",{"type":39,"tag":713,"props":1354,"children":1355},{"style":1051},[1356],{"type":45,"value":1357}," UniProtKB_AC-ID",{"type":39,"tag":713,"props":1359,"children":1360},{"style":1051},[1361],{"type":45,"value":1362}," --to_db",{"type":39,"tag":713,"props":1364,"children":1365},{"style":1051},[1366],{"type":45,"value":1367}," Gene_Name\n",{"type":39,"tag":124,"props":1369,"children":1370},{},[1371],{"type":45,"value":1372},"Execute graph queries with SPARQL.",{"type":39,"tag":856,"props":1374,"children":1376},{"className":1032,"code":1375,"language":1034,"meta":861,"style":861},"uv run scripts\u002Funiprot_tools.py sparql 'PREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F> SELECT ?protein WHERE { ?protein a up:Protein ; up:reviewed true . } LIMIT 5'\n",[1377],{"type":39,"tag":67,"props":1378,"children":1379},{"__ignoreMap":861},[1380],{"type":39,"tag":713,"props":1381,"children":1382},{"class":1041,"line":1042},[1383,1387,1391,1395,1400,1405,1410],{"type":39,"tag":713,"props":1384,"children":1385},{"style":1046},[1386],{"type":45,"value":72},{"type":39,"tag":713,"props":1388,"children":1389},{"style":1051},[1390],{"type":45,"value":1054},{"type":39,"tag":713,"props":1392,"children":1393},{"style":1051},[1394],{"type":45,"value":1059},{"type":39,"tag":713,"props":1396,"children":1397},{"style":1051},[1398],{"type":45,"value":1399}," sparql",{"type":39,"tag":713,"props":1401,"children":1402},{"style":1067},[1403],{"type":45,"value":1404}," '",{"type":39,"tag":713,"props":1406,"children":1407},{"style":1051},[1408],{"type":45,"value":1409},"PREFIX up: \u003Chttp:\u002F\u002Fpurl.uniprot.org\u002Fcore\u002F> SELECT ?protein WHERE { ?protein a up:Protein ; up:reviewed true . } LIMIT 5",{"type":39,"tag":713,"props":1411,"children":1412},{"style":1067},[1413],{"type":45,"value":1414},"'\n",{"type":39,"tag":48,"props":1416,"children":1418},{"id":1417},"common-mistakes",[1419],{"type":45,"value":1420},"Common Mistakes",{"type":39,"tag":136,"props":1422,"children":1423},{},[1424,1462,1472,1497,1514,1524,1534,1567,1600,1610,1653,1691,1738],{"type":39,"tag":59,"props":1425,"children":1426},{},[1427,1446,1448,1453,1455,1460],{"type":39,"tag":63,"props":1428,"children":1429},{},[1430,1432,1438,1440],{"type":45,"value":1431},"Using ",{"type":39,"tag":67,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":45,"value":1437},"name:",{"type":45,"value":1439}," instead of ",{"type":39,"tag":67,"props":1441,"children":1443},{"className":1442},[],[1444],{"type":45,"value":1445},"protein_name:",{"type":45,"value":1447},": ",{"type":39,"tag":67,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":45,"value":1437},{"type":45,"value":1454}," is not a supported\nquery term, use ",{"type":39,"tag":67,"props":1456,"children":1458},{"className":1457},[],[1459],{"type":45,"value":1445},{"type":45,"value":1461}," instead.",{"type":39,"tag":59,"props":1463,"children":1464},{},[1465,1470],{"type":39,"tag":63,"props":1466,"children":1467},{},[1468],{"type":45,"value":1469},"Ignoring UniParc",{"type":45,"value":1471},": Non-model organisms might only exist in UniParc.",{"type":39,"tag":59,"props":1473,"children":1474},{},[1475,1480,1482,1487,1489,1495],{"type":39,"tag":63,"props":1476,"children":1477},{},[1478],{"type":45,"value":1479},"Confusing Accession with UPI",{"type":45,"value":1481},": UniProtKB Accessions (e.g., ",{"type":39,"tag":67,"props":1483,"children":1485},{"className":1484},[],[1486],{"type":45,"value":1343},{"type":45,"value":1488},") are\nlinked to functional metadata; UniParc IDs (",{"type":39,"tag":67,"props":1490,"children":1492},{"className":1491},[],[1493],{"type":45,"value":1494},"UPI...",{"type":45,"value":1496},") are for sequences\nonly. You can find cross-references from UniParc IDs to UniProtKB Accessions\nusing the ID Mapping tool.",{"type":39,"tag":59,"props":1498,"children":1499},{},[1500,1505,1507,1513],{"type":39,"tag":63,"props":1501,"children":1502},{},[1503],{"type":45,"value":1504},"Using UniProtKB-AC as Target in ID Mapping",{"type":45,"value":1506},": Use ",{"type":39,"tag":67,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":45,"value":1512},"UniProtKB",{"type":45,"value":1461},{"type":39,"tag":59,"props":1515,"children":1516},{},[1517,1522],{"type":39,"tag":63,"props":1518,"children":1519},{},[1520],{"type":45,"value":1521},"Giving up on Complex Queries",{"type":45,"value":1523},": If a complex search query fails, try to\nuse SPARQL instead of giving up.",{"type":39,"tag":59,"props":1525,"children":1526},{},[1527,1532],{"type":39,"tag":63,"props":1528,"children":1529},{},[1530],{"type":45,"value":1531},"Using IDs Without Verifying Meaning",{"type":45,"value":1533},": NEVER assume you know the meaning\nof an ID (e.g. keyword, GO term, Pfam ID etc.). ALWAYS look up the natural\nlanguage description\u002Fmeaning of an ID in UniProt before using it for search\nto ensure it matches your intended search term.",{"type":39,"tag":59,"props":1535,"children":1536},{},[1537,1542,1544,1550,1552,1558,1560,1565],{"type":39,"tag":63,"props":1538,"children":1539},{},[1540],{"type":45,"value":1541},"Ignoring Citation Noise in Broad Searches",{"type":45,"value":1543},": Broad text searches (",{"type":39,"tag":67,"props":1545,"children":1547},{"className":1546},[],[1548],{"type":45,"value":1549},"search \"term\"",{"type":45,"value":1551},") frequently return false positives (e.g., common maintenance\nproteins) because UniProt searches full metadata, including publication\ntitles. ALWAYS prefer field-specific filters like ",{"type":39,"tag":67,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":45,"value":1557},"cc_function:",{"type":45,"value":1559}," or\n",{"type":39,"tag":67,"props":1561,"children":1563},{"className":1562},[],[1564],{"type":45,"value":1445},{"type":45,"value":1566}," for functional discovery.",{"type":39,"tag":59,"props":1568,"children":1569},{},[1570,1575,1577,1583,1585,1590,1592,1598],{"type":39,"tag":63,"props":1571,"children":1572},{},[1573],{"type":45,"value":1574},"Forgetting to Quote Short Search Terms",{"type":45,"value":1576},": Short, unquoted terms (e.g.,\n",{"type":39,"tag":67,"props":1578,"children":1580},{"className":1579},[],[1581],{"type":45,"value":1582},"lanM",{"type":45,"value":1584},") can match substrings in organism names (e.g., ",{"type":39,"tag":352,"props":1586,"children":1587},{},[1588],{"type":45,"value":1589},"Lan",{"type":45,"value":1591},"cefieldella) or\nother fields. Use quotes and field prefixes (e.g., ",{"type":39,"tag":67,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":45,"value":1597},"gene:lanM",{"type":45,"value":1599},") to isolate\ntrue hits.",{"type":39,"tag":59,"props":1601,"children":1602},{},[1603,1608],{"type":39,"tag":63,"props":1604,"children":1605},{},[1606],{"type":45,"value":1607},"Manipulating Protein Sequences Directly",{"type":45,"value":1609},": Always use code and tools for\nsequence-based operations. Do not attempt to edit, truncate, or modify\nprotein sequences manually.",{"type":39,"tag":59,"props":1611,"children":1612},{},[1613,1618,1620,1625,1627,1632,1633,1638,1640,1645,1647,1652],{"type":39,"tag":63,"props":1614,"children":1615},{},[1616],{"type":45,"value":1617},"Over-using Search for Bulk Data",{"type":45,"value":1619},": DO NOT use ",{"type":39,"tag":67,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":45,"value":318},{"type":45,"value":1626}," for retrieving\nmillions of entries if ",{"type":39,"tag":67,"props":1628,"children":1630},{"className":1629},[],[1631],{"type":45,"value":391},{"type":45,"value":729},{"type":39,"tag":67,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":45,"value":480},{"type":45,"value":1639}," can do the job. Streaming is\nmore efficient for very large datasets. Note that ",{"type":39,"tag":67,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":45,"value":391},{"type":45,"value":1646}," has a hard limit\nof 10,000,000 outputs and does NOT support ",{"type":39,"tag":67,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":45,"value":364},{"type":45,"value":379},{"type":39,"tag":59,"props":1654,"children":1655},{},[1656,1661,1663,1668,1670,1675,1677,1682,1684,1689],{"type":39,"tag":63,"props":1657,"children":1658},{},[1659],{"type":45,"value":1660},"Forgetting to Check Data Volume",{"type":45,"value":1662},": ALWAYS perform a ",{"type":39,"tag":67,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":45,"value":446},{"type":45,"value":1669}," before running\na ",{"type":39,"tag":67,"props":1671,"children":1673},{"className":1672},[],[1674],{"type":45,"value":318},{"type":45,"value":1676}," without ",{"type":39,"tag":67,"props":1678,"children":1680},{"className":1679},[],[1681],{"type":45,"value":364},{"type":45,"value":1683}," or before using ",{"type":39,"tag":67,"props":1685,"children":1687},{"className":1686},[],[1688],{"type":45,"value":391},{"type":45,"value":1690},". Unlimited queries can\ntake a long time and consume significant resources if millions of entries\nare returned.",{"type":39,"tag":59,"props":1692,"children":1693},{},[1694,1709,1711,1716,1718,1723,1725,1730,1732,1737],{"type":39,"tag":63,"props":1695,"children":1696},{},[1697,1698,1703,1704],{"type":45,"value":1431},{"type":39,"tag":67,"props":1699,"children":1701},{"className":1700},[],[1702],{"type":45,"value":364},{"type":45,"value":427},{"type":39,"tag":67,"props":1705,"children":1707},{"className":1706},[],[1708],{"type":45,"value":391},{"type":45,"value":1710},": The ",{"type":39,"tag":67,"props":1712,"children":1714},{"className":1713},[],[1715],{"type":45,"value":391},{"type":45,"value":1717}," command does NOT support\n",{"type":39,"tag":67,"props":1719,"children":1721},{"className":1720},[],[1722],{"type":45,"value":364},{"type":45,"value":1724},". If you need a limited number of results, use ",{"type":39,"tag":67,"props":1726,"children":1728},{"className":1727},[],[1729],{"type":45,"value":318},{"type":45,"value":1731}," with\n",{"type":39,"tag":67,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":45,"value":364},{"type":45,"value":1461},{"type":39,"tag":59,"props":1739,"children":1740},{},[1741,1746,1748,1753],{"type":39,"tag":63,"props":1742,"children":1743},{},[1744],{"type":45,"value":1745},"Forgetting the License Notice",{"type":45,"value":1747},": Do not neglect to state that the UniProt\nDatabase was used and to advise the user to review the licensing terms when\npresenting results for the ",{"type":39,"tag":63,"props":1749,"children":1750},{},[1751],{"type":45,"value":1752},"first time",{"type":45,"value":1754},". Even if the task is concise, this\nattribution is required in the first response containing UniProt data.",{"type":39,"tag":48,"props":1756,"children":1758},{"id":1757},"reference-materials",[1759],{"type":45,"value":1760},"Reference Materials",{"type":39,"tag":136,"props":1762,"children":1763},{},[1764,1771,1778,1785,1795],{"type":39,"tag":59,"props":1765,"children":1766},{},[1767],{"type":39,"tag":100,"props":1768,"children":1769},{"href":493},[1770],{"type":45,"value":496},{"type":39,"tag":59,"props":1772,"children":1773},{},[1774],{"type":39,"tag":100,"props":1775,"children":1776},{"href":374},[1777],{"type":45,"value":377},{"type":39,"tag":59,"props":1779,"children":1780},{},[1781],{"type":39,"tag":100,"props":1782,"children":1783},{"href":521},[1784],{"type":45,"value":524},{"type":39,"tag":59,"props":1786,"children":1787},{},[1788],{"type":39,"tag":100,"props":1789,"children":1792},{"href":1790,"rel":1791},"https:\u002F\u002Fwww.uniprot.org\u002Fhelp\u002Fevidences",[104],[1793],{"type":45,"value":1794},"UniProt Evidence Docs",{"type":39,"tag":59,"props":1796,"children":1797},{},[1798,1803,1805,1810,1812],{"type":39,"tag":63,"props":1799,"children":1800},{},[1801],{"type":45,"value":1802},"Underlying API Endpoints",{"type":45,"value":1804}," (Used by ",{"type":39,"tag":67,"props":1806,"children":1808},{"className":1807},[],[1809],{"type":45,"value":154},{"type":45,"value":1811},"):\n",{"type":39,"tag":136,"props":1813,"children":1814},{},[1815,1850,1865,1880],{"type":39,"tag":59,"props":1816,"children":1817},{},[1818,1823,1825,1830,1831,1836,1837,1842,1844],{"type":39,"tag":67,"props":1819,"children":1821},{"className":1820},[],[1822],{"type":45,"value":281},{"type":45,"value":1824},", ",{"type":39,"tag":67,"props":1826,"children":1828},{"className":1827},[],[1829],{"type":45,"value":318},{"type":45,"value":1824},{"type":39,"tag":67,"props":1832,"children":1834},{"className":1833},[],[1835],{"type":45,"value":391},{"type":45,"value":1824},{"type":39,"tag":67,"props":1838,"children":1840},{"className":1839},[],[1841],{"type":45,"value":446},{"type":45,"value":1843}," -> ",{"type":39,"tag":67,"props":1845,"children":1847},{"className":1846},[],[1848],{"type":45,"value":1849},"rest.uniprot.org\u002F{dataset}\u002F",{"type":39,"tag":59,"props":1851,"children":1852},{},[1853,1858,1859],{"type":39,"tag":67,"props":1854,"children":1856},{"className":1855},[],[1857],{"type":45,"value":509},{"type":45,"value":1843},{"type":39,"tag":67,"props":1860,"children":1862},{"className":1861},[],[1863],{"type":45,"value":1864},"rest.uniprot.org\u002Fidmapping\u002F",{"type":39,"tag":59,"props":1866,"children":1867},{},[1868,1873,1874],{"type":39,"tag":67,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":45,"value":480},{"type":45,"value":1843},{"type":39,"tag":67,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":45,"value":1879},"sparql.uniprot.org\u002Fsparql",{"type":39,"tag":59,"props":1881,"children":1882},{},[1883,1889,1890],{"type":39,"tag":67,"props":1884,"children":1886},{"className":1885},[],[1887],{"type":45,"value":1888},"get --dataset unisave",{"type":45,"value":1843},{"type":39,"tag":67,"props":1891,"children":1893},{"className":1892},[],[1894],{"type":45,"value":1895},"rest.uniprot.org\u002Funisave\u002F",{"type":39,"tag":1897,"props":1898,"children":1899},"style",{},[1900],{"type":45,"value":1901},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1903,"total":2008},[1904,1917,1932,1952,1964,1979,1995],{"slug":1905,"name":1905,"fn":1906,"description":1907,"org":1908,"tags":1909,"stars":22,"repoUrl":23,"updatedAt":1916},"alphafold-database-fetch-and-analyze","retrieve and analyze AlphaFold protein structures","Retrieve and analyze AlphaFold predicted structures for a protein. Use when the user provides a specific UniProt Accession ID and wants structural confidence metrics (pLDDT), domain boundary analysis, or disorder assessment. Do not use if the user only has a protein name, gene name, or amino acid sequence — ask for a UniProt ID first.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1910,1911,1914,1915],{"name":20,"slug":21,"type":15},{"name":1912,"slug":1913,"type":15},"Genomics","genomics",{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:51.827211",{"slug":1918,"name":1918,"fn":1919,"description":1920,"org":1921,"tags":1922,"stars":22,"repoUrl":23,"updatedAt":1931},"alphagenome-single-variant-analysis","analyze genetic variant effects with AlphaGenome","Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API. Use when the user asks about non-coding variant effects, pathogenicity, clinical significance, disease associations, functional effects, gene expression changes, splicing disruption, or regulatory effects in promoters and enhancers. Also use for resolving biological terms to tissue\u002Fcell-type ontologies (UBERON\u002FCL) or analyzing variants in chr:pos:ref>alt format.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1923,1924,1927,1928],{"name":20,"slug":21,"type":15},{"name":1925,"slug":1926,"type":15},"Genetics","genetics",{"name":13,"slug":14,"type":15},{"name":1929,"slug":1930,"type":15},"RNA-seq","rna-seq","2026-07-12T07:51:39.494803",{"slug":1933,"name":1933,"fn":1934,"description":1935,"org":1936,"tags":1937,"stars":22,"repoUrl":23,"updatedAt":1951},"chembl-database","query ChEMBL database for bioactive molecules","Query the ChEMBL database for bioactive molecules, drug targets, bioactivity data, approved drugs, and chemical structures. Use when the user asks about compounds, targets, IC50\u002FKi values, drug mechanisms, or structure searches.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1938,1941,1944,1947,1950],{"name":1939,"slug":1940,"type":15},"ChEMBL","chembl",{"name":1942,"slug":1943,"type":15},"Chemistry","chemistry",{"name":1945,"slug":1946,"type":15},"Database","database",{"name":1948,"slug":1949,"type":15},"Pharmacology","pharmacology",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:35.544306",{"slug":1953,"name":1953,"fn":1954,"description":1955,"org":1956,"tags":1957,"stars":22,"repoUrl":23,"updatedAt":1963},"clinical-trials-database","query clinical trial data","Query ClinicalTrials.gov via APIv2. Use when you want to search for trials by condition, drug, location, status, or phase; retrieve trial details by NCT ID; check eligibility\u002Finclusion criteria; count trials across conditions or time periods; identify a sponsor's trial portfolio; find recruiting trials for patient matching.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1958,1961,1962],{"name":1959,"slug":1960,"type":15},"Clinical Trials","clinical-trials",{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:52:06.846705",{"slug":1965,"name":1965,"fn":1966,"description":1967,"org":1968,"tags":1969,"stars":22,"repoUrl":23,"updatedAt":1978},"clinvar-database","retrieve clinical significance from ClinVar database","Use when needing clinical significance, pathogenicity classifications (e.g., Pathogenic, Benign, VUS), clinical evidence rationales, or finding \"hard positive\" benchmark controls for human genomic variants.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1970,1973,1974,1977],{"name":1971,"slug":1972,"type":15},"ClinVar","clinvar",{"name":1925,"slug":1926,"type":15},{"name":1975,"slug":1976,"type":15},"Healthcare","healthcare",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:36.86094",{"slug":1980,"name":1980,"fn":1981,"description":1982,"org":1983,"tags":1984,"stars":22,"repoUrl":23,"updatedAt":1994},"credentials","manage and verify API credentials safely","Instructions for handling API keys and credentials safely, verifying their presence, and prompting the user to add them if missing using a safe protocol.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1985,1988,1991],{"name":1986,"slug":1987,"type":15},"Compliance","compliance",{"name":1989,"slug":1990,"type":15},"Operations","operations",{"name":1992,"slug":1993,"type":15},"Security","security","2026-07-12T07:52:17.355491",{"slug":1996,"name":1996,"fn":1997,"description":1998,"org":1999,"tags":2000,"stars":22,"repoUrl":23,"updatedAt":2007},"dbsnp-database","search genetic variants in dbSNP database","Use when you want to look up, map, and search for short genetic variants (SNPs, indels) in NCBI's dbSNP database. Resolves between rsIDs, genomic coordinates in VCF format, and HGVS strings. For an rsID, returns variant type, gene associations, clinical significance, allele frequencies, and genomic coordinates (GRCh38).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2001,2002,2003,2006],{"name":20,"slug":21,"type":15},{"name":1925,"slug":1926,"type":15},{"name":2004,"slug":2005,"type":15},"NCBI","ncbi",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:33.054229",38,{"items":2010,"total":2008},[2011,2018,2025,2033,2039,2046,2052,2059,2071,2086,2097,2107],{"slug":1905,"name":1905,"fn":1906,"description":1907,"org":2012,"tags":2013,"stars":22,"repoUrl":23,"updatedAt":1916},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2014,2015,2016,2017],{"name":20,"slug":21,"type":15},{"name":1912,"slug":1913,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":1918,"name":1918,"fn":1919,"description":1920,"org":2019,"tags":2020,"stars":22,"repoUrl":23,"updatedAt":1931},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2021,2022,2023,2024],{"name":20,"slug":21,"type":15},{"name":1925,"slug":1926,"type":15},{"name":13,"slug":14,"type":15},{"name":1929,"slug":1930,"type":15},{"slug":1933,"name":1933,"fn":1934,"description":1935,"org":2026,"tags":2027,"stars":22,"repoUrl":23,"updatedAt":1951},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2028,2029,2030,2031,2032],{"name":1939,"slug":1940,"type":15},{"name":1942,"slug":1943,"type":15},{"name":1945,"slug":1946,"type":15},{"name":1948,"slug":1949,"type":15},{"name":13,"slug":14,"type":15},{"slug":1953,"name":1953,"fn":1954,"description":1955,"org":2034,"tags":2035,"stars":22,"repoUrl":23,"updatedAt":1963},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2036,2037,2038],{"name":1959,"slug":1960,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":1965,"name":1965,"fn":1966,"description":1967,"org":2040,"tags":2041,"stars":22,"repoUrl":23,"updatedAt":1978},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2042,2043,2044,2045],{"name":1971,"slug":1972,"type":15},{"name":1925,"slug":1926,"type":15},{"name":1975,"slug":1976,"type":15},{"name":13,"slug":14,"type":15},{"slug":1980,"name":1980,"fn":1981,"description":1982,"org":2047,"tags":2048,"stars":22,"repoUrl":23,"updatedAt":1994},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2049,2050,2051],{"name":1986,"slug":1987,"type":15},{"name":1989,"slug":1990,"type":15},{"name":1992,"slug":1993,"type":15},{"slug":1996,"name":1996,"fn":1997,"description":1998,"org":2053,"tags":2054,"stars":22,"repoUrl":23,"updatedAt":2007},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2055,2056,2057,2058],{"name":20,"slug":21,"type":15},{"name":1925,"slug":1926,"type":15},{"name":2004,"slug":2005,"type":15},{"name":13,"slug":14,"type":15},{"slug":2060,"name":2060,"fn":2061,"description":2062,"org":2063,"tags":2064,"stars":22,"repoUrl":23,"updatedAt":2070},"embl-ebi-ols","search biomedical ontologies in EMBL-EBI OLS","Query and search the EMBL-EBI Ontology Lookup Service (OLS) for biomedical ontology terms, definitions, and hierarchies across 250+ ontologies (e.g., GO, DOID, HP). Use when the user asks to search for terms, retrieve details, navigate hierarchies (parents, children, ancestors), look up properties and individuals, get autocomplete suggestions, or access ontology metadata and statistics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2065,2066,2069],{"name":20,"slug":21,"type":15},{"name":2067,"slug":2068,"type":15},"Ontology","ontology",{"name":13,"slug":14,"type":15},"2026-07-12T07:51:59.368324",{"slug":2072,"name":2072,"fn":2073,"description":2074,"org":2075,"tags":2076,"stars":22,"repoUrl":23,"updatedAt":2085},"encode-ccres-database","query ENCODE regulatory and experimental data","Query the ENCODE Registry of cis-Regulatory Elements (cCREs) via the SCREEN GraphQL API, or make custom queries to the ENCODE Portal REST API for experiments and files (ChIP-seq peaks, etc.). Use when you want to query regulatory annotations or raw experimental data across human cell types.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2077,2078,2081,2082],{"name":20,"slug":21,"type":15},{"name":2079,"slug":2080,"type":15},"GraphQL","graphql",{"name":13,"slug":14,"type":15},{"name":2083,"slug":2084,"type":15},"REST API","rest-api","2026-07-12T07:52:10.597139",{"slug":2087,"name":2087,"fn":2088,"description":2089,"org":2090,"tags":2091,"stars":22,"repoUrl":23,"updatedAt":2096},"ensembl-database","query genomic and protein data from Ensembl","Query the Ensembl database to resolve gene, transcript, and protein IDs, fetch genomic or protein sequences, retrieve gene structures (exons), and get variant consequence and effect predictions (VEP). Use this skill as a primary ID translator, genomic sequence database and variant effect prediction tool.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2092,2093,2094,2095],{"name":20,"slug":21,"type":15},{"name":1925,"slug":1926,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:41.645835",{"slug":2098,"name":2098,"fn":2099,"description":2100,"org":2101,"tags":2102,"stars":22,"repoUrl":23,"updatedAt":2106},"foldseek-structural-search","perform 3D protein structural searches","Performs 3D structural searches of proteins against various databases (PDB, AlphaFold, CATH, MGnify, etc.) using the Foldseek API. Use ONLY when the user provides a physical 3D coordinate file (.cif, .mmcif, or .pdb) and wants to find structurally similar proteins. Do NOT use if the user only provides a protein sequence, gene name, or UniProt ID.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2103,2104,2105],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:52:09.354992",{"slug":2108,"name":2108,"fn":2109,"description":2110,"org":2111,"tags":2112,"stars":22,"repoUrl":23,"updatedAt":2117},"gnomad-database","query genetic variant data from gnomAD","Query the Genome Aggregation Database (gnomAD). Use when determining the rarity or allele frequency of specific genetic variants, retrieving gene constraint metrics (pLI, LOEUF) to assess loss-of-function intolerance, finding variants in a genomic region or gene, or querying structural variants. Don't use for analyzing individual patient genomes, tracking somatic mutations in cancer (use COSMIC), or requesting raw sequencing reads (use ENA).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2113,2114,2115,2116],{"name":20,"slug":21,"type":15},{"name":1925,"slug":1926,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:51:38.213009"]