Skip to main content
Glama

vr-org-mcp

npm version MCP Registry Install in Cursor Install in VS Code

Read-only Model Context Protocol server for VR.org, a dedicated VR / AR / XR news publication and aggregator.

It gives any MCP-compatible agent (Claude Desktop, Claude Code, Cursor, Continue, and others) one-call access to live VR, AR, and XR news, VR.org's original editorial (including full article text), the VR/AR/XR events calendar, curated headset deals, buyer-guide answers, and top-game and top-app lists.

Eleven tools, five resources, and three prompts. Zero keys. Zero writes. Zero payments.

Install

Run it directly with npx (no global install needed):

npx vr-org-mcp

Claude Desktop

One-click: download the .mcpb bundle from the latest release and double-click it to install into Claude Desktop. Or configure manually:

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "vr-org": {
      "command": "npx",
      "args": ["-y", "vr-org-mcp"]
    }
  }
}

Claude Code

claude mcp add vr-org -- npx -y vr-org-mcp

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "vr-org": {
      "command": "npx",
      "args": ["-y", "vr-org-mcp"]
    }
  }
}

Hosted remote endpoint (no install)

VR.org also runs the same tools as a remote server over MCP's streamable-HTTP transport, so web clients (ChatGPT connectors, Claude.ai connectors) can use it with no local install:

https://vr.org/mcp

Human setup walkthrough for every client: vr.org/connect.

Related MCP server: korean-news-mcp

Tools

Tool

What it returns

search_vr_news

Latest VR / AR / XR headlines from the live feed, with optional category filter and keyword search (all keywords must match, in any order)

get_vr_trending

Topics currently trending across the feed

list_vr_originals

Summaries of VR.org's own editorial articles, newest first

get_vr_article

Full content of one original by slug: metadata, canonical URL, and the article body HTML

get_vr_events

Upcoming VR / AR / XR industry events (conferences, expos, launches), soonest first

get_vr_deals

Curated product picks with prices, badges, and retailer links

compare_vr_headsets

Side-by-side of two headsets (partial names accepted)

get_top_vr_games

Current ranked top VR games list

get_top_vr_apps

Current ranked top VR apps and utilities list

list_vr_sources

The news sources VR.org aggregates, with counts

vr_explain

Canonical short answer plus pillar-page link for a common question

Resources

Browsable MCP resources an app can attach as context:

Resource

Contents

vrorg://news/latest

Latest aggregated VR / AR / XR headlines

vrorg://originals/latest

Index of VR.org's newest original articles

vrorg://events/upcoming

Upcoming VR / AR / XR industry events

vrorg://guides

VR.org's canonical pillar-guide answers in one doc

vrorg://article/{slug}

Full HTML body of any original article (resource template)

Prompts

Prompt

What it does

recommend_a_headset

Recommends a headset from VR.org's picks given a budget and use case

this_week_in_vr

Drafts a weekly VR / AR / XR roundup from the feed and originals

explain_vr_topic

Explains a VR topic grounded in VR.org's canonical answer

How it works

Every tool composes VR.org's public JSON API (https://vr.org/api/*) into a single agent-friendly response. The server is a thin proxy: it holds no secrets, writes nothing, and cannot move money.

Threat model

VR.org's editorial is controlled, but the live feed also carries third-party RSS headlines. To keep a malicious or compromised upstream headline from manipulating the calling model, every tool output is:

  1. Sanitized. Control characters and zero-width / direction-override characters are stripped from every string.

  2. Capped. Serialized responses are limited to 50 KB so a large payload cannot flood the agent's context window.

Inputs are validated before any outbound request and every free-text parameter is length-capped at the schema layer. Errors are returned as structured, non-echoing objects rather than raw stack traces; on the rare path where an error string reaches the caller it runs through the same output scrub as a tool result, with any credential-shaped substring redacted and the text capped, and is flagged with isError.

Configuration

The API base URL is fixed to https://vr.org in source and cannot be overridden, so the server can only ever talk to VR.org.

Env var

Default

Purpose

VR_ORG_UA_SUFFIX

(none)

Optional suffix appended to the outbound User-Agent

Development

npm install
npm run dev        # run from source over stdio
npm run build      # compile to dist/
npm test           # run the offline test suite
npm run typecheck  # type-check without emitting

Changelog

0.5.0

