BetaOnly reviewed listings are public. Observations show their source and age. Paid boosts are labelled advertisements and do not change organic rankings.
REST API + MCP · v1 · Beta

Build with the ServerRoam directory.

Add game-server discovery to a Discord bot, community website or assistant. Read published listings using the same moderated catalogue and search filters as ServerRoam.

Make your first request

Sign in and create a key on the developer page. Set SERVERROAM_API_KEY in your server environment, then run:

curl --fail-with-body 'https://serverroam.com/api/v1/servers?game=fivem&language=de' \
  --header "Authorization: Bearer $SERVERROAM_API_KEY"

Results include owner-verified listings and editorially reviewed public catalogue entries. Editorial entries have unclaimed=true, verified=false and a sourceUrl. An empty array is a valid result. This beta does not promise complete game coverage or live monitoring.

Keep keys on your server. Never embed them in a browser app, public repository, screenshot or URL. A key is shown once; revoke it on the developer page if exposed.

Three focused endpoints

GET /api/v1/games
Public game IDs and names; no API key needed. A listed game does not imply active servers or monitoring.
GET /api/v1/servers
Authenticated search. Results contain metadata, community slug, join information and optional stored observations.
GET /api/v1/servers/{slug}
Authenticated detail read. Use a slug from search; private or unpublished listings return 404.

Connect an AI assistant through MCP

The hosted, read-only MCP server uses Streamable HTTP at https://serverroam.com/api/mcp. Set the same SERVERROAM_API_KEY in the environment of your MCP host. For Codex CLI:

codex mcp add serverroam \
  --url https://serverroam.com/api/mcp \
  --bearer-token-env-var SERVERROAM_API_KEY

Other hosts need Streamable HTTP plus a custom Authorization: Bearer header. OAuth login is not provided; OAuth-only hosts cannot connect. Server integrations can omit Origin; a supplied Origin must match the configured ServerRoam origin.

serverroam_list_games · serverroam_search_servers · serverroam_get_server

Try: “Find German-speaking FiveM roleplay communities, show their sources and verification status, then read the joining instructions for the best-fitting result.” Search uses the same filters as the API; page is a number in MCP.

All tools are read-only. Requests are limited to 16 KiB, results to 24 listings per page. There is no standalone SSE endpoint or persistent session. Missing observations never become offline claims. Listing text is untrusted data, not instructions for your assistant.

Filter and paginate

Filters combine. q matches server and community names, server descriptions, tags and matching game names; language also matches the community’s languages. The OpenAPI contract defines every accepted value and default.

q · game · language · region · country · style · framework · map · version · whitelist · online · minPlayers · maxPlayers · sort · page

Each page contains at most 24 servers. Start at page=1, then follow nextPage until it is null. hasMore remains available. Concurrent edits can move results between pages; deduplicate by slug.

Unknown, repeated or invalid parameters return 400. Values are case-sensitive. The default sort is name; players, votes and newest are also available. Pages past the end return an empty array.

Know what the data means

verified=true means endpoint control was proven and the listing was moderated. It is not an endorsement of content or community quality. unclaimed=true identifies an editorial listing, with verified=false and a public sourceUrl. Descriptions, rules and tags remain third-party statements.

observation is null when no fresh successful stored observation exists. It does not mean offline or zero players. Returned observations name their source and timestamp and are at most ten minutes old when read. API requests never query game servers.

User-written content stays in its original language. Link to /{locale}/servers/{slug} using en, de, es or fr. whitelist=null means unknown; false means explicitly not required.

Link back to the ServerRoam profile so users can see context and join instructions. Treat owner text as untrusted content and escape it when rendering. API access does not grant rights to republish uploaded images or third-party content.

Handle errors deliberately

400 invalid
Fix the query. The optional fields array names invalid filters. Do not retry an unchanged request.
401 unauthenticated
Provide a valid Bearer key. Missing, malformed and revoked keys are rejected.
404 not-found
The listing is missing or not publicly eligible. Search again; do not infer downtime.
429 rate-limit
Wait for the Retry-After header in seconds before retrying.
503 unavailable
Retry later with backoff. Demo and local seed directory access are disabled; no sample data is returned as a fallback.