[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-deepmind-credentials":3,"mdc--1edamj-key":33,"related-org-google-deepmind-credentials":684,"related-repo-google-deepmind-credentials":846},{"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},"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},"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},"Security","security","tag",{"name":17,"slug":18,"type":15},"Operations","operations",{"name":20,"slug":21,"type":15},"Compliance","compliance",2333,"https:\u002F\u002Fgithub.com\u002Fgoogle-deepmind\u002Fscience-skills","2026-07-12T07:52:17.355491",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\u002Fcredentials","---\nname: credentials\ndescription: >-\n  Instructions for handling API keys and credentials safely, verifying their\n  presence, and prompting the user to add them if missing using a safe protocol.\n---\n\n# Safe Credentials Protocol\n\nMany skills require API keys or other credentials to function or to access\nhigher rate limits. This skill defines the standard safe credentials protocol\nfor verifying and prompting for these credentials without leaking sensitive keys\ninto the agent context or the conversation history.\n\n## Safe Verification (No Leaks)\n\nAs soon as a skill that requires a credential or API key looks relevant to the\nuser's request, you **MUST** immediately verify if the credential is present in\nthe `.env` file (typically located in your home directory `~\u002F.env` or the\nproject root) — **before doing any other work** for that skill.\n\n**CRITICAL**: You must verify the presence of the credential *without* printing\nits value to the terminal or reading it into your context.\n\n### How to verify:\n\nUse `grep` in quiet and suppress-errors mode (`-sq`) to check if the variable is\ndefined in `~\u002F.env`. The `-s` flag ensures the command works cleanly even if\n`~\u002F.env` does not exist yet.\n\n```bash\ngrep -sq \"^CREDENTIAL_NAME=\" ~\u002F.env\n```\n\nReplace `CREDENTIAL_NAME` with the actual credential name required by the\ncalling skill (e.g., `ALPHAGENOME_API_KEY` or `USER_EMAIL`).\n\n-   If the command **succeeds** (exit code 0), the credential is present. You\n    can proceed.\n-   If the command **fails** (any non-zero exit code — whether the credential is\n    missing or the `.env` file does not exist yet), the credential is missing.\n    You **MUST IMMEDIATELY** stop and prompt the user to add it using the\n    instructions in\n    [Prompting the User to Add Credentials](#prompting-the-user-to-add-credentials)\n    before attempting to run any scripts or tools. Do not conclude the turn by\n    simply stating that the key is missing.\n\n> [!CRITICAL] If verification fails (any non-zero exit code), you **MUST NOT**\n> attempt to execute any tools or scripts from the calling skill, nor should you\n> conclude the turn by simply reporting the missing key. You **MUST\n> IMMEDIATELY** generate the appropriate terminal command from the templates\n> below and prompt the user to run it. The template command will create the\n> `.env` file if it does not already exist.\n\n**NEVER** run `cat ~\u002F.env`, `grep \"VAR\" ~\u002F.env` (without `-q`), `echo $VAR`, or\n`printenv` to check for credentials.\n\n## Prompting the User to Add Credentials\n\nIf a credential is missing, do **NOT** ask the user to paste it into the chat.\nThis would leak the value into the agent's context and the conversation history.\n\nInstead, you **MUST** generate a specific command for the user to run in their\nterminal by replacing the placeholders in one of the templates below.\n\n**CRITICAL**: Before presenting the command to the user, you **MUST** replace:\n\n-   `CREDENTIAL_NAME` with the actual variable name needed (e.g.,\n    `ALPHAGENOME_API_KEY`, `USER_EMAIL`).\n-   `ENV_FILE` with the resolved literal path to the `.env` file (usually\n    `~\u002F.env`).\n\n### Template\n\nAll credentials are treated as sensitive. The `read -s` flag hides the user's\ntyping. You **MUST** inform the user that their typing will be hidden.\n\n**CRITICAL**: When requesting a credential, you **MUST** also provide the user\nwith the appropriate registration link or instructions provided by the calling\nskill so they know how to obtain the value if they do not have one.\n\n```bash\nprintf \"Enter CREDENTIAL_NAME (typing hidden): \" && read -s val && echo && echo \"CREDENTIAL_NAME=$val\" >> \"ENV_FILE\" && echo \"Saved.\"\n```\n\n## Running scripts requiring credentials\n\nAll helper scripts inside the calling skills load these credentials\nautomatically from the `.env` file using `dotenv`.\n\n**You do NOT need to** manually read the keys, export them to the shell\nenvironment, or pass them as CLI arguments, when calling the helper scripts that\nrequire them. As long as you have verified the key is present in `.env` using\nthe safe protocol above, simply run the script directly — the script will load\nthe credential automatically.\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,47,53,60,97,115,122,165,214,243,294,329,379,384,396,407,422,471,477,496,511,635,641,661,678],{"type":39,"tag":40,"props":41,"children":43},"element","h1",{"id":42},"safe-credentials-protocol",[44],{"type":45,"value":46},"text","Safe Credentials Protocol",{"type":39,"tag":48,"props":49,"children":50},"p",{},[51],{"type":45,"value":52},"Many skills require API keys or other credentials to function or to access\nhigher rate limits. This skill defines the standard safe credentials protocol\nfor verifying and prompting for these credentials without leaking sensitive keys\ninto the agent context or the conversation history.",{"type":39,"tag":54,"props":55,"children":57},"h2",{"id":56},"safe-verification-no-leaks",[58],{"type":45,"value":59},"Safe Verification (No Leaks)",{"type":39,"tag":48,"props":61,"children":62},{},[63,65,71,73,80,82,88,90,95],{"type":45,"value":64},"As soon as a skill that requires a credential or API key looks relevant to the\nuser's request, you ",{"type":39,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":45,"value":70},"MUST",{"type":45,"value":72}," immediately verify if the credential is present in\nthe ",{"type":39,"tag":74,"props":75,"children":77},"code",{"className":76},[],[78],{"type":45,"value":79},".env",{"type":45,"value":81}," file (typically located in your home directory ",{"type":39,"tag":74,"props":83,"children":85},{"className":84},[],[86],{"type":45,"value":87},"~\u002F.env",{"type":45,"value":89}," or the\nproject root) — ",{"type":39,"tag":66,"props":91,"children":92},{},[93],{"type":45,"value":94},"before doing any other work",{"type":45,"value":96}," for that skill.",{"type":39,"tag":48,"props":98,"children":99},{},[100,105,107,113],{"type":39,"tag":66,"props":101,"children":102},{},[103],{"type":45,"value":104},"CRITICAL",{"type":45,"value":106},": You must verify the presence of the credential ",{"type":39,"tag":108,"props":109,"children":110},"em",{},[111],{"type":45,"value":112},"without",{"type":45,"value":114}," printing\nits value to the terminal or reading it into your context.",{"type":39,"tag":116,"props":117,"children":119},"h3",{"id":118},"how-to-verify",[120],{"type":45,"value":121},"How to verify:",{"type":39,"tag":48,"props":123,"children":124},{},[125,127,133,135,141,143,148,150,156,158,163],{"type":45,"value":126},"Use ",{"type":39,"tag":74,"props":128,"children":130},{"className":129},[],[131],{"type":45,"value":132},"grep",{"type":45,"value":134}," in quiet and suppress-errors mode (",{"type":39,"tag":74,"props":136,"children":138},{"className":137},[],[139],{"type":45,"value":140},"-sq",{"type":45,"value":142},") to check if the variable is\ndefined in ",{"type":39,"tag":74,"props":144,"children":146},{"className":145},[],[147],{"type":45,"value":87},{"type":45,"value":149},". The ",{"type":39,"tag":74,"props":151,"children":153},{"className":152},[],[154],{"type":45,"value":155},"-s",{"type":45,"value":157}," flag ensures the command works cleanly even if\n",{"type":39,"tag":74,"props":159,"children":161},{"className":160},[],[162],{"type":45,"value":87},{"type":45,"value":164}," does not exist yet.",{"type":39,"tag":166,"props":167,"children":172},"pre",{"className":168,"code":169,"language":170,"meta":171,"style":171},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","grep -sq \"^CREDENTIAL_NAME=\" ~\u002F.env\n","bash","",[173],{"type":39,"tag":74,"props":174,"children":175},{"__ignoreMap":171},[176],{"type":39,"tag":177,"props":178,"children":181},"span",{"class":179,"line":180},"line",1,[182,187,193,199,204,209],{"type":39,"tag":177,"props":183,"children":185},{"style":184},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[186],{"type":45,"value":132},{"type":39,"tag":177,"props":188,"children":190},{"style":189},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[191],{"type":45,"value":192}," -sq",{"type":39,"tag":177,"props":194,"children":196},{"style":195},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[197],{"type":45,"value":198}," \"",{"type":39,"tag":177,"props":200,"children":201},{"style":189},[202],{"type":45,"value":203},"^CREDENTIAL_NAME=",{"type":39,"tag":177,"props":205,"children":206},{"style":195},[207],{"type":45,"value":208},"\"",{"type":39,"tag":177,"props":210,"children":211},{"style":189},[212],{"type":45,"value":213}," ~\u002F.env\n",{"type":39,"tag":48,"props":215,"children":216},{},[217,219,225,227,233,235,241],{"type":45,"value":218},"Replace ",{"type":39,"tag":74,"props":220,"children":222},{"className":221},[],[223],{"type":45,"value":224},"CREDENTIAL_NAME",{"type":45,"value":226}," with the actual credential name required by the\ncalling skill (e.g., ",{"type":39,"tag":74,"props":228,"children":230},{"className":229},[],[231],{"type":45,"value":232},"ALPHAGENOME_API_KEY",{"type":45,"value":234}," or ",{"type":39,"tag":74,"props":236,"children":238},{"className":237},[],[239],{"type":45,"value":240},"USER_EMAIL",{"type":45,"value":242},").",{"type":39,"tag":244,"props":245,"children":246},"ul",{},[247,260],{"type":39,"tag":248,"props":249,"children":250},"li",{},[251,253,258],{"type":45,"value":252},"If the command ",{"type":39,"tag":66,"props":254,"children":255},{},[256],{"type":45,"value":257},"succeeds",{"type":45,"value":259}," (exit code 0), the credential is present. You\ncan proceed.",{"type":39,"tag":248,"props":261,"children":262},{},[263,264,269,271,276,278,283,285,292],{"type":45,"value":252},{"type":39,"tag":66,"props":265,"children":266},{},[267],{"type":45,"value":268},"fails",{"type":45,"value":270}," (any non-zero exit code — whether the credential is\nmissing or the ",{"type":39,"tag":74,"props":272,"children":274},{"className":273},[],[275],{"type":45,"value":79},{"type":45,"value":277}," file does not exist yet), the credential is missing.\nYou ",{"type":39,"tag":66,"props":279,"children":280},{},[281],{"type":45,"value":282},"MUST IMMEDIATELY",{"type":45,"value":284}," stop and prompt the user to add it using the\ninstructions in\n",{"type":39,"tag":286,"props":287,"children":289},"a",{"href":288},"#prompting-the-user-to-add-credentials",[290],{"type":45,"value":291},"Prompting the User to Add Credentials",{"type":45,"value":293},"\nbefore attempting to run any scripts or tools. Do not conclude the turn by\nsimply stating that the key is missing.",{"type":39,"tag":295,"props":296,"children":297},"blockquote",{},[298],{"type":39,"tag":48,"props":299,"children":300},{},[301,306,308,313,315,320,322,327],{"type":39,"tag":177,"props":302,"children":303},{},[304],{"type":45,"value":305},"!CRITICAL",{"type":45,"value":307}," If verification fails (any non-zero exit code), you ",{"type":39,"tag":66,"props":309,"children":310},{},[311],{"type":45,"value":312},"MUST NOT",{"type":45,"value":314},"\nattempt to execute any tools or scripts from the calling skill, nor should you\nconclude the turn by simply reporting the missing key. You ",{"type":39,"tag":66,"props":316,"children":317},{},[318],{"type":45,"value":319},"MUST\nIMMEDIATELY",{"type":45,"value":321}," generate the appropriate terminal command from the templates\nbelow and prompt the user to run it. The template command will create the\n",{"type":39,"tag":74,"props":323,"children":325},{"className":324},[],[326],{"type":45,"value":79},{"type":45,"value":328}," file if it does not already exist.",{"type":39,"tag":48,"props":330,"children":331},{},[332,337,339,345,347,353,355,361,363,369,371,377],{"type":39,"tag":66,"props":333,"children":334},{},[335],{"type":45,"value":336},"NEVER",{"type":45,"value":338}," run ",{"type":39,"tag":74,"props":340,"children":342},{"className":341},[],[343],{"type":45,"value":344},"cat ~\u002F.env",{"type":45,"value":346},", ",{"type":39,"tag":74,"props":348,"children":350},{"className":349},[],[351],{"type":45,"value":352},"grep \"VAR\" ~\u002F.env",{"type":45,"value":354}," (without ",{"type":39,"tag":74,"props":356,"children":358},{"className":357},[],[359],{"type":45,"value":360},"-q",{"type":45,"value":362},"), ",{"type":39,"tag":74,"props":364,"children":366},{"className":365},[],[367],{"type":45,"value":368},"echo $VAR",{"type":45,"value":370},", or\n",{"type":39,"tag":74,"props":372,"children":374},{"className":373},[],[375],{"type":45,"value":376},"printenv",{"type":45,"value":378}," to check for credentials.",{"type":39,"tag":54,"props":380,"children":382},{"id":381},"prompting-the-user-to-add-credentials",[383],{"type":45,"value":291},{"type":39,"tag":48,"props":385,"children":386},{},[387,389,394],{"type":45,"value":388},"If a credential is missing, do ",{"type":39,"tag":66,"props":390,"children":391},{},[392],{"type":45,"value":393},"NOT",{"type":45,"value":395}," ask the user to paste it into the chat.\nThis would leak the value into the agent's context and the conversation history.",{"type":39,"tag":48,"props":397,"children":398},{},[399,401,405],{"type":45,"value":400},"Instead, you ",{"type":39,"tag":66,"props":402,"children":403},{},[404],{"type":45,"value":70},{"type":45,"value":406}," generate a specific command for the user to run in their\nterminal by replacing the placeholders in one of the templates below.",{"type":39,"tag":48,"props":408,"children":409},{},[410,414,416,420],{"type":39,"tag":66,"props":411,"children":412},{},[413],{"type":45,"value":104},{"type":45,"value":415},": Before presenting the command to the user, you ",{"type":39,"tag":66,"props":417,"children":418},{},[419],{"type":45,"value":70},{"type":45,"value":421}," replace:",{"type":39,"tag":244,"props":423,"children":424},{},[425,447],{"type":39,"tag":248,"props":426,"children":427},{},[428,433,435,440,441,446],{"type":39,"tag":74,"props":429,"children":431},{"className":430},[],[432],{"type":45,"value":224},{"type":45,"value":434}," with the actual variable name needed (e.g.,\n",{"type":39,"tag":74,"props":436,"children":438},{"className":437},[],[439],{"type":45,"value":232},{"type":45,"value":346},{"type":39,"tag":74,"props":442,"children":444},{"className":443},[],[445],{"type":45,"value":240},{"type":45,"value":242},{"type":39,"tag":248,"props":448,"children":449},{},[450,456,458,463,465,470],{"type":39,"tag":74,"props":451,"children":453},{"className":452},[],[454],{"type":45,"value":455},"ENV_FILE",{"type":45,"value":457}," with the resolved literal path to the ",{"type":39,"tag":74,"props":459,"children":461},{"className":460},[],[462],{"type":45,"value":79},{"type":45,"value":464}," file (usually\n",{"type":39,"tag":74,"props":466,"children":468},{"className":467},[],[469],{"type":45,"value":87},{"type":45,"value":242},{"type":39,"tag":116,"props":472,"children":474},{"id":473},"template",[475],{"type":45,"value":476},"Template",{"type":39,"tag":48,"props":478,"children":479},{},[480,482,488,490,494],{"type":45,"value":481},"All credentials are treated as sensitive. The ",{"type":39,"tag":74,"props":483,"children":485},{"className":484},[],[486],{"type":45,"value":487},"read -s",{"type":45,"value":489}," flag hides the user's\ntyping. You ",{"type":39,"tag":66,"props":491,"children":492},{},[493],{"type":45,"value":70},{"type":45,"value":495}," inform the user that their typing will be hidden.",{"type":39,"tag":48,"props":497,"children":498},{},[499,503,505,509],{"type":39,"tag":66,"props":500,"children":501},{},[502],{"type":45,"value":104},{"type":45,"value":504},": When requesting a credential, you ",{"type":39,"tag":66,"props":506,"children":507},{},[508],{"type":45,"value":70},{"type":45,"value":510}," also provide the user\nwith the appropriate registration link or instructions provided by the calling\nskill so they know how to obtain the value if they do not have one.",{"type":39,"tag":166,"props":512,"children":514},{"className":168,"code":513,"language":170,"meta":171,"style":171},"printf \"Enter CREDENTIAL_NAME (typing hidden): \" && read -s val && echo && echo \"CREDENTIAL_NAME=$val\" >> \"ENV_FILE\" && echo \"Saved.\"\n",[515],{"type":39,"tag":74,"props":516,"children":517},{"__ignoreMap":171},[518],{"type":39,"tag":177,"props":519,"children":520},{"class":179,"line":180},[521,527,531,536,540,545,550,555,560,564,569,573,577,581,586,592,596,601,605,609,613,617,621,625,630],{"type":39,"tag":177,"props":522,"children":524},{"style":523},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[525],{"type":45,"value":526},"printf",{"type":39,"tag":177,"props":528,"children":529},{"style":195},[530],{"type":45,"value":198},{"type":39,"tag":177,"props":532,"children":533},{"style":189},[534],{"type":45,"value":535},"Enter CREDENTIAL_NAME (typing hidden): ",{"type":39,"tag":177,"props":537,"children":538},{"style":195},[539],{"type":45,"value":208},{"type":39,"tag":177,"props":541,"children":542},{"style":195},[543],{"type":45,"value":544}," &&",{"type":39,"tag":177,"props":546,"children":547},{"style":523},[548],{"type":45,"value":549}," read",{"type":39,"tag":177,"props":551,"children":552},{"style":189},[553],{"type":45,"value":554}," -s",{"type":39,"tag":177,"props":556,"children":557},{"style":189},[558],{"type":45,"value":559}," val",{"type":39,"tag":177,"props":561,"children":562},{"style":195},[563],{"type":45,"value":544},{"type":39,"tag":177,"props":565,"children":566},{"style":523},[567],{"type":45,"value":568}," echo",{"type":39,"tag":177,"props":570,"children":571},{"style":195},[572],{"type":45,"value":544},{"type":39,"tag":177,"props":574,"children":575},{"style":523},[576],{"type":45,"value":568},{"type":39,"tag":177,"props":578,"children":579},{"style":195},[580],{"type":45,"value":198},{"type":39,"tag":177,"props":582,"children":583},{"style":189},[584],{"type":45,"value":585},"CREDENTIAL_NAME=",{"type":39,"tag":177,"props":587,"children":589},{"style":588},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[590],{"type":45,"value":591},"$val",{"type":39,"tag":177,"props":593,"children":594},{"style":195},[595],{"type":45,"value":208},{"type":39,"tag":177,"props":597,"children":598},{"style":195},[599],{"type":45,"value":600}," >>",{"type":39,"tag":177,"props":602,"children":603},{"style":195},[604],{"type":45,"value":198},{"type":39,"tag":177,"props":606,"children":607},{"style":189},[608],{"type":45,"value":455},{"type":39,"tag":177,"props":610,"children":611},{"style":195},[612],{"type":45,"value":208},{"type":39,"tag":177,"props":614,"children":615},{"style":195},[616],{"type":45,"value":544},{"type":39,"tag":177,"props":618,"children":619},{"style":523},[620],{"type":45,"value":568},{"type":39,"tag":177,"props":622,"children":623},{"style":195},[624],{"type":45,"value":198},{"type":39,"tag":177,"props":626,"children":627},{"style":189},[628],{"type":45,"value":629},"Saved.",{"type":39,"tag":177,"props":631,"children":632},{"style":195},[633],{"type":45,"value":634},"\"\n",{"type":39,"tag":54,"props":636,"children":638},{"id":637},"running-scripts-requiring-credentials",[639],{"type":45,"value":640},"Running scripts requiring credentials",{"type":39,"tag":48,"props":642,"children":643},{},[644,646,651,653,659],{"type":45,"value":645},"All helper scripts inside the calling skills load these credentials\nautomatically from the ",{"type":39,"tag":74,"props":647,"children":649},{"className":648},[],[650],{"type":45,"value":79},{"type":45,"value":652}," file using ",{"type":39,"tag":74,"props":654,"children":656},{"className":655},[],[657],{"type":45,"value":658},"dotenv",{"type":45,"value":660},".",{"type":39,"tag":48,"props":662,"children":663},{},[664,669,671,676],{"type":39,"tag":66,"props":665,"children":666},{},[667],{"type":45,"value":668},"You do NOT need to",{"type":45,"value":670}," manually read the keys, export them to the shell\nenvironment, or pass them as CLI arguments, when calling the helper scripts that\nrequire them. As long as you have verified the key is present in ",{"type":39,"tag":74,"props":672,"children":674},{"className":673},[],[675],{"type":45,"value":79},{"type":45,"value":677}," using\nthe safe protocol above, simply run the script directly — the script will load\nthe credential automatically.",{"type":39,"tag":679,"props":680,"children":681},"style",{},[682],{"type":45,"value":683},"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":685,"total":845},[686,705,720,740,752,767,773,786,798,813,824,834],{"slug":687,"name":687,"fn":688,"description":689,"org":690,"tags":691,"stars":22,"repoUrl":23,"updatedAt":704},"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},[692,695,698,701],{"name":693,"slug":694,"type":15},"Bioinformatics","bioinformatics",{"name":696,"slug":697,"type":15},"Genomics","genomics",{"name":699,"slug":700,"type":15},"Life Sciences","life-sciences",{"name":702,"slug":703,"type":15},"Research","research","2026-07-12T07:51:51.827211",{"slug":706,"name":706,"fn":707,"description":708,"org":709,"tags":710,"stars":22,"repoUrl":23,"updatedAt":719},"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},[711,712,715,716],{"name":693,"slug":694,"type":15},{"name":713,"slug":714,"type":15},"Genetics","genetics",{"name":702,"slug":703,"type":15},{"name":717,"slug":718,"type":15},"RNA-seq","rna-seq","2026-07-12T07:51:39.494803",{"slug":721,"name":721,"fn":722,"description":723,"org":724,"tags":725,"stars":22,"repoUrl":23,"updatedAt":739},"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},[726,729,732,735,738],{"name":727,"slug":728,"type":15},"ChEMBL","chembl",{"name":730,"slug":731,"type":15},"Chemistry","chemistry",{"name":733,"slug":734,"type":15},"Database","database",{"name":736,"slug":737,"type":15},"Pharmacology","pharmacology",{"name":702,"slug":703,"type":15},"2026-07-12T07:51:35.544306",{"slug":741,"name":741,"fn":742,"description":743,"org":744,"tags":745,"stars":22,"repoUrl":23,"updatedAt":751},"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},[746,749,750],{"name":747,"slug":748,"type":15},"Clinical Trials","clinical-trials",{"name":699,"slug":700,"type":15},{"name":702,"slug":703,"type":15},"2026-07-12T07:52:06.846705",{"slug":753,"name":753,"fn":754,"description":755,"org":756,"tags":757,"stars":22,"repoUrl":23,"updatedAt":766},"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},[758,761,762,765],{"name":759,"slug":760,"type":15},"ClinVar","clinvar",{"name":713,"slug":714,"type":15},{"name":763,"slug":764,"type":15},"Healthcare","healthcare",{"name":702,"slug":703,"type":15},"2026-07-12T07:51:36.86094",{"slug":4,"name":4,"fn":5,"description":6,"org":768,"tags":769,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[770,771,772],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":774,"name":774,"fn":775,"description":776,"org":777,"tags":778,"stars":22,"repoUrl":23,"updatedAt":785},"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},[779,780,781,784],{"name":693,"slug":694,"type":15},{"name":713,"slug":714,"type":15},{"name":782,"slug":783,"type":15},"NCBI","ncbi",{"name":702,"slug":703,"type":15},"2026-07-12T07:51:33.054229",{"slug":787,"name":787,"fn":788,"description":789,"org":790,"tags":791,"stars":22,"repoUrl":23,"updatedAt":797},"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},[792,793,796],{"name":693,"slug":694,"type":15},{"name":794,"slug":795,"type":15},"Ontology","ontology",{"name":702,"slug":703,"type":15},"2026-07-12T07:51:59.368324",{"slug":799,"name":799,"fn":800,"description":801,"org":802,"tags":803,"stars":22,"repoUrl":23,"updatedAt":812},"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},[804,805,808,809],{"name":693,"slug":694,"type":15},{"name":806,"slug":807,"type":15},"GraphQL","graphql",{"name":702,"slug":703,"type":15},{"name":810,"slug":811,"type":15},"REST API","rest-api","2026-07-12T07:52:10.597139",{"slug":814,"name":814,"fn":815,"description":816,"org":817,"tags":818,"stars":22,"repoUrl":23,"updatedAt":823},"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},[819,820,821,822],{"name":693,"slug":694,"type":15},{"name":713,"slug":714,"type":15},{"name":699,"slug":700,"type":15},{"name":702,"slug":703,"type":15},"2026-07-12T07:51:41.645835",{"slug":825,"name":825,"fn":826,"description":827,"org":828,"tags":829,"stars":22,"repoUrl":23,"updatedAt":833},"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},[830,831,832],{"name":693,"slug":694,"type":15},{"name":699,"slug":700,"type":15},{"name":702,"slug":703,"type":15},"2026-07-12T07:52:09.354992",{"slug":835,"name":835,"fn":836,"description":837,"org":838,"tags":839,"stars":22,"repoUrl":23,"updatedAt":844},"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},[840,841,842,843],{"name":693,"slug":694,"type":15},{"name":713,"slug":714,"type":15},{"name":699,"slug":700,"type":15},{"name":702,"slug":703,"type":15},"2026-07-12T07:51:38.213009",38,{"items":847,"total":845},[848,855,862,870,876,883,889],{"slug":687,"name":687,"fn":688,"description":689,"org":849,"tags":850,"stars":22,"repoUrl":23,"updatedAt":704},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[851,852,853,854],{"name":693,"slug":694,"type":15},{"name":696,"slug":697,"type":15},{"name":699,"slug":700,"type":15},{"name":702,"slug":703,"type":15},{"slug":706,"name":706,"fn":707,"description":708,"org":856,"tags":857,"stars":22,"repoUrl":23,"updatedAt":719},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[858,859,860,861],{"name":693,"slug":694,"type":15},{"name":713,"slug":714,"type":15},{"name":702,"slug":703,"type":15},{"name":717,"slug":718,"type":15},{"slug":721,"name":721,"fn":722,"description":723,"org":863,"tags":864,"stars":22,"repoUrl":23,"updatedAt":739},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[865,866,867,868,869],{"name":727,"slug":728,"type":15},{"name":730,"slug":731,"type":15},{"name":733,"slug":734,"type":15},{"name":736,"slug":737,"type":15},{"name":702,"slug":703,"type":15},{"slug":741,"name":741,"fn":742,"description":743,"org":871,"tags":872,"stars":22,"repoUrl":23,"updatedAt":751},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[873,874,875],{"name":747,"slug":748,"type":15},{"name":699,"slug":700,"type":15},{"name":702,"slug":703,"type":15},{"slug":753,"name":753,"fn":754,"description":755,"org":877,"tags":878,"stars":22,"repoUrl":23,"updatedAt":766},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[879,880,881,882],{"name":759,"slug":760,"type":15},{"name":713,"slug":714,"type":15},{"name":763,"slug":764,"type":15},{"name":702,"slug":703,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":884,"tags":885,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[886,887,888],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":774,"name":774,"fn":775,"description":776,"org":890,"tags":891,"stars":22,"repoUrl":23,"updatedAt":785},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[892,893,894,895],{"name":693,"slug":694,"type":15},{"name":713,"slug":714,"type":15},{"name":782,"slug":783,"type":15},{"name":702,"slug":703,"type":15}]