Protocol upgrade. Requires Node.js 20 or newer.

  • The server now runs on the MCP SDK v2 (@modelcontextprotocol/server) and speaks the 2026-07-28 protocol revision. Clients on the 2025 revisions connect exactly as before: the opening message decides which revision a connection uses.

  • Node.js 18 is no longer supported, because the v2 SDK needs Node.js 20. If you are pinned to Node 18, stay on 0.4.4.

  • The install is much smaller. The old SDK pulled in an HTTP stack this stdio server never used, more than 80 packages of it. The production dependency tree is now three packages, and npm audit is clean with no overrides.

  • The hosted endpoint at https://vr.org/mcp moved to the same protocol on the same day. It also answers at /mcp directly now instead of redirecting to /api/mcp, which halves the round trips for clients configured with the short URL.

  • No tool, resource or prompt changed.

0.4.4

search_vr_news now matches on words instead of one exact phrase.

  • The keyword filter used to require the whole query to appear, as typed, somewhere in a headline or snippet. Agents tend to send queries like "steam frame release date" or "best vr headset 2026", and those came back empty even when the feed was full of matching stories. In a replay of 25 realistic queries against the live feed, 18 returned nothing.

  • A query is now split into keywords. Filler ("what is the latest", "news", "today", years and month names) is dropped, and every remaining keyword has to appear in the headline, snippet, tags, category or source name, in any order. Plurals match singulars, punctuation is ignored ("half-life alyx" finds "Half-Life: Alyx"), and a model name typed without its space still matches ("psvr2" finds "PS VR2"). Numbers and two-letter terms match whole words only, so "quest 3" does not return Quest 3S stories.

  • Headline matches are listed first, newest first inside each group.

  • When a query is sent, the response adds match (all_terms, partial, none, or latest for a query that was all filler), terms (the keywords actually used) and total_matches. If nothing matches every keyword, the closest matches are returned and labelled partial with a hint. A call with no query returns exactly what it did before.

  • The hosted endpoint at https://vr.org/mcp carries the same matcher.

0.4.3

Maintenance release.

  • The vr_explain tool description now names the newer topics it can answer ("steam frame price", "meta vr glasses"), so an agent reading the tool list knows to ask for them. The hosted endpoint at https://vr.org/mcp carries the same wording.

  • The release workflow now publishes through npm trusted publishing (OIDC) and only falls back to a token if that is rejected. Provenance is attached as before.

0.4.2

