Ranked engineers, from your own code
Repos they own and contribute to, where they work, and their devRank. From a script or from Claude.
Where to start
- Quickstart A key, one request, one response.
- MCP server The same calls from Claude, Cursor or your own agent.
MCP server
https://mcp.vamotalent.ai/mcp/searchClaude Code
claude mcp add --transport http vamo https://mcp.vamotalent.ai/mcp/searchWhat you can call
Filters for the facts, repos for the work, ranked by devRank. POST /v2/developers/search
Request
{
"repos": {"names": ["vllm-project/vllm"], "role": "contributor"},
"filters": ["And", [
["current_company_ids", "ContainsAny", {"company": ["OpenAI", "Anthropic", "Google DeepMind", "Meta"]}],
["is_bot", "Eq", false],
["is_org_account", "Eq", false]
]],
"sort": "devrank",
"limit": 20
}Response
{
"results": [
{
"id": "17310766",
"login": "zhuohan123",
"name": "Zhuohan Li",
"match": {
"repos": [{"fullName": "vllm-project/vllm", "stars": 93518, "role": "contributor"}],
"status": "attributed"
},
"index": {
"profile": {
"devrank": 100,
"title": "AI Research Scientist",
"company": "Meta",
"location": "San Francisco, California, United States",
"languages": ["python"]
}
}
},
{
"id": "8262694",
"login": "comaniac",
"name": "Cody Yu",
"match": {
"repos": [{"fullName": "vllm-project/vllm", "stars": 93520, "role": "contributor"}],
"status": "attributed"
},
"index": {
"profile": {
"devrank": 95,
"title": "Member of Technical Staff",
"company": "OpenAI",
"location": "San Francisco, California, United States",
"languages": ["python", "c++"]
}
}
}
],
"cursor": "eyJvIjoyMH0"
}curl -X POST https://api.vamotalent.ai/v2/developers/search \
-H "Authorization: Bearer $VAMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"repos": {"names": ["vllm-project/vllm"], "role": "contributor"},
"filters": ["And", [
["current_company_ids", "ContainsAny", {"company": ["OpenAI", "Anthropic", "Google DeepMind", "Meta"]}],
["is_bot", "Eq", false],
["is_org_account", "Eq", false]
]],
"sort": "devrank",
"limit": 20
}'API reference
openapi.jsonSearch
Search
- POST
/v2/developers/searchSearch developers - POST
/v2/developers/search/validateValidate a developer search - POST
/v2/developers/similarFind developers like a person - GET
/v2/developers/fieldsThe fields a developer search can use - GET
/v2/developers/enrichEnrich developers you already hold - GET
/v2/developers/emailsGet observed email addresses - GET
/v2/developers/summariesAI summaries of developers and their repositories
Developers
Developers
Deep research
- GET
/v2/deep-research/reports/developers/{login}/pdfDownload a developer report as a PDF - GET
/v2/deep-research/reports/repos/{owner}/{name}/pdfDownload a repository report as a PDF - GET
/v2/deep-research/reports/repos/{owner}/{name}/contributorsList every contributor on a repository report - GET
/v2/deep-research/jobsList deep research - POST
/v2/deep-research/jobsStart deep research - GET
/v2/deep-research/jobs/{id}Read deep research - GET
/v2/deep-research/reports/developers/{login}Read a persisted deep-research report for a developer - GET
/v2/deep-research/reports/repos/{owner}/{name}Read a persisted deep-research report for a repository
Pipeline
Shortlists
- GET
/v2/developers/{developerId}/shortlistsList the shortlists a developer is on - GET
/v2/shortlistsList shortlists - POST
/v2/shortlistsCreate a shortlist - GET
/v2/shortlists/{id}Get a shortlist - PATCH
/v2/shortlists/{id}Update a shortlist - DELETE
/v2/shortlists/{id}Delete a shortlist - POST
/v2/shortlists/{id}/membersAdd shortlist members - POST
/v2/shortlists/{id}/members/removeRemove shortlist members - POST
/v2/shortlists/{id}/members/moveMove shortlist members - POST
/v2/shortlists/{id}/members/pinPin a member’s repository - POST
/v2/shortlists/{id}/members/copyCopy shortlist members - GET
/v2/shortlists/{id}/notesList shortlist notes - POST
/v2/shortlists/{id}/notesAdd a shortlist note
Contacts
- GET
/v2/developers/{developerId}/notesList the notes on a developer - GET
/v2/contactsList contacts - POST
/v2/contactsAdd contacts - GET
/v2/contacts/{contactId}/notesList contact notes - POST
/v2/contacts/{contactId}/notesAdd a contact note - PATCH
/v2/contacts/{contactId}/notes/{noteId}Edit a contact note - DELETE
/v2/contacts/{contactId}/notes/{noteId}Delete a contact note - POST
/v2/contacts/do-not-contactMark a contact do not contact