# projects_update

Update an existing project

Agent View of the PolicyLayer registry record for `projects_update`. HTML page: https://policylayer.com/tools/0xk3vin-vikunja-mcp/projects-update

## Facts

- Tool: `projects_update`
- Server: Vikunja (`0xk3vin/vikunja-mcp`) — https://policylayer.com/tools/0xk3vin-vikunja-mcp.md
- Homepage: https://github.com/0xK3vin/vikunja-mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "projects_update",
    "arguments": {}
  }
}
```

## Why projects_update is rated Medium

This tool creates or modifies data reversibly by updating project attributes. It does not delete data (which would be Destructive) nor execute arbitrary code (which would be Execute). The impact is confined to project metadata changes, making it a Write operation. Severity is medium because unauthorized project modifications could disrupt task management workflows and team coordination, but changes are reversible.

From the tool's own definition: "Tool name 'projects_update' and description 'Update an existing project' indicate modification of existing data without deletion."

## Use case

AI agents use projects_update to create or update resources in Vikunja, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Vikunja environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Vikunja:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "projects_update": {
      "limits": [
        {
          "counter": "projects_update_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Vikunja (30)

- `buckets_delete` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/buckets-delete.md
- `labels_delete` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/labels-delete.md
- `projects_delete` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/projects-delete.md
- `task_assignees_remove` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-assignees-remove.md
- `task_labels_remove` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-labels-remove.md
- `task_relations_remove` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-relations-remove.md
- `tasks_delete` — Destructive — https://policylayer.com/tools/0xk3vin-vikunja-mcp/tasks-delete.md
- `buckets_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/buckets-list.md
- `labels_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/labels-list.md
- `notifications_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/notifications-list.md
- `ping` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/ping.md
- `project_views_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/project-views-list.md
- `projects_get` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/projects-get.md
- `projects_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/projects-list.md
- `task_assignees_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-assignees-list.md
- `task_comments_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-comments-list.md
- `tasks_get` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/tasks-get.md
- `tasks_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/tasks-list.md
- `teams_list` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/teams-list.md
- `users_search` — Read — https://policylayer.com/tools/0xk3vin-vikunja-mcp/users-search.md
- `buckets_create` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/buckets-create.md
- `labels_create` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/labels-create.md
- `projects_create` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/projects-create.md
- `task_assignees_add` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-assignees-add.md
- `task_comments_add` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-comments-add.md
- `task_labels_add` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-labels-add.md
- `task_move_to_bucket` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-move-to-bucket.md
- `task_relations_add` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/task-relations-add.md
- `tasks_create` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/tasks-create.md
- `tasks_update` — Write — https://policylayer.com/tools/0xk3vin-vikunja-mcp/tasks-update.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=0xk3vin-vikunja-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/0xk3vin-vikunja-mcp
