model_access_update
ManagementcatalogUpdate Model Access Control
Not in the default tool list
This tool lives in the tool catalog. Discover it with scenario_tools_search (or enumerate everything with scenario_tools_list) and run it via scenario_tool_execute_write. To list every tool directly, connect with ?toolsets=full.
Add or remove models on a team's model allowlist/blocklist, at team level or across project-level lists (bulk). Which list is edited follows the team's models-management mode: blocklist mode edits blocklists, allowlist mode edits allowlists. Switching the mode itself is not supported here; change it in the team settings of the web app.
Args:
- team_id: required
- level: required, 'team' (team-wide list; requires a team admin) or 'project' (per-project lists; team admin, or project admin of every listed project)
- projects: required when level='project', 1-200 project IDs to update
- add_models / remove_models: exactly one, model IDs to add to or remove from the list
- project_id: required for OAuth callers as tenant context only — any project of the team, ignored by level='team'. The projects to edit go in projects.
- response_format: optional, 'json' (default) or 'markdown'
Returns: level='team': { updated, models_management, team: {models, count} } (updated=false when the diff is a no-op). level='project': { updated, models_management, projects: [{project_id, models, count}] }.
Notes:
- level='team' works for OAuth (human) sessions only: the API refuses API keys on the team endpoint ("API Keys cannot access protected resources"). API-key callers can use level='project', which requires the admin role on EVERY listed project (a single-project key can only edit its own project's list); one unauthorized project fails the whole request, nothing is updated.
- In allowlist mode a project admin can only add models already in the team allowlist (a project list narrows the team catalog, never widens it).
- Removing a base model from a team allowlist cascade-removes trained models built on it.
- Team-level adds validate that the models exist; unknown IDs fail the whole call.
Examples:
- "Block model_xyz for the whole team" (blocklist mode) -> level="team", add_models=["model_xyz"]
- "Make model_xyz available in these two projects" (allowlist mode) -> level="project", projects=["project_a", "project_b"], add_models=["model_xyz"]
Don't use when: hiding or deleting one of your own custom models, use model_update / model_delete (catalog-only, run via scenario_tool_execute_write/delete).
open-world
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| team_id | string | — | Team ID. Required if user belongs to multiple teams. |
| level | enum(team | project) | ✓ | 'team' edits the team-wide list (requires a team admin). 'project' edits per-project lists (team admin, or project admin of every listed project). |
| projects | array | — | Project IDs to update (1-200). Required when level='project'. |
| add_models | array | — | Model IDs to add to the list. Provide exactly one of add_models or remove_models. |
| remove_models | array | — | Model IDs to remove from the list. |
| project_id | string | — | Tenant context for OAuth sessions only. The projects to change go in `projects`. |
| response_format | enum(json | markdown) | json | Output format: 'json' for structured data, 'markdown' for human-readable text. |