API
extensions.magento.watch API
The /api/v1 surface reads the Magento and Mage-OS extension catalogue. Every declared state comes from a package composer.json declaration; static checks and install results are reported only where a run exists. The machine-readable document is at /api/v1/openapi.json.
11 operations. Responses are JSON; 200 responses share the envelope with data, _documentation and _description.
GET
/api/v1/health
Service health
Reports that the service is answering.
No parameters.
Example
curl 'https://extensions.magento.watch/api/v1/health'
GET
/api/v1/extensions
List or search extension packages
Returns catalogue packages, best text match first, or by monthly downloads when q is absent. Only public packages are returned.
| Name | In | Required | Rules |
|---|---|---|---|
| q | query | no | string; at least 1 characters; at most 200 characters |
| tag | query | no | string; pattern ^[A-Za-z0-9][A-Za-z0-9-]{0,79}$; at most 80 characters |
| vendor | query | no | string; pattern ^[A-Za-z0-9](?:[_.-]?[A-Za-z0-9])*$; at most 100 characters |
| cursor | query | no | Opaque cursor from the previous page. Pass it back unchanged with the same filters. |
| limit | query | no | integer; minimum 1; maximum 100; default 25 |
Example
curl 'https://extensions.magento.watch/api/v1/extensions?q=tag%20manager&limit=10'
GET
/api/v1/extensions/{vendor}/{name}
Get one extension package
Returns the identity, description, tags and newest stable version of one package.
| Name | In | Required | Rules |
|---|---|---|---|
| vendor | path | yes | string; pattern ^[A-Za-z0-9](?:[_.-]?[A-Za-z0-9])*$; at most 100 characters |
| name | path | yes | string; pattern ^[A-Za-z0-9](?:(?:[_.]|-{1,2})?[A-Za-z0-9])*$; at most 214 characters |
Example
curl 'https://extensions.magento.watch/api/v1/extensions/mollie/magento2'
GET
/api/v1/extensions/{vendor}/{name}/versions
List the versions of one extension
Returns the published versions of one package, newest first, with the requirements each declares.
| Name | In | Required | Rules |
|---|---|---|---|
| vendor | path | yes | string; pattern ^[A-Za-z0-9](?:[_.-]?[A-Za-z0-9])*$; at most 100 characters |
| name | path | yes | string; pattern ^[A-Za-z0-9](?:(?:[_.]|-{1,2})?[A-Za-z0-9])*$; at most 214 characters |
| cursor | query | no | Opaque cursor from the previous page. Pass it back unchanged with the same filters. |
| limit | query | no | integer; minimum 1; maximum 100; default 25 |
Example
curl 'https://extensions.magento.watch/api/v1/extensions/mollie/magento2/versions'
GET
/api/v1/extensions/{vendor}/{name}/versions/{version}/compatibility
Declarations and results of one version
Returns, for every supported and pre-release target, the declared state and any static-check or install result recorded for the version. Install results do not cover checkout or storefront behaviour.
| Name | In | Required | Rules |
|---|---|---|---|
| vendor | path | yes | string; pattern ^[A-Za-z0-9](?:[_.-]?[A-Za-z0-9])*$; at most 100 characters |
| name | path | yes | string; pattern ^[A-Za-z0-9](?:(?:[_.]|-{1,2})?[A-Za-z0-9])*$; at most 214 characters |
| version | path | yes | string; pattern ^[A-Za-z0-9._+-]{1,64}$; at most 64 characters |
Example
curl 'https://extensions.magento.watch/api/v1/extensions/mollie/magento2/versions/3.2.0/compatibility'
GET
/api/v1/{distribution}/versions/{version}/extensions
Packages with a recommended version for a target
Returns packages whose recommended version declares support for one Magento or Mage-OS release, with an optional PHP minor and storefront. Install results do not cover checkout or storefront behaviour.
| Name | In | Required | Rules |
|---|---|---|---|
| distribution | path | yes | one of magento-community, mage-os; string |
| version | path | yes | string; pattern ^[A-Za-z0-9._+-]{1,64}$; at most 64 characters |
| php | query | no | string; pattern ^\d+\.\d+$ |
| frontend | query | no | one of luma, hyva; string |
| tag | query | no | string; pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$; at most 80 characters |
| cursor | query | no | Opaque cursor from the previous page. Pass it back unchanged with the same filters. |
| limit | query | no | integer; minimum 1; maximum 100; default 25 |
Example
curl 'https://extensions.magento.watch/api/v1/magento-community/versions/2.4.9/extensions?php=8.5&frontend=luma'
POST
/api/v1/{distribution}/versions/{version}/extensions/check
Assess a package set against one target
Assesses the requested packages against one target from their recorded declarations and results. Extension-only evidence: framework libraries are not assessed and the set was not resolved together. Nothing from the request is stored.
| Name | In | Required | Rules |
|---|---|---|---|
| distribution | path | yes | one of magento-community, mage-os; string |
| version | path | yes | string; pattern ^[A-Za-z0-9._+-]{1,64}$; at most 64 characters |
Example
curl 'https://extensions.magento.watch/api/v1/magento-community/versions/2.4.9/extensions/check' -H 'Content-Type: application/json' -d '{"input":{"kind":"map","packages":{"mollie/magento2":"3.1.2"}}}'
GET
/api/v1/meta/stats
Catalogue counts
Returns counts, the publication generation and the latest supported and pre-release versions.
No parameters.
Example
curl 'https://extensions.magento.watch/api/v1/meta/stats'
GET
/api/v1/meta/targets
Targets
Returns every target (release, PHP minor and frontend) with its identifier and lifecycle status, including historical releases, so target_id values in the change feed can be named.
No parameters.
Example
curl 'https://extensions.magento.watch/api/v1/meta/targets'
GET
/api/v1/meta/changes
Published catalogue changes
Returns published changes in sequence order, with an entity tag for conditional requests. The window is bounded; an expired since value returns 410 and asks for a resync.
| Name | In | Required | Rules |
|---|---|---|---|
| since | query | no | integer; minimum 0; default 0 |
| limit | query | no | integer; minimum 1; maximum 200; default 100 |
| entity | query | no | one of package, version, target, result, signal; string |
| package | query | no | array; at most 50 items |
| cursor | query | no | Opaque cursor from the previous page. Pass it back unchanged with the same filters. |
Example
curl 'https://extensions.magento.watch/api/v1/meta/changes?since=0&limit=100'
GET
/api/v1/openapi.json
This OpenAPI document
Returns this OpenAPI 3.1 document for the /api/v1 surface.
No parameters.
Example
curl 'https://extensions.magento.watch/api/v1/openapi.json'
MCP
The MCP server answers at POST https://extensions.magento.watch/mcp over stateless Streamable HTTP (some clients call the transport streamable-http). It negotiates one of the protocol versions 2024-11-05, 2025-03-26, 2025-06-18 and 2025-11-25. Call tools/list for the current tool names and input schemas; the list is not duplicated here.
Client configuration
{
"mcpServers": {
"extensions-magento-watch": {
"type": "http",
"url": "https://extensions.magento.watch/mcp"
}
}
}
Tools available now: 4
- find_extension
- get_extension
- check_extension_compatibility
- list_extension_changes