Wraps the Revternal Developer Intelligence API for multi-source developer enrichment and search over an index of ~11.7M developer profiles (GitHub-centric), plus LinkedIn person enrichment.
Revternal MCP has well-structured tool definitions with clear naming (verb_noun pattern) and comprehensive descriptions (avg 180 chars). All 5 tools have input schemas with type definitions and parameter descriptions. However, output schemas are completely undocumented, LLMs cannot predict response structure for downstream chaining. Parameter validation is minimal (no enums, ranges, or format constraints). The _apiKey parameter violates secret-injection pattern by appearing in tool signatures. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only.
Get behavioural intelligence for one developer by GitHub username — how they actually work, not just their bio. Returns work pattern (chronotype, peak hours, work rhythm, activity trend, velocity change), collaboration style (solo vs team, external PR ratio, reviews given), professionalism signals (commit quality, conventional commits, primary work type), and activity recency. Use to assess engagement, seniority signals, and outreach timing. Example: revternal_developer_intel({ github_username: "torvalds" }).
Enrich a developer from their GitHub profile URL — full firmographic + technical profile. Returns name, location, company, followers, years active, seniority estimate, and a ranked skills breakdown (languages by repo share). Use to enrich a lead or candidate you already have a GitHub URL for. Example: revternal_enrich_developer({ github_url: "https://github.com/torvalds" }).
Enrich a person from their LinkedIn profile URL. Returns the enriched profile record for recruiting / GTM / contact intelligence. Example: revternal_enrich_person({ linkedin_url: "https://www.linkedin.com/in/example" }).
Index statistics for the Revternal developer-intelligence dataset — total profiles indexed and processing status. Use to gauge coverage and freshness before relying on search results. Example: revternal_index_stats({}).
Output schemas completely undocumented. LLMs cannot predict response structure (fields, types, nesting) for any tool. Breaks tool chaining and forces agents to guess at downstream parameter mappings.
_apiKey exposed as tool parameter violates secret-injection pattern. API keys should never appear in tool signatures, they leak into agent traces, logs, and prompt history. Use server-side injection via environment variables.
No input validation constraints. Parameters like 'limit' (1-100), 'active_within_days' (>=1), and 'sort_by' lack enums or range definitions. LLMs can pass invalid values (limit=999, active_within_days=-5) that fail at runtime.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Search a live index of ~11.7M developers (GitHub-centric) by role, primary programming language, location, and recent activity — for recruiting, GTM/lead-gen, and developer-audience research. Returns matching GitHub usernames with role, primary language, location, and last-active timestamp. Filters: role (e.g. "backend engineer", "ai/ml engineer"), primary_language (e.g. "Python", "Rust"), location, active_within_days (only devs active in the last N days), sort_by (default last_active). Paginate with limit + offset. Example: revternal_search_developers({ primary_language: "Rust", active_within_days: 30, limit: 20 }).
No tool annotations. All 5 tools are read-only (no side effects), but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Error handling lacks recovery guidance. revternalError() returns generic messages ('HTTP 429', 'HTTP 401') without actionable next steps. Should guide LLM: 'Rate-limited. Retry in 60s or pass your own _apiKey.'