vr_explain and the vrorg://guides resource now answer from VR.org's live explainer feed, so they stay current between releases.

  • The answers used to be a list compiled into the package in July 2026. By October most realistic topics ("steam frame", "steam frame price", "meta vr glasses", "quest 4") returned no_explainer, and several of the answers that did exist were out of date. The list is now fetched from https://vr.org/api/explainers and cached for ten minutes, the same way deals and events are, so a guide refresh on the site reaches agents without a package release.

  • Every fetched entry is validated before use (keys must be a non-empty list of non-empty strings, and the link must be on https://vr.org) and passes through the same sanitizer as other upstream text. If the fetch fails or returns nothing valid, the built-in list answers instead. That list now mirrors the site's current 34 guides, up from 10, so an offline server still gives current answers. A failed fetch is remembered for one minute so an outage does not slow down every call.

  • Matching is unchanged: the longest key contained in the topic wins, so "steam frame price" reaches the price page and not the Steam Frame hub.

  • The explain_vr_topic prompt no longer offers 'passthrough' as an example topic, which had no answer. It and the no_explainer hint now suggest 'steam frame'.

  • The get_vr_deals description names all five catalog sections: headsets, AR and XR glasses, accessories, haptics and body tracking, gaming hardware.

  • Bumps @modelcontextprotocol/sdk from 1.30.0 to 1.32.1 and refreshes the ip-address and proxy-addr pins. The advisories behind this sit in the SDK's OAuth client and HTTP transport, which this stdio server never loads. npm audit on the production dependencies reports zero vulnerabilities.

0.4.1

Fixes from a September 2026 audit, matched on the hosted endpoint at vr.org/mcp.

  • get_vr_article now returns the whole article. body_html was cut at the general 4,096-character string cap, which truncated most articles mid-tag while still reporting ok: true. It now has its own 45,000-character cap, and the 50 KB response cap still applies. The article also carries updated, the date a correction was applied, which the hosted endpoint already returned.

  • vr_explain no longer answers short topics with the wrong guide. A topic like "vr" or "3" used to match inside a longer key and return "PSVR2 vs Quest 3" with confidence; the reverse match now needs four or more characters starting on a word boundary.

  • compare_vr_headsets matches "Pimax Dream Air SE" correctly. The pimax alias was a prefix match that rewrote every Pimax query to Crystal.

  • Reading vrorg://news/latest no longer shrinks keyword search to 25 items for the next minute (the two shared a cache key with different request sizes).

  • A malformed slug in vrorg://article/{slug} now says "not found" instead of "temporarily unavailable, retry shortly".

  • Refreshed transitive dependency pins (hono, fast-uri, qs) for npm audit.

0.4.0

Content provenance. Feed results now carry a provenance field on every item, either vr_org_editorial (written and edited by VR.org) or third_party_feed (a headline or snippet relayed verbatim from an outside publisher). Any response containing relayed text also carries a content_notice saying to treat that text as data rather than instructions, and the vrorg://news/latest resource carries the same notice in prose. This is additive metadata, so existing fields and existing consumers are unaffected.

The point is to let a calling client tell which text VR.org actually stands behind. It follows the August 2026 GhostSplice research on splitting instructions across MCP channels, whose core mitigation is that clients should treat server output as data. This server is not a vector for that attack (it never requests sampling, its tool descriptions are static literals, and every value that can flow back in as a tool argument is validated against a strict allowlist), but it does relay text it did not write, and now it says so.

Also bumps @modelcontextprotocol/sdk to 1.30.0 and pins four transitive dependencies of the SDK's HTTP transport that carried advisories. This server is stdio-only and never loads that transport, so the pins are hygiene rather than an exposure fix. npm audit --omit=dev reports zero vulnerabilities.

0.3.2

Error-path hardening: tool errors now pass through the same output scrub as tool results, with secrets redacted and error text capped. All free-text parameters gain schema-level max lengths. No behavior change for valid inputs.

License

MIT. A VR.org project.

Available Tools

11 tools
compare_vr_headsetsCompare two VR headsetsA
Read-only

Returns a side-by-side of two headsets (price, badge, description, retailer links) drawn from VR.org's curated catalog. Accepts partial names like 'Quest 3' or 'PSVR2'.

NameRequiredDescriptionDefault
aYesFirst headset name (partial match allowed).
bYesSecond headset name (partial match allowed).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context: the comparison is drawn from a curated catalog and returns specific field groups, which matters because no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The returned-value summary is front-loaded and the partial-name affordance trails it as supporting detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only comparison tool with no output schema, the description covers what is compared, what comes back, and where the data comes from. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters already document 'partial match allowed' with maxLength constraints. The description's example strings ('Quest 3', 'PSVR2') and the partial-match restatement add marginal illustration but no syntax or format detail beyond the schema, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (side-by-side comparison of two headsets) and names the exact fields returned (price, badge, description, retailer links) plus the data source (VR.org curated catalog). This is clearly distinguishable from every sibling, all of which are single-item get/list/search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (compare two named headsets) and usefully notes that partial names are accepted, so an agent knows it need not resolve exact titles first. However, it never states when to prefer this over a plain lookup or what happens when a name is ambiguous or missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_vr_appsGet the top VR apps listA
Read-only

Returns VR.org's current ranked list of the top VR apps and utilities.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds only that the list is 'current' (live ranking) and sourced from VR.org, with no detail on ordering basis, list size, or refresh cadence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is appropriately sized for a zero-parameter list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and annotations covering the safety profile, the description needs only to say what comes back – which it does. Minor gaps remain around how the ranking is determined and whether games are included, given the get_top_vr_games sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline for a 4 – there is nothing for the description to disambiguate, and the empty schema is self-consistent with a no-argument list endpoint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns ... ranked list of the top VR apps and utilities') and names the source (VR.org). It is clear what the agent gets, though it never explicitly contrasts itself with the close sibling get_top_vr_games, which shares the 'top' listing pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance, and no alternative is named. The nearest siblings get_top_vr_games and get_vr_trending are not mentioned, so the agent must infer whether this covers games too or only apps/utilities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_vr_gamesGet the top VR games listB
Read-only

