# info.summary
Machine-readable Markdown documents for every RBX Invest item page, creator page, player page, article, and key site page.

# info.description
RBX Invest publishes its public Roblox Limited analytics as Markdown so an agent can read a page without parsing the HTML application shell.

There are two ways in, and they return the same document:

1. Append `.md` to the path, for example `/item/1365767.md`.
2. Send `Accept: text/markdown` to the normal URL, for example `/item/1365767`.

Header negotiation is available on `/item/{assetId}`, `/creator/{creatorId}`, `/player/{userId}` and `/articles/{slug}`, which are generated per request. The fixed site pages are written at build time and are reachable only through their `.md` twin. Every HTML page that has a twin names it in a `<link rel="alternate" type="text/markdown">` tag.

Every document opens with a YAML front matter block of machine-readable figures (RAP, lowest resale price, quantities, growth) followed by prose and a set of links into related pages, so an agent that lands on one item can walk the rest of the catalog. Articles carry their full Markdown body.

No authentication, no API key, and no registration. The data is aggregated public Roblox data. RBX Invest is independent and is not affiliated with Roblox Corporation.

Only paths that have a Markdown twin should be requested with a `.md` suffix. The per-request routes answer a real 404 for an unknown id or slug, but a `.md` URL under any OTHER path (a collection page, a typo outside those routes) is answered by the single-page-app fallback with HTML and a 200 status, so treat any response that is not `text/markdown` as a miss.

# tags[].description
Per-item analytics for a single Roblox Limited.

# tags[].description
Catalog rollups for a single Roblox creator.

# tags[].description
Public portfolio of a single Roblox player.

# tags[].description
Documents an agent reads to find the rest.

# tags[].description
The Model Context Protocol endpoint, for agents that call tools rather than read documents.

# paths./item/{assetId}.md.get.description
RAP, lowest resale price, total quantity, copies remaining, favourites, creator, collection membership, and links to sibling and price-neighbour items.

# paths./item/{assetId}.md.head.description
The GET response headers, including the x-markdown-tokens estimate, with no body. Use it to budget context before spending any.

# paths./item/{assetId}.get.summary
Item page, HTML or Markdown by content negotiation

# paths./item/{assetId}.get.description
Returns the same Markdown document as `/item/{assetId}.md` when the request carries `Accept: text/markdown`. Any other Accept value returns the HTML page. Responses carry `Vary: Accept`.

# paths./creator/{creatorId}.md.get.description
Catalog value, item count, and the creator's tracked Limiteds with their current figures.

# paths./creator/{creatorId}.md.head.description
The GET response headers, including the x-markdown-tokens estimate, with no body.

# paths./creator/{creatorId}.get.summary
Creator page, HTML or Markdown by content negotiation

# paths./creator/{creatorId}.get.description
Returns the same Markdown document as `/creator/{creatorId}.md` when the request carries `Accept: text/markdown`. Any other Accept value returns the HTML page.

# paths./player/{userId}.md.get.description
One public Roblox Limited portfolio: value at RAP, copies, unique items, average growth, leaderboard rank against the median ranked portfolio, and the most valuable holdings. A player whose inventory is private, or who has hidden their portfolio, is a 404.

# paths./player/{userId}.md.head.description
The GET response headers, including the x-markdown-tokens estimate, with no body.

# paths./player/{userId}.get.summary
Player page, HTML or Markdown by content negotiation

# paths./player/{userId}.get.description
Returns the same Markdown document as `/player/{userId}.md` when the request carries `Accept: text/markdown`. Any other Accept value returns the HTML page.

# paths./articles/{slug}.md.get.description
One published article: a front matter of title, description, category, tags, author and dates, then the full article body as the author wrote it (Markdown, including any fenced `rbxchart` JSON blocks), then links into the rest of the site. An unpublished or unknown slug is a 404.

# paths./articles/{slug}.md.head.description
The GET response headers, including the x-markdown-tokens estimate, with no body.

# paths./articles/{slug}.get.summary
Article page, HTML or Markdown by content negotiation

# paths./articles/{slug}.get.description
Returns the same Markdown document as `/articles/{slug}.md` when the request carries `Accept: text/markdown`. Any other Accept value returns the HTML page, whose body shadow carries the whole article and whose head carries BlogPosting, BreadcrumbList and (for guides with a FAQ section) FAQPage JSON-LD.

# paths./{page}.md.get.description
Written at build time, so these are static documents rather than live queries. The home page is served at `/index.md`. Content negotiation does not apply to these paths: request the `.md` file directly. Collection pages have no Markdown twin; articles do, at `/articles/{slug}.md`.

# paths./llms.txt.get.description
An llmstxt.org index: what the platform is, the vocabulary it uses, and a curated Markdown map of key pages, articles, and top items. Regenerated on every build.

# paths./llms-full.txt.get.summary
Every key page and every article, in one document

# paths./llms-full.txt.get.description
The llmstxt.org companion to /llms.txt: the Markdown of each fixed site page and each published article, concatenated, each section opening with the same front matter its own `.md` URL serves. Items, creators and players are not included; their documents are generated per request. Regenerated on every build.

# paths./feed.xml.get.description
RSS 2.0, newest first, up to 50 items, each with the full article body in `content:encoded`. Announced from every HTML page by a `<link rel="alternate" type="application/rss+xml">` tag. Regenerated on every build.

# paths./.well-known/api-catalog.get.description
The linkset that points at this specification and at the human-readable documentation.

# paths./mcp.post.description
JSON-RPC 2.0 over Streamable HTTP, speaking the Model Context Protocol. Dual-era: revision 2026-07-28 (per-request metadata, server/discover) and the initialize-handshake revisions 2025-11-25, 2025-06-18 and 2025-03-26 are all answered. Stateless: no sessions, no session ids, no resumable streams, and GET is not served. Twelve read-only tools over public data: search_items, get_item_details, find_deals, get_new_limiteds, get_creator, rank_creators, rank_players, get_player_holdings, get_community_holdings, find_articles, get_market_stats, get_market_cap. No key required.

# paths./mcp.post.parameters[].description
Required by revision 2026-07-28; omit it for the legacy initialize flow.

# paths./mcp.post.parameters[].description
Must equal the body's method under revision 2026-07-28.

# paths./mcp.post.parameters[].description
Must equal params.name on tools/call under revision 2026-07-28.

# paths./mcp.post.requestBody.content.application/json.schema.properties.id.description
Omit for a notification, which is answered with 202 and no body.

# paths./mcp.post.responses.200.description
A JSON-RPC response. A tool result arrives as content[0].text holding JSON.

# paths./mcp.post.responses.400.description
Malformed JSON-RPC, unsupported protocol version (-32022), or header/body mismatch (-32020).

# paths./mcp.post.responses.405.description
GET or DELETE; this revision defines neither.

# components.parameters.AssetId.description
Roblox asset id of a Limited tracked by RBX Invest. Ids can be discovered from the items leaderboard, the sitemaps, or the link lists inside any item document.

# components.parameters.CreatorId.description
Roblox id of a creator with tracked Limiteds.

# components.parameters.AcceptMarkdown.description
Send `text/markdown` for the Markdown document. Anything else returns the HTML page.

# components.parameters.UserId.description
Roblox user id of a player whose portfolio is public and connected to RBX Invest. Ids can be discovered from the players leaderboard and its sitemap.

# components.parameters.ArticleSlug.description
Article slug: lowercase words joined by hyphens. Slugs are listed in /llms.txt, /articles.md, the articles sitemap and /feed.xml.

# components.headers.XMarkdownTokens.description
Estimated token count of the body, so a caller can budget context before reading it. An estimate, not a tokenizer count.

# components.headers.Vary.description
Always `Accept`, because the same URL can answer with HTML or with Markdown.

# components.headers.XRobotsTag.description
Always `noindex`. These documents duplicate indexed HTML pages and are meant for agents rather than search engines. Fetching them is expected.

# components.headers.CacheControl.description
`public, max-age=900` on generated documents.

# components.responses.MarkdownDocument.description
A Markdown document opening with a YAML front matter block of machine-readable figures.

# components.responses.MarkdownDocument.content.text/markdown.example
---
title: Valkyrie Helm
url: https://rbxinvest.com/item/1365767
type: item
---

# Valkyrie Helm

# components.responses.NegotiatedDocument.description
Markdown when `Accept: text/markdown` was sent, otherwise the HTML page.

# components.responses.MarkdownNotFound.description
No item, creator, player or article at that path. Plain text rather than Markdown, so an agent does not quote an error as if it were a document.

# components.responses.MarkdownNotFound.content.text/plain.example
404 Not Found - no item at this URL on rbxinvest.com.