Hanzo
Cloud MCPchannels

put_v1_channels_allowlist

Edits the caller org's access policy for one channel and answers the policy as GET would, so both verbs return ONE shape. It requires ORG ADMIN.

Edits the caller org's access policy for one channel and answers the policy as GET would, so both verbs return ONE shape. It requires ORG ADMIN. Every field but channel is optional and applied only when provided: an empty policy string leaves that policy alone, an absent or null list leaves that list alone, and an EMPTY list clears it. It writes only CONFIG-sourced allow entries — senders approved through pairing belong to the approval flow, so a policy edit can never revoke one. An unknown channel is a 404.

Toolput_v1_channels_allowlist
Doorhttps://api.hanzo.ai/v1/mcp
Methodtools/call (JSON-RPC 2.0)
Arguments6
OperationPUT /v1/channels/allowlist
Productchannels

Arguments

FieldTypeRequiredDefaultValuesDescription
accessGroupsobjectAccessGroups REPLACES the org's named access groups, as group name -> channel -> entries. Absent or null leaves them alone.
channelstringChannel is the transport to edit: discord, slack, teams or telegram. Required; an unknown value is a 404.
dmstring[]DM REPLACES the config-managed DM allow entries. Absent or null leaves them alone; an empty list clears them. It never touches senders approved through pairing — a policy edit cannot revoke an approved pairing.
dmPolicystringDMPolicy sets how direct messages are admitted: "pairing" (a person must be approved first), "allowlist" (only listed senders) or "open". Empty leaves it unchanged.
groupstring[]Group REPLACES the config-managed group allow entries. Absent or null leaves them alone; an empty list clears them.
groupPolicystringGroupPolicy sets how group and thread rooms are admitted: "open", "allowlist" or "disabled". Empty leaves it unchanged.

tools/list declares a type and a description for each field and nothing further. A means neither the door nor that operation constrains the field.

Call it

A tools/call carries every argument in one flat object — nothing binds to a path or a query string. Nothing above is required, so every declared argument is shown rather than a guess at which matter.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "put_v1_channels_allowlist",
         "arguments": {
           "accessGroups": {},
           "channel": "<channel>",
           "dm": [
             "<dm>"
           ],
           "dmPolicy": "<dmPolicy>",
           "group": [
             "<group>"
           ],
           "groupPolicy": "<groupPolicy>"
         }
       }
     }'

Values are the operation's own defaults and enumerated values where it declares them, and a <placeholder> where neither source declares one. tools/list needs no credential; tools/call does — called without one the door answers HTTP 200 with a JSON-RPC result whose isError is set and whose text says what was missing. How to get a key →

The operation behind it

OperationRouteProductSummary
cloud_put_v1_channels_allowlistPUT /v1/channels/allowlistchannelsEdits the caller org's access policy for one channel and answers the policy as GET would,…

The same capability over plain HTTP is in the channels API reference, on https://api.hanzo.ai.


All 833 tools · The door · API reference

Generated from tools/list on https://api.hanzo.ai/v1/mcp — 833 tools captured 2026-08-01 (this build read the vendored copy; the door was unreachable).

How is this guide?

On this page