Returns VR.org's current ranked list of the top VR games.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that results are 'current' and sourced from VR.org, which is useful context about freshness and provenance, but says nothing about list size, ordering, or caching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Every word carries information about source, freshness, and content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-param read tool with no output schema and annotations covering safety, the essentials are present. However, it omits how many entries are returned and how the ranking is determined, and leaves the overlap with get_top_vr_apps unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a parameterless tool applies. No parameter-level ambiguity exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns VR.org's current ranked list of top VR games. It is clear what the tool produces, but it does not distinguish itself from the sibling get_top_vr_apps, which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to choose this over get_top_vr_apps, get_vr_trending, or get_vr_deals. The agent must infer the selection criteria entirely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vr_articleGet a VR.org article by slugA
Read-only

Returns the full content of a single VR.org original article by its slug: metadata (title, author, date, category, tags, snippet), the canonical URL, and the article body HTML.

NameRequiredDescriptionDefault
slugYesThe article slug, e.g. 'why-vr-is-the-perfect-horror-machine'.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description goes further by describing the return shape — metadata fields, canonical URL, and body HTML — which matters because there is no output schema. It omits error behavior for a bad slug and any rate/format caveats, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, followed by the returned payload. No filler, no redundancy with the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns, and it does so concretely (metadata, canonical URL, body HTML). It is nearly complete for a simple single-resource read; only edge-case behavior on a nonexistent slug is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself supplies an example slug, so the single parameter is fully documented structurally. The description adds no slug format or validity guidance beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns the full content of a single VR.org original article, keyed by slug. It enumerates exactly what comes back (metadata, canonical URL, body HTML). It does not explicitly contrast itself with list_vr_originals or search_vr_news, though the singular-by-slug framing implies the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'by its slug' — the agent knows it needs a slug in hand to call this. There is no explicit when-to-use/when-not statement and no alternative named for retrieving VR.org content (e.g. list_vr_originals for browsing, search_vr_news for discovery).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vr_dealsGet VR product deals and pricesA
Read-only

Returns VR.org's current curated product picks in five sections (headsets, AR and XR glasses, accessories, haptics and body tracking, gaming hardware) with prices, badges, and retailer links. Optionally filter to one section.

