getToolsCatalogWithHttpInfo method

Future<Response> getToolsCatalogWithHttpInfo({
  1. String? q,
  2. String? featured,
  3. String? official,
  4. int? limit,
  5. int? offset,
})

Lists the MCP servers the public registries publish, as we hold them: our canonical copy of registry.modelcontextprotocol.io, plus what we decided about each entry.

Lists the MCP servers the public registries publish, as we hold them: our canonical copy of registry.modelcontextprotocol.io, plus what we decided about each entry. This is the SHELF an org picks from. A listing with a streamable-http endpoint can be enabled as-is — POST /v1/tools/mcp/servers with its id — and its tools then join the org's tool plane and the fleet's MCP server. A listing that only ships a stdio package needs a process to run it, which is why the transports are on every entry rather than implied. Hidden entries are absent: they are the ones we took off the shelf. A platform SuperAdmin sees them, because the same query answers "what is on the shelf" and "what is in the catalog" and two queries would drift apart. It is PAGED — 50 by default, 200 at most. The public registry publishes tens of thousands of servers, so an unbounded answer is a twenty-megabyte response and a storefront that renders in a minute. total is the whole match, not the page.

Note: This method returns the HTTP Response.

Parameters:

  • String q: Q matches the name, title or description, case-insensitively.

  • String featured: Featured keeps only the listings we put on the front of the shelf, and only when it is exactly the string "true".

  • String official: Official keeps only the vendors' OWN servers — not third-party copies of them — and only when it is exactly the string "true".

  • int limit: Limit bounds the page: default 50, maximum 200. A value that is not a positive integer reads as the default.

  • int offset: Offset skips that many listings.

Implementation

Future<Response> getToolsCatalogWithHttpInfo({ String? q, String? featured, String? official, int? limit, int? offset, }) async {
  // ignore: prefer_const_declarations
  final path = r'/v1/tools/catalog';

  // ignore: prefer_final_locals
  Object? postBody;

  final queryParams = <QueryParam>[];
  final headerParams = <String, String>{};
  final formParams = <String, String>{};

  if (q != null) {
    queryParams.addAll(_queryParams('', 'q', q));
  }
  if (featured != null) {
    queryParams.addAll(_queryParams('', 'featured', featured));
  }
  if (official != null) {
    queryParams.addAll(_queryParams('', 'official', official));
  }
  if (limit != null) {
    queryParams.addAll(_queryParams('', 'limit', limit));
  }
  if (offset != null) {
    queryParams.addAll(_queryParams('', 'offset', offset));
  }

  const contentTypes = <String>[];


  return apiClient.invokeAPI(
    path,
    'GET',
    queryParams,
    postBody,
    headerParams,
    formParams,
    contentTypes.isEmpty ? null : contentTypes.first,
  );
}