SKILL.md
RootData
RootData Web3 intelligence API for:
- project / investor / person search
- project detail lookup
- recent funding rounds
- trending projects (daily / weekly)
- personnel job changes
Script Usage
This is a script-mode skill. Use from a bash block:
python3 - <<'EOF'
import sys, json
sys.path.insert(0, "/data/workspace/skills/rootdata")
from exports import rd_search, rd_project_detail, rd_funding_rounds
print(rd_search(query="berachain")[:2])
print(rd_project_detail(project_id=3375, include_investors=True).get("project_name"))
print(rd_funding_rounds(page=1, page_size=5).get("total"))
EOF
Available functions in exports.py: rdinitkey, rdsearch, rdidmap, rdprojectdetail, rdfundingrounds, rdhotindex, rdjob_changes.
First-Time Setup (auto-init key)
RootData provides an anonymous low-privilege key via init API.
- Env var used by this skill:
ROOTDATASKILLKEY - If the var is missing, call
rdinitkey()once and persist it to your environment.
Init endpoint:
POST https://api.rootdata.com/open/skill/init- body:
{} - returns
api_key
Functions
rdinitkey()
Get a new anonymous API key from RootData init endpoint.
Returns dict:
api_keymessage
rdsearch(query, precisex_search=False, language='en')
Search projects / investors / people by keyword.
Endpoint: POST /open/skill/ser_inv
Body:
query: stringprecisexsearch: bool
Returns list of entities. Common fields:
idtype(1=project, 2=institution, 3=person)nameone_linerintroducerootdataurl
rdidmap(type, language='en')
Get all IDs by type.
Endpoint: POST /open/skill/id_map
Body:
type: 1 (project) | 2 (institution) | 3 (person)
Returns list with id, name.
rdprojectdetail(projectid=None, contractaddress=None, include_investors=True, language='en')
Get project detail by project_id or contract address.
Endpoint: POST /open/skill/get_item
Body (one of):
project_id: intcontract_address: stringinclude_investors: bool
Returns project detail (fields vary), often including:
projectid,projectname,token_symbolone_liner,description,tagscontracts,social_mediatotal_fundinginvestors(when requested)
rdfundingrounds(page=1, pagesize=20, projectid=None, starttime=None, endtime=None, minamount=None, maxamount=None, language='en')
Get funding round list with filters.
Endpoint: POST /open/skill/get_fac
Notes:
- data covers past 365 days
- max 3 investors per round
valuationfield removed upstream
Returns dict:
totalitems(list)
rdhotindex(days=1, language='en')
Get trending project ranking.
Endpoint: POST /open/skill/hot_index
Body:
days: 1 (today) | 7 (this week)
Returns list, common fields:
rank,projectid,projectname,tokensymbol,oneliner,tags,X,rootdataurl
rdjobchanges(recentjoinees=True, recentresignations=True, language='en')
Get recent personnel moves.
Endpoint: POST /open/skill/job_changes
Body:
recent_joinees: boolrecent_resignations: bool
Returns dict with:
recent_joinees(max 20)recent_resignations(max 20)
Language Header
Pass language header:
en(default)cn
Error Handling
HTTP codes:
- 200 success
- 400 bad params
- 401 invalid key
- 404 not found
- 429 rate limit
- 500 internal error
Rate limit:
- 200 requests / minute / key
- on 429, use
Retry-Afterheader before retry
Usage Notes
- Keep a cached
ROOTDATASKILLKEYto avoid frequent init calls. - For research tasks, preferred flow:
1) rdsearch → find entity ID 2) rdprojectdetail / rdfunding_rounds for deeper analysis
- Funding rounds endpoint is recent-window only (365 days), mention this explicitly in outputs.