Version
DESTRUCTIVE

update_resource

Retitle, describe or switch a project resource. Partial by design — anything omitted keeps its stored value; the kind and the place are fixed.

Change what the dashboard's resource editor lets a creator change: the title, the description and the active switch. Only the arguments present are written; anything omitted is filled from the stored row, so a title-only change never touches the description and is never logged as a description edit.

Emits project.resource.updated with the fields that actually moved. A call whose arguments change nothing returns the current row and emits nothing.

`kind`, `connector` and `space` are silently ignored

The resource kind is its identity and the connector place (space) is its binding; neither can be set here. Sending them is not an error — they are simply not read. A place is linked through the connector with request_resource_link, and cleared with unlink_resource.

`active` here, or the dedicated switches

active is accepted alongside the other fields. When the switch is the only thing changing, activate_resource and deactivate_resource do the same thing with a one-argument call.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Delivered to every endpoint subscribed to it once the change is made.

Annotations

DestructiveIdempotentOpen world

A client that honours annotations asks a person before running it. Sending the same arguments twice changes nothing the second time. It reaches beyond Subscriby: a connector, a provider or a member.

Arguments

resource_id*string

UUID of the resource to change.

titlestringoptional

New title, 5 to 255 characters.

descriptionstringoptional

New description, up to 1000 characters of well-formed HTML. Pass null or an empty string to clear it.

activebooleanoptional

true offers the resource on the plans that link it, false switches it off without touching those plans.

What it returns

{  "data": {    "id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "kind": "telegram:channel",    "connector": "telegram",    "space": {      "id": "3c1f7a58-2b6e-4d90-8f41-6a2e9c5d7b10",      "external_id": "-1001234567890",      "title": "Members lounge"    },    "title": "Members lounge (VIP)",    "description": "Where the regulars hang out.",    "active": true,    "created_at": "2026-05-18T10:05:00+00:00",    "updated_at": "2026-09-06T08:30:12+00:00"  }}

The full get_resource row. description comes back purified, so the HTML you read may be tidier than the HTML you sent. space is null on a manual perk and on a resource not yet linked to a place on its connector.

How it fails

VALIDATION_FAILED

title outside 5–255 characters (error.context.title); description

RESOURCE_NOT_FOUND

unknown resource_id, a resource on another team's project, or one outside

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks project-resource:update.

How is this guide?

Last updated on