NameRequiredDescriptionDefault
sectionNoOptional section filter, e.g. 'headsets'.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds useful return-shape context (prices, badges, retailer links) but says nothing about data freshness, whether the curated set can be empty, or any rate limits on this external-facing call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the return content and section list come first, the optional filter second. No filler, nothing repeated from the title, and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional-parameter read tool with no output schema, the description covers what is returned (five sections with prices, badges, retailer links) and how to narrow it. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description goes beyond the schema by enumerating the five valid section values (headsets, AR and XR glasses, accessories, haptics and body tracking, gaming hardware), whereas the schema only offers 'e.g. headsets'. This meaningfully helps the agent pick a legal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and resource (VR.org's current curated product picks) and enumerates the five sections it covers, which lets an agent separate it from siblings like compare_vr_headsets or get_vr_trending without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Optionally filter to one section' implies when the parameter is used, but there is no explicit guidance on when to prefer this tool over compare_vr_headsets for headset pricing or when not to call it. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vr_eventsGet upcoming VR / AR / XR eventsA
Read-only

Returns upcoming VR, AR, and XR industry events (conferences, expos, launches) from VR.org's events calendar, soonest first. Set include_past to also include events that have already ended.

NameRequiredDescriptionDefault
limitNoMax results, 1-50 (default 10).
include_pastNoInclude events that have already ended (default false).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds provenance (VR.org's events calendar) and ordering (soonest first), which is useful context, but it says nothing about return format or how limit affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded and the optional parameter behavior appended. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only, zero-required-parameter list tool with full schema coverage and annotations carrying the safety profile, the description covers purpose, source and ordering adequately. Only minor gaps remain, such as pagination or return-shape hints, which are not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description restates include_past's effect but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (returns upcoming VR/AR/XR industry events) and adds scope detail (conferences, expos, launches) plus the source calendar. It is clearly distinguishable from siblings like search_vr_news or get_vr_deals, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'upcoming' and the include_past toggle, which tells the agent how to broaden the query. There is no explicit when-not-to-use guidance and no alternative tool is named for adjacent needs such as news or deals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_vr_originalsList VR.org original articlesA
Read-only

Returns summaries of VR.org's own editorial articles (original reporting, opinion, retrospectives, and guides), newest first. Optionally filter by category.

NameRequiredDescriptionDefault
limitNoMax results, 1-50 (default 15).
categoryNoOptional category filter: hardware, gaming, software, enterprise, ar, or xr. Omit for all categories.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds two useful behavioral facts beyond the annotations: results are ordered newest first, and it returns summaries rather than full article bodies (implying get_vr_article is needed for content). No auth or rate-limit details, but that is a minor omission for a read-only list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the resource and content scope are front-loaded, and the optional filter is mentioned last. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only list with no output schema, the description covers scope, content types, ordering, and return granularity. It could go slightly further by noting the absence of pagination beyond the limit cap or by pointing to get_vr_article for full text, but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the schema already documents limit (1-50, default 15) and enumerates the category values. The description only echoes that category filtering is optional, adding no syntax or semantic detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns summaries) and resource (VR.org's own editorial articles), and enumerates the content types (original reporting, opinion, retrospectives, guides). This clearly distinguishes it from siblings like search_vr_news and get_vr_article, which cover external news and full articles respectively.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions that category filtering is optional and implies a browsing/listing use case, but never states when to prefer this over search_vr_news or get_vr_article. The relationship to sibling tools is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_vr_sourcesList VR.org news sourcesA
Read-only

Returns the news sources VR.org aggregates, with per-source article counts and status, plus aggregate totals.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly=true, destructive=false and openWorld=true, so the safety profile is covered. The description adds real behavioral value by disclosing what is returned (per-source article counts, status, aggregate totals), which matters because there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the resource and immediately enumerating the returned fields. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing the return shape, and it does so adequately (counts, status, totals). Minor gaps remain — 'status' is undefined and no ordering or pagination behavior is mentioned — but nothing essential is missing for a no-arg catalogue lister.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to disambiguate; baseline for zero-param tools is 4. No filter or pagination options exist that would need explaining.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ('Returns') with a specific resource ('the news sources VR.org aggregates') and even previews the payload (per-source counts, status, totals). It is clearly distinct from siblings like search_vr_news or get_vr_article, though it does not explicitly name those alternatives as a contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. However, for a zero-parameter list tool that enumerates the source catalogue, the intended use is strongly implied by the resource itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_vr_newsSearch VR / AR / XR newsA
Read-only

Returns the latest VR, AR, and XR headlines from VR.org's live aggregated feed plus VR.org originals, newest first. Optionally filter by category and by keywords: every keyword must appear in the headline, snippet, tags or source, in any order, and headline matches are listed first. Use a few keywords ('steam frame price') rather than a sentence, and omit the query for the latest headlines.

NameRequiredDescriptionDefault
limitNoMax results, 1-50 (default 20).
queryNoOptional keywords, e.g. 'steam frame price'. All must match, in any order. Omit for the latest headlines.
categoryNoOptional category filter: hardware, gaming, software, enterprise, ar, or xr. Omit for all categories.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, openWorld, non-destructive), and the description adds real behavioral detail beyond them: every keyword must match across headline/snippet/tags/source, matching is order-independent, and headline matches are ranked first. It adds value without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: source and ordering first, then match semantics, then a practical query-writing tip. Front-loaded with the most decision-relevant information and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only three optional parameters, no output schema, and full schema coverage, the description supplies everything needed to call the tool correctly: what it returns, ordering, filter semantics, and how to shape the query. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining where keywords are matched (headline, snippet, tags, source) and the ranking rule that headline matches come first. It also reinforces the 'omit for latest' behavior of the query parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the latest VR, AR, and XR headlines'), names the source ('VR.org's live aggregated feed plus VR.org originals'), and specifies ordering ('newest first'). This clearly separates it from siblings like get_vr_article and list_vr_originals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage guidance: use a few keywords rather than a sentence, and omit the query for the latest headlines — an explicit when/when-not. It doesn't name a sibling alternative or state exclusions relative to other news-ish tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vr_explainExplain a VR / AR / XR topicA
Read-only

Returns a canonical VR.org answer and the authoritative guide link for a common VR / AR / XR question, covering the main buying guides and product hubs (for example 'what is vr', 'best headset', 'steam frame price', 'meta vr glasses', 'ar glasses', 'vr for beginners').

