Skip to content
hyperspawn.ioapi v1

$ curl https://hyperspawn.io/api/v1/robots/{org}/{slug}

The machine interface to every robot in the Hyperspawn registry.

JSON over HTTPS and a public MCP server. One id, org/slug, resolves to specs, openness, build package and per-region sourcing. Every fact carries its source. Unknown values are absent, never estimated.

robots
72
build packages
30
places
41
endpoints
27
mcp tools
17

Counted from the registry at build time.

01 Endpoints

Base https://hyperspawn.io/api/v1 · CORS open · CDN cached 5 min · no key

List robots

list-robots

Every robot in the registry, open and closed. Filter by class, openness facets, verb state and text.

GET/api/v1/robots?class=humanoid&open=cad,bom&limit=10
curl -s 'https://hyperspawn.io/api/v1/robots?class=humanoid&open=cad,bom&limit=10'

Press send or Enter. This calls the live API.

02 MCP server

https://hyperspawn.io/mcp · streamable HTTP · stateless · read-only

Claude Code
claude mcp add --transport http hyperspawn https://hyperspawn.io/mcp
Cursor, Windsurf, any streamable-HTTP client
{
  "mcpServers": {
    "hyperspawn": {
      "url": "https://hyperspawn.io/mcp"
    }
  }
}
Claude Desktop (claude_desktop_config.json, via mcp-remote)
{
  "mcpServers": {
    "hyperspawn": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://hyperspawn.io/mcp"
      ]
    }
  }
}

Claude Desktop and claude.ai can also add it directly under Settings, Connectors, with the URL above.

toolargs
search_robots(query, limit?)

Ranked text search over the registry.

get_robot(id)

Full record for org/slug, with sources and sibling-domain links.

get_build_package(id)

BOM, fabrication, assembly steps, firmware, policies.

source_parts(robot, region)

Resolve BOM lines to offers in IN, US, EU or CN; unpriced lines listed.

compare_robots(ids[])

Side-by-side specs, openness and verbs for 2 to 6 robots.

list_open_robots(facets?, class?, verb?)

Robots whose listed facets are all public.

verification_levels()

The L0-L5 ladder and robot counts per level.

get_openness(id)

Computed openness score with per-facet weights and licenses.

list_verified_builds(robot?, country?, builder?)

Human-reviewed build reports: builder, city, city-centre geo, photos, date.

list_companies(kind?, country?, query?)

Robot makers, foundation-model companies, labs and component makers, with sourced funding.

get_company(id)

One company with its robots, brain models and timeline.

list_brain_models(company?, kind?, open?, query?)

Robot foundation models (VLAs, world models) with paper, code and weights links.

get_timeline(kind?, robot?, company?, from?, to?)

Dated, sourced events in humanoid and open robotics history.

list_events(when?, kind?, country?)

Upcoming and past robotics conferences, competitions and expos.

get_news(robot?, company?, query?, limit?)

Live robotics news (outlet RSS + Brave News), deduped, tagged, links only.

get_papers(robot?, company?, query?, limit?)

Newest arXiv cs.RO papers on humanoids, locomotion and VLAs.

get_videos(company?, robot?, query?, limit?)

Latest videos from official maker YouTube channels, with embed URLs.

Raw JSON-RPC
curl -s https://hyperspawn.io/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"get_robot","arguments":{"id":"unitree/g1"}}}'

03 Verification ladder

  1. L0IndexedKnown to exist. Atlas page only.
  2. L1CompiledPackage validates against the spec; every fact has a source.
  3. L2Sim-verifiedLoads in browser and GPU sim, mass within tolerance of the BOM, holds a stand. Unlocks .training.
  4. L3SourcedEvery BOM line resolves to a live offer in at least two regions. Unlocks the one-click cart.
  5. L4BuiltAt least one community build report with photos and bring-up logs. Unlocks Build it as the main action.
  6. L5CertifiedThe robot's maintainer signs the package. Unlocks certified teams and kit sales.

Levels are earned by evidence. The API reports them; it never raises them.

04 Errors

{ "error": string, "code": string, "status": number, "details"?: any }
Error codes
codestatusmeaning
bad_request400Malformed query or body
validation_failed400Body failed the intake schema; details.issues lists fields
not_found404Unknown robot or endpoint; details.suggestions lists near matches
no_build_package404Robot exists, package not compiled or hardware closed
method_not_allowed405Wrong method for this path
payload_too_large413Body over 64 KB
unsupported_media_type415POST without Content-Type: application/json
rate_limited429Too many submissions from one address
storage_failed502Intake store rejected the write; nothing saved
storage_not_configured503Intake store not configured; nothing saved