Look up a gene by its official symbol (e.g. "TP53", "BRCA1", "CFTR") and organism (taxid, default 9606 = human), merging NCBI Gene with UniProt. Returns the gene symbol, NCBI Gene ID, full description, organism, chromosome + cytogenetic map location, alias symbols, and the curated RefSeq function summary; plus the reviewed protein from UniProt — accession, entry id, recommended protein name, length in amino acids, and the curated function description. NCBI + UniProt links. Bioinformatics, clinical-genetics research, education. Public-domain NCBI + CC-BY UniProt data. Common organism taxids: human 9606, mouse 10090, zebrafish 7955, fruit fly 7227, yeast 559292.
/api/bio/genePAYMENT-SIGNATURE.The gene API is a pay-per-call bio endpoint built for AI agents and autonomous software. Look up a gene by its official symbol (e.g.
There is no signup and no API key. An agent (or any HTTP client) hits the endpoint, receives an x402 "402 Payment Required" challenge, signs a sub-cent USDC payment on Base or Solana, and retries — the data comes back on the paid request. That makes it a drop-in gene data source for an agent tool-use loop, an MCP host, or a backend that needs bio data on demand without onboarding to yet another vendor portal.
| Name | Type | Description |
|---|---|---|
symbolrequired | string | min 1 chars · max 30 chars |
taxid | integer | min 1 · max 9999999 |
# 1. Probe with no auth → 402 envelope with PaymentRequirements curl -sS 'https://2s.io/api/bio/gene?symbol=example&taxid=9606' # 2. Sign + retry with PAYMENT-SIGNATURE: curl -sS 'https://2s.io/api/bio/gene?symbol=example&taxid=9606' \ -H 'PAYMENT-SIGNATURE: <base64-json-payload>' # Or use the canonical runner (handles probe → sign → retry): # EVM_PRIVATE_KEY=0x... node --env-file=.env.local \ # --experimental-strip-types scripts/x402-pay.ts \ # 'https://2s.io/api/bio/gene?symbol=example&taxid=9606'
import { TwoS } from '@2sio/sdk'
const client = new TwoS({
privateKey: process.env.EVM_PRIVATE_KEY as `0x${string}`,
})
const result = await client.bio.gene({
"symbol": "example",
"taxid": 9606
})
console.log('endpoint:', result.endpoint)
console.log('cost:', result.costUsd, 'USDC')
console.log('tx:', result.settlement?.txHash)
console.log('data:', result.data)import os
from twosio import TwoS
client = TwoS(private_key=os.environ["EVM_PRIVATE_KEY"])
result = client.bio.gene(symbol="example", taxid=9606)
print("endpoint:", result.endpoint)
print("cost:", result.cost_usd, "USDC")
print("tx:", (result.settlement or {}).get("tx_hash"))
print("data:", result.data)// 1. Add @2sio/mcp to your MCP host config (Claude Desktop example below).
// EVM_PRIVATE_KEY funds x402 payments per call.
// claude_desktop_config.json
{
"mcpServers": {
"2sio": {
"command": "npx",
"args": ["-y", "@2sio/mcp"],
"env": { "EVM_PRIVATE_KEY": "0x..." }
}
}
}
// 2. Once the server is running, agents call this tool via standard MCP:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bio.gene",
"arguments": {
"symbol": "example",
"taxid": 9606
}
}
}| Field | Type | Description |
|---|---|---|
ok | boolean | one of: true |
items | array | |
total | integer | Total matching rows upstream; null when unknown. |
source | object | |
meta | object |
{
"ok": true,
"items": [
{
"gene": {
"symbol": "example",
"ncbiGeneId": "example",
"description": "example",
"organism": {
"scientificName": "example",
"commonName": "example",
"taxid": 1
},
"chromosome": "example",
"mapLocation": "example",
"aliases": [
"example"
],
"summary": "example",
"protein": {
"found": false,
"uniprotAccession": "example",
"uniprotId": "example",
"name": "example",
"lengthAa": 1,
"function": "example"
},
"ncbiUrl": "example",
"uniprotUrl": "example"
}
}
],
"total": 1,
"source": {
"provider": "example",
"url": "example",
"license": "example"
},
"meta": {
"sources": [
{
"provider": "example",
"url": "example",
"license": "example"
}
]
}
}