NameRequiredDescriptionDefault
topicYesThe topic or question, e.g. 'what is vr' or 'steam frame price'.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, destructiveHint=false) and open-world scope, so the bar is lower. The description adds meaningful context beyond them: the answer is canonical/curated (not a live web lookup), and it is paired with an authoritative guide link covering buying guides and product hubs. It does not disclose failure behavior for unrecognized topics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with what is returned, then scopes the covered topics. The example list is long but each item clarifies the accepted input domain, so nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing the return, and it does so ('canonical VR.org answer and the authoritative guide link'). For a single-required-parameter tool this is largely sufficient; the only gap is what happens when a topic falls outside the guide/hub set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by enumerating representative topic strings ('best headset', 'meta vr glasses', 'ar glasses', 'vr for beginners') that widen the agent's sense of accepted input beyond the two examples in the schema. That materially reduces the risk of mis-typed queries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns a canonical answer plus an authoritative guide link for VR/AR/XR questions. This is clearly distinct from retrieval-style siblings like get_vr_article or search_vr_news. It stops short of naming any sibling directly, so it doesn't earn the explicit differentiation a 5 requires.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool is for 'a common VR / AR / XR question' and the examples show the intended scope. There is no explicit when-not guidance (e.g., 'for news use search_vr_news', 'for head-to-head specs use compare_vr_headsets'), leaving the agent to infer boundaries from the example list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.5.0
    • Changedcompare_vr_headsets2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_top_vr_apps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_top_vr_games1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_vr_article2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_vr_deals2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_vr_events2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_vr_trending1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_vr_originals2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_vr_sources1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_vr_news3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / query / description
        Previous value: -"Optional keyword to match in the title or snippet."New value: +"Optional keywords, e.g. 'steam frame price'. All must match, in any order. Omit for the latest headlines."
    • Changedvr_explain3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / topic / description
        Previous value: -"The topic or question, e.g. 'what is vr' or 'best vr headset'."New value: +"The topic or question, e.g. 'what is vr' or 'steam frame price'."
  2. 7 tool updatesv0.1.3
    • Changedcompare_vr_headsets2 fields changed
      • addedInput schema / properties / a / maxLength
        Added value: +200
      • addedInput schema / properties / b / maxLength
        Added value: +200
    • Changedget_vr_article1 field changed
      • addedInput schema / properties / slug / maxLength
        Added value: +200
    • Changedget_vr_deals1 field changed
      • addedInput schema / properties / section / maxLength
        Added value: +200
    • Addedget_vr_events
    • Changedlist_vr_originals1 field changed
      • addedInput schema / properties / category / maxLength
        Added value: +100
    • Changedsearch_vr_news2 fields changed
      • addedInput schema / properties / category / maxLength
        Added value: +100
      • addedInput schema / properties / query / maxLength
        Added value: +500
    • Changedvr_explain1 field changed
      • addedInput schema / properties / topic / maxLength
        Added value: +500
  3. 10 tool updatesv0.1.2
    • First observedcompare_vr_headsets
    • First observedget_top_vr_apps
    • First observedget_top_vr_games
    • First observedget_vr_article
    • First observedget_vr_deals
    • First observedget_vr_trending
    • First observedlist_vr_originals
    • First observedlist_vr_sources
    • First observedsearch_vr_news
    • First observedvr_explain

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource or action: events, deals, headset comparison, top games, top apps, sources, explain, news search, trending, originals, and article retrieval. The only mild overlap is between news search, originals listing, and article retrieval, but their scopes are clearly separated by breadth and source type.

Naming Consistency4/5

All names use snake_case and mostly follow a verb_noun pattern (get_vr_events, list_vr_sources, search_vr_news, compare_vr_headsets). However, vr_explain inverts the usual order and get_top_vr_games/apps add a modifier, creating minor deviations from the otherwise predictable convention.

Tool Count5/5

Eleven tools is well-scoped for a VR content aggregation hub, covering the main content types without obvious redundancy. Each tool earns its place and the count stays within a manageable range for an agent to navigate.

Completeness4/5

Core workflows are covered: browsing events, deals, top lists, sources, trending, explainers, news search, originals, and full original articles. Minor gaps exist, such as no dedicated detail endpoint for individual events, deals, or aggregated external news articles, but agents can likely work around these via the available list/search tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    F
    maintenance
    A read-only MCP server that provides access to financial news, Wall Street Bets sentiment analysis, and detailed options data from sellthenews.org. It enables LLMs to retrieve real-time news feeds, search historical data, and analyze options chains or Greek exposure for specific tickers.
    5
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides Korean and global AI/tech news via 6 tools (categories, search, trending, article reading, daily briefing) without requiring an API key.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Search, trending, topics, and local news all in one MCP server. Article previews, deduplication, source filtering, and 40+ languages built in.
    24 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Local MCP server that ingests and normalizes recent AI, tech, and research news from multiple sources, exposing tools for media agents to query and retrieve article content on demand.
    -