get_product
Facts about a product's current release: framework, compatibility as recorded, and the names of its pages and components.
Ask for it in plain words#
Inputs#
| Name | Type | Required | What it does |
|---|---|---|---|
identifier | string | yes | The product's identifier, for example sotto. Search first if you do not know it. |
release | string | no | Optional pin: the version you saw in an earlier result. If a newer release exists, the tool answers release_replaced. |
include | array of strings | no | Which parts to return: pages, components, compatibility. All three by default. |
limit | integer | no | How many pages and components per list: 1 to 500, default 100. |
cursor | string | no | From the previous result's nextCursor of the list you are paging. |
Example#
The example ran over Orvio's synthetic test catalog (a product called Fixture Studio), so its names and values differ from the products you will see. The shape is exactly what the server returns.
Request
{ "identifier": "fixture-studio", "limit": 2 }
Result (shortened)
{ "product": { "identifier": "fixture-studio", "name": "Fixture Studio", "description": "Synthetic portfolio website for tests.", "type": "website", "url": "https://orvio.test/products/fixture-studio" }, "release": { "product": "fixture-studio", "version": "1.1.0", "releaseId": "f1000000-0000-4000-8000-000000000002", "publishedAt": "2026-10-05T00:00:00Z" }, "source": { "framework": { "id": "static-html", "provenance": "inferred" }, "language": { "id": "html", "provenance": "inferred" }, "packageManager": { "id": "none" }, "entryPoints": [ "index.html" ], "commands": { "install": null, "dev": null, "build": null, "preview": null, "test": null }, "externalDependencies": [] }, "licence": { "id": "LicenseRef-Orvio-Fixture-Synthetic", "path": "licenses/LICENSE.md", "thirdPartyNotices": null }, "compatibility": [ { "framework": "static-html", "status": "native-untested", "evidence": [], "notes": "No build or render evidence exists for this synthetic fixture." } ], "pages": { "items": [ { "identifier": "fixture-studio/page/index", "route": "/", "title": "Fixture Landing", "purpose": null, "entryPath": "index.html" } ], "total": 1, "nextCursor": null }, "components": { "items": [ { "identifier": "fixture-studio/component/features", "name": "features", "kind": "html-fragment", "description": null, "sourcePath": "index.html" }, { "identifier": "fixture-studio/component/hero", "name": "hero", "kind": "html-fragment", "description": null, "sourcePath": "index.html" } ], "total": 3, "nextCursor": "eyJ0Ijoi…" } }
Left out of the example: designSystem, instructions.
What comes back#
| Field | What it holds |
|---|---|
product | Identifier, name, description, type and the product's page on the website. |
release | The current release: version, release id and publication date. |
source | Framework, language, package manager, entry points, commands and external dependencies, as recorded for the release. |
pages | The product's pages with their identifiers, routes and titles. Paged. |
components | The product's components with their identifiers, names and source paths. Paged. |
warnings | Heads-ups that do not stop the call, such as a membership payment problem. Usually empty. |
Every result also carries what the request needs to be checked: the release (product, version, published date), the licence and notes, when they apply.
Paging#
When nextCursor is not null, call again with cursor set to it. A cursor belongs to your account, to that call's inputs and to that release, and it expires after 60 minutes. After a new release it answers release_replaced. See Limits and pagination.
Errors#
| Code | Means | What to do |
|---|---|---|
product_unavailable | No listed product has that identifier. | Search the catalog with search_products. |
release_withdrawn | The whole product was taken down for now. | Search the catalog for something similar with search_products. |
release_replaced | A newer release was published since the version you named or the cursor you used. | Call the tool again without a release to use 0.1.3. |
invalid_input | The arguments do not match the tool's schema, or the cursor is not valid. | Fix the input and call the tool again. |
HTTP 401, 403 or 429 | Before the tool runs: the sign-in is not valid, the membership does not allow access, or there were too many requests. | See Errors and fixes. |
Every tool can also answer service_unavailable and integrity_error: try again in a few minutes.