{
  "opencollection": "1.0.0",
  "info": {
    "name": "Public Agents API",
    "version": "1.0.0"
  },
  "items": [
    {
      "info": {
        "name": "Agents",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List agents",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.gumloop.com/api/v1/agents",
            "params": [
              {
                "name": "team_id",
                "value": "",
                "type": "query",
                "description": "Scope the listing to a single team. When omitted, returns agents owned by the authenticated user."
              },
              {
                "name": "search",
                "value": "",
                "type": "query",
                "description": "Case-insensitive substring match against the agent name."
              },
              {
                "name": "creator",
                "value": "",
                "type": "query",
                "description": "Filter to agents created by this user ID."
              },
              {
                "name": "has_triggers",
                "value": "",
                "type": "query",
                "description": "When `true`, only returns agents that have at least one active trigger configured."
              },
              {
                "name": "tool",
                "value": "",
                "type": "query",
                "description": "Filter to agents that use the specified MCP server as a tool."
              },
              {
                "name": "flow",
                "value": "",
                "type": "query",
                "description": "Filter to agents that use the specified saved flow as a tool."
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "List agents the caller has access to. Filter by team, search by name, or narrow to agents that use a specific tool or trigger."
        },
        {
          "info": {
            "name": "Create agent",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.gumloop.com/api/v1/agents",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Create a new agent. The authenticated caller must have permission to create agents on the target team."
        },
        {
          "info": {
            "name": "Retrieve agent",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.gumloop.com/api/v1/agents/:agent_id",
            "params": [
              {
                "name": "agent_id",
                "value": "",
                "type": "path",
                "description": "ID of the agent to retrieve."
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Retrieve a single agent by ID."
        },
        {
          "info": {
            "name": "Update agent",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "https://api.gumloop.com/api/v1/agents/:agent_id",
            "params": [
              {
                "name": "agent_id",
                "value": "",
                "type": "path",
                "description": "ID of the agent to update."
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Update an existing agent. Only fields included in the request body are changed; omitted fields are left untouched.\n\nThis endpoint edits document fields only. To attach or detach skills, use [`PATCH /agents/{agent_id}/skills`](/api-reference/agents/update-agent-skills); to manage MCP servers, use the [agent MCP server endpoints](/api-reference/agents/attach-agent-mcp-server).\n"
        },
        {
          "info": {
            "name": "Attach or detach agent skills",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "https://api.gumloop.com/api/v1/agents/:agent_id/skills",
            "params": [
              {
                "name": "agent_id",
                "value": "",
                "type": "path",
                "description": "ID of the agent whose skills to update."
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Attach and/or detach skills on an agent using deltas. This is **not** a replace-list: skills you don't mention are left untouched.\n\n- The operation is idempotent. Re-attaching a skill that's already attached (or detaching one that isn't) is reported under `already_attached` / `already_detached` rather than failing.\n- A skill ID may not appear in both `attach` and `detach`.\n- Up to 100 unique skill IDs total (`attach` + `detach`) per request.\n- Attaching requires `INVOKE` permission on the skill."
        },
        {
          "info": {
            "name": "List agent MCP servers",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.gumloop.com/api/v1/agents/:agent_id/mcp-servers",
            "params": [
              {
                "name": "agent_id",
                "value": "",
                "type": "path",
                "description": "ID of the agent."
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "List the MCP servers (connectors) attached to an agent. Sensitive fields such as `secret_id` and `mcp_server_url` are scrubbed from the response.\n"
        },
        {
          "info": {
            "name": "Attach or update an agent MCP server",
            "type": "http"
          },
          "http": {
            "method": "PUT",
            "url": "https://api.gumloop.com/api/v1/agents/:agent_id/mcp-servers/:server_id",
            "params": [
              {
                "name": "agent_id",
                "value": "",
                "type": "path",
                "description": "ID of the agent."
              },
              {
                "name": "server_id",
                "value": "",
                "type": "path",
                "description": "ID of the MCP server from the caller's catalog."
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Attach an MCP server (connector) to an agent, or update its configuration if it's already attached (upsert).\n\nThe `server_id` is validated against the caller's MCP catalog. Catalog identity fields (`type`, `server_id`, `secret_id`, `mcp_server_url`) always come from the catalog and cannot be spoofed via the request body — the body carries only free-form connector configuration (e.g. approval mode, tool restrictions); any identity keys in it are ignored.\n\nAttach may succeed before OAuth is comple"
        },
        {
          "info": {
            "name": "Detach an agent MCP server",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.gumloop.com/api/v1/agents/:agent_id/mcp-servers/:server_id",
            "params": [
              {
                "name": "agent_id",
                "value": "",
                "type": "path",
                "description": "ID of the agent."
              },
              {
                "name": "server_id",
                "value": "",
                "type": "path",
                "description": "ID of the MCP server to detach."
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Detach an MCP server (connector) from an agent. This is idempotent — detaching a server that isn't attached returns `detached: false` rather than an error.\n"
        }
      ]
    }
  ],
  "bundled": true
}