listTeams
Retrieve and filter teams using query parameters such as name, slug, external IDs, and creation dates, with pagination support for efficient team management.
Instructions
List teams
Query Parameters:
include: No description.
page_number: No description.
page_size: No description.
filter_search: No description.
filter_slug: No description.
filter_name: No description.
filter_backstage_id: No description.
filter_cortex_id: No description.
filter_opslevel_id: No description.
filter_external_id: No description.
filter_color: No description.
filter_created_at_gt: No description.
filter_created_at_gte: No description.
filter_created_at_lt: No description.
filter_created_at_lte: No description.
sort: No description.
Responses:
200 (Success): success
Content-Type:
application/vnd.api+jsonExample:
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filter_backstage_id | No | ||
| filter_color | No | ||
| filter_cortex_id | No | ||
| filter_created_at_gt | No | ||
| filter_created_at_gte | No | ||
| filter_created_at_lt | No | ||
| filter_created_at_lte | No | ||
| filter_external_id | No | ||
| filter_name | No | ||
| filter_opslevel_id | No | ||
| filter_search | No | ||
| filter_slug | No | ||
| include | No | ||
| page_number | No | ||
| page_size | No | ||
| sort | No |
Implementation Reference
- src/rootly_mcp_server/server.py:337-344 (registration)Registers the OpenAPI specification as MCP tools via FastMCP.from_openapi. The 'listTeams' tool is generated from the GET /teams (or /v1/teams) endpoint defined in the Rootly API OpenAPI spec.# By default, all routes become tools which is what we want mcp = FastMCP.from_openapi( openapi_spec=filtered_spec, client=http_client.client, name=name, timeout=30.0, tags={"rootly", "incident-management"}, )
- src/rootly_mcp_server/server.py:121-172 (registration)DEFAULT_ALLOWED_PATHS list includes '/teams' which is filtered into the OpenAPI spec used for tool generation, enabling the listTeams tool.DEFAULT_ALLOWED_PATHS = [ "/incidents/{incident_id}/alerts", "/alerts", "/alerts/{alert_id}", "/severities", "/severities/{severity_id}", "/teams", "/teams/{team_id}", "/services", "/services/{service_id}", "/functionalities", "/functionalities/{functionality_id}", # Incident types "/incident_types", "/incident_types/{incident_type_id}", # Action items (all, by id, by incident) "/incident_action_items", "/incident_action_items/{incident_action_item_id}", "/incidents/{incident_id}/action_items", # Workflows "/workflows", "/workflows/{workflow_id}", # Workflow runs "/workflow_runs", "/workflow_runs/{workflow_run_id}", # Environments "/environments", "/environments/{environment_id}", # Users "/users", "/users/{user_id}", "/users/me", # Status pages "/status_pages", "/status_pages/{status_page_id}", # On-call schedules and shifts "/schedules", "/schedules/{schedule_id}", "/schedules/{schedule_id}/shifts", "/shifts", "/schedule_rotations/{schedule_rotation_id}", "/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users", "/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days", # On-call overrides "/schedules/{schedule_id}/override_shifts", "/override_shifts/{override_shift_id}", # On-call shadows and roles "/schedules/{schedule_id}/on_call_shadows", "/on_call_shadows/{on_call_shadow_id}", "/on_call_roles", "/on_call_roles/{on_call_role_id}", ]
- src/rootly_mcp_server/server.py:227-234 (handler)AuthenticatedHTTPXClient.request() is the generic handler executed by generated OpenAPI tools like listTeams to make authenticated HTTP requests to the Rootly API (GET /v1/teams).async def request(self, method: str, url: str, **kwargs): """Override request to transform parameters.""" # Transform query parameters if 'params' in kwargs: kwargs['params'] = self._transform_params(kwargs['params']) # Call the underlying client's request method and let it handle everything return await self.client.request(method, url, **kwargs)
- Prepends /v1 prefix to paths like /teams before filtering the OpenAPI spec, ensuring the listTeams endpoint is correctly included.allowed_paths_v1 = [ f"/v1{path}" if not path.startswith("/v1") else path for path in allowed_paths ]