{
  "service": "hoop",
  "displayName": "Hoop",
  "categories": [
    "Security",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Hoop API Key",
      "placeholder": "hpk_...",
      "description": "Hoop managed API key used as a Bearer token."
    }
  ],
  "homepageUrl": "https://hoop.dev",
  "actions": [
    {
      "id": "hoop.get_current_user",
      "service": "hoop",
      "name": "get_current_user",
      "description": "Get the Hoop profile for the connected API key.",
      "requiredScopes": [
        "userinfo:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input for reading the current Hoop API user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "subject": {
                "type": "string",
                "description": "The Hoop user subject identifier."
              },
              "email": {
                "type": "string",
                "description": "The Hoop user email address."
              },
              "name": {
                "type": "string",
                "description": "The Hoop user display name."
              },
              "groups": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One Hoop group name."
                },
                "description": "The Hoop groups assigned to the caller."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw Hoop object."
              }
            },
            "additionalProperties": false,
            "required": [
              "raw"
            ],
            "description": "The current Hoop API caller profile."
          }
        },
        "additionalProperties": false,
        "required": [
          "user"
        ],
        "description": "The current Hoop API caller profile."
      }
    },
    {
      "id": "hoop.list_connections",
      "service": "hoop",
      "name": "list_connections",
      "description": "List Hoop connections with optional filters and pagination.",
      "requiredScopes": [
        "connections:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Hoop agent ID."
          },
          "tags": {
            "type": "string",
            "minLength": 1,
            "description": "Deprecated comma-separated Hoop tags filter."
          },
          "tagSelector": {
            "type": "string",
            "minLength": 1,
            "description": "Selector tags to filter on, such as key=value,key2!=value2."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search by connection name, type, subtype, resource name, or status."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Hoop connection type."
          },
          "subtype": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Hoop connection subtype."
          },
          "managedBy": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by manager identifier."
          },
          "resourceName": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by upstream resource name."
          },
          "attribute": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by comma-separated Hoop attributes."
          },
          "connectionIds": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by comma-separated Hoop connection IDs."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of connections to return, from 1 to 100."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "One-based Hoop page number."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Hoop connections."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "connections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "The Hoop connection name."
                },
                "type": {
                  "type": "string",
                  "description": "The Hoop connection type."
                },
                "subtype": {
                  "type": "string",
                  "description": "The Hoop connection subtype."
                },
                "status": {
                  "type": "string",
                  "description": "The current connection status."
                },
                "agentId": {
                  "type": "string",
                  "description": "The agent ID associated with the connection."
                },
                "resourceName": {
                  "type": "string",
                  "description": "The upstream resource name associated with the connection."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Hoop object."
                }
              },
              "additionalProperties": false,
              "required": [
                "raw"
              ],
              "description": "One Hoop connection summary."
            },
            "description": "The Hoop connection summaries."
          },
          "raw": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Hoop object."
                },
                "description": "A raw Hoop connection array."
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Hoop connection response wrapper."
              }
            ],
            "description": "The raw Hoop connections response."
          }
        },
        "additionalProperties": false,
        "required": [
          "connections",
          "raw"
        ],
        "description": "The Hoop connections returned by the API."
      }
    },
    {
      "id": "hoop.list_sessions",
      "service": "hoop",
      "name": "list_sessions",
      "description": "List Hoop sessions with optional filters and pagination.",
      "requiredScopes": [
        "sessions:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Hoop user subject ID."
          },
          "connectionName": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Hoop connection name."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Hoop connection type."
          },
          "reviewApprover": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by the review approver email."
          },
          "reviewStatus": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by review status."
          },
          "correlationId": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by external workflow or task correlation ID."
          },
          "jiraIssueKey": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Jira issue key."
          },
          "startDate": {
            "type": "string",
            "description": "Filter sessions starting on or after this RFC3339 timestamp.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "Filter sessions ending on or before this RFC3339 timestamp.",
            "format": "date-time"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of sessions to return, up to 100."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset used to paginate Hoop sessions."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Hoop sessions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Hoop session identifier."
                },
                "connectionName": {
                  "type": "string",
                  "description": "The connection name associated with the session."
                },
                "status": {
                  "type": "string",
                  "description": "The current session status."
                },
                "user": {
                  "type": "string",
                  "description": "The Hoop user subject or email associated with the session."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Hoop object."
                }
              },
              "additionalProperties": false,
              "required": [
                "raw"
              ],
              "description": "One Hoop session summary."
            },
            "description": "The Hoop session summaries."
          },
          "raw": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Hoop object."
                },
                "description": "A raw Hoop session array."
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Hoop session response wrapper."
              }
            ],
            "description": "The raw Hoop sessions response."
          }
        },
        "additionalProperties": false,
        "required": [
          "sessions",
          "raw"
        ],
        "description": "The Hoop sessions returned by the API."
      }
    }
  ]
}
