EvoHub DocsEvoHub Docs Sign in

List resources

Use with AI
View as MarkdownThis page as plain text, for pasting into an AI tool Open in ClaudeAsk Claude questions about this page Open in ChatGPTAsk ChatGPT questions about this page
Connect to Cursor / VS Code / ClaudeSearch and read these docs from your AI tool (MCP server)

MCP server URL

https://docs.evohub.io/mcp

Claude Code

claude mcp add --transport http evohub-docs https://docs.evohub.io/mcp

Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector, and paste the URL above.

Claude Desktop — claude_desktop_config.json

{
  "mcpServers": {
    "evohub-docs": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://docs.evohub.io/mcp"
      ]
    }
  }
}

Cursor — ~/.cursor/mcp.json

{
  "mcpServers": {
    "evohub-docs": {
      "url": "https://docs.evohub.io/mcp"
    }
  }
}

VS Code — .vscode/mcp.json

{
  "servers": {
    "evohub-docs": {
      "type": "http",
      "url": "https://docs.evohub.io/mcp"
    }
  }
}
GET/api/v1/catalog/resources

A page of what the organization's sources observed. The first page (a request without cursor) carries pagination.total.

Requires the catalog:resource:read scope.

Authorization

Any one of:

Parameters

Query parameters

  • environment_id string
    Only this environment.
    Example: env_2c4e6a8b0d1f3a5c7e9b1d3f5a7c9e0b
  • provider string
    k8s, host, aws, azure, gcp or vmind, as the resource was reported.
  • kind string
    Example: Deployment
  • exclude_kind string
    Kinds to leave out, comma-separated.
    Example: Namespace,Node
  • namespace string
  • application_id string
  • status string
    live (seen by the last sweep), missing (not seen by the last complete sweep), gone (missing for a day) or stale (its agent stopped reporting).
    One of: live missing gone stale
  • component_id string
    Only resources bound to this service.
  • unowned string
    true for live resources bound to no service.
    Value: true
  • image string
    A whole image reference (nginx:1.25-alpine), or a repository (nginx) for any tag or digest of it.
  • floating string
    true for resources running an image with no fixed version: latest or no tag, and no digest.
    Value: true
  • q string
    Search names, at most 100 characters.
    Max length: 100
  • sort string
    name (the default), kind, status, first_seen_at or last_seen_at; a leading - reverses it. Any other value is refused.
    Example: -last_seen_at
  • limit integer
    Page size, 20 by default, at most 100.
    Minimum: 1 · Maximum: 100
  • cursor string
    The previous page's pagination.next_cursor.

Responses

200

A page of resources.

Content type: application/json

Type: object

  • data array of Resource
    Show Resource properties
    • id string
      Example: res_6b8d0f2a4c6e8a1c3e5b7d9f1a3c5e7b
    • environment_id string
    • source_id string
    • external_id string
      Example: k8s://5f0c2a7e-…/apps/v1/Deployment/payments/payments-api
    • provider string
      Example: k8s
    • kind string
      Example: Deployment
    • name string
      Example: payments-api
    • namespace string
      Example: payments
    • component_id string | null
    • component_bound_by string | null
      What bound it to its service, when something did.
    • status string
      One of: live missing gone stale
    • missing_since string (date-time) | null
    • first_seen_at string (date-time)
    • last_seen_at string (date-time)
    • images array of string
  • pagination Pagination
    Show Pagination properties
    • next_cursor string | null
    • has_more boolean
    • total integer
      How many match, on the first page of the resource and application lists.

400

The request is not valid: a field or filter value is wrong (VALIDATION_ERROR, with a sentence saying what), the body is not the expected JSON or carries an unknown field (INVALID_BODY), the cursor is not one this list gave (INVALID_CURSOR), a binding names a service that does not exist (UNKNOWN_COMPONENT), or a PATCH tries to change a slug (SLUG_IMMUTABLE).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: not found
    • request_id string

401

No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: not found
    • request_id string

403

The key lacks a scope this endpoint needs (FORBIDDEN).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: not found
    • request_id string

429

Too many requests (RATE_LIMITED). Wait for Retry-After seconds.

Headers

  • Retry-After integer
    Seconds to wait before retrying.

Content type: application/json

Type: Error

  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: not found
    • request_id string

500

Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.

Content type: application/json

Type: Error

  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: not found
    • request_id string

Example request

curl -X GET 'https://evohub.io/api/v1/catalog/resources' \
  -H 'Authorization: Bearer <TOKEN>'