Skip to main content
Glama

Set workspace profile

set_workspace_profile
Idempotent

Record who this workspace is: company or organization name, industry, who the page is mainly shared with, and one sentence on what it is used for. The web form for this was retired; this is the only way to write it. company_name is the sole source of the company name on WeChat share cards — without it recipients see a generated workspace name. Fields passed are merged into the existing profile and omitted fields are left unchanged, so changing only the company name needs only company_name. A first-time profile must supply the required fields: with usage=work, company name and industry are required; customer_type and use_case are required in both modes. Validation matches the retired web form exactly: placeholder names such as “personal”, “test” or “my company” are rejected (pass usage="personal" for personal use, which does not ask for company or industry), phone numbers and messaging handles are not allowed in the name, and industry must be one of the listed values. The profile is used for compliance and support and is not shown to viewers, except that the company name appears on share cards. embed_origins (owner only) is the embed allowlist: the parent origins (https://domain) that may frame this workspace’s pages through an embed link (preview_version with embed_origin); it replaces the whole list, [] clears it, and empty (the default) means only the platform first-party origins (Tokenman web chat: https://claudefleet.24haowan.com, https://ccquota.24haowan.com) may embed — those are always allowed, need no setup and do not count towards the 5. It opens embed links only — page links are unaffected. Passing only embed_origins leaves the profile untouched. Read-only members cannot call it. icon_base64 sets the workspace icon (base64 PNG or JPEG, up to 2 MB, square works best; only use a logo or avatar the user provides): it becomes the avatar on the workspace home page and folder pages and the browser tab icon for every page on https://.hy.24haowan.com; an empty string removes it. Passing only it leaves the profile untouched. The company name is also what readers see as the workspace name on the home page and folder pages.

Input Schema

NameRequiredDescriptionDefault
usageNoUsage: work (default) means work use, where company name and industry are required; personal allows both to be empty.
industryNoIndustry (required when usage=work); must be one of the listed values.
use_caseNoOne sentence on what you will send and to whom, for example “send the weekly report to my team”.
icon_base64NoBase64 of the workspace icon (a data:image/png;base64, prefix is fine), PNG or JPEG, up to 2 MB; an empty string removes the icon
company_nameNoCompany or organization name (required when usage=work). It appears on WeChat share cards.
customer_typeNoWho your pages are mainly shared with: b2b = colleagues, clients or partners; b2c = friends, family and other individuals.
embed_originsNoOwner only: the embed allowlist, an array of https://domain origins (such as https://example.com); replaces the whole list, [] clears it. It adds to the platform first-party origins (claudefleet / ccquota.24haowan.com), which are allowed by default.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / icon_base64
      Added value: +{
      +  "description": "Base64 of the workspace icon (a data:image/png;base64, prefix is fine), PNG or JPEG, up to 2 MB; an empty string removes the icon",
      +  "maxLength": 11184812,
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / embed_origins / description
      Previous value: -"Owner only: the embed allowlist, an array of https://domain origins (such as https://ccquota.24haowan.com); replaces the whole list, [] clears it."New value: +"Owner only: the embed allowlist, an array of https://domain origins (such as https://example.com); replaces the whole list, [] clears it. It adds to the platform first-party origins (claudefleet / ccquota.24haowan.com), which are allowed by default."
  3. Changed1 schema field changed
    • addedInput schema / properties / embed_origins
      Added value: +{
      +  "description": "Owner only: the embed allowlist, an array of https://domain origins (such as https://ccquota.24haowan.com); replaces the whole list, [] clears it.",
      +  "items": {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  "maxItems": 5,
      +  "type": "array"
      +}
  4. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behaviour the annotations cannot express: merge-not-replace semantics with omitted fields untouched, per-mode required fields, validation parity with the retired form (placeholder names, phone numbers and handles rejected, industry must match the enum), and permission scoping (embed_origins is owner-only). It also explains the surprising allowlist behaviour — [] clears, empty means first-party origins only, those are always allowed and do not count toward the 5 — plus icon size/format and that it affects the avatar and browser tab icon. Nothing here contradicts readOnlyHint=false, idempotentHint=true, destructiveHint=false; the clearing operations are field-scoped and idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and nearly every sentence carries operational detail that an agent would otherwise have to guess. It is still a dense single block with some redundancy: 'Passing only embed_origins leaves the profile untouched' is restated as 'Passing only it leaves the profile untouched' for the icon, and the company-name/shown-to-readers point is made twice (WeChat share cards, then home page and folder pages). Those could be consolidated without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry the full burden, and it does: prerequisites, required-field combinations, permissions, validation rules, side effects on share cards and the workspace icon, and what each optional block does in isolation. An agent could call this correctly on a first-time setup and on a single-field update from this text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description earns more: it defines merge semantics across parameters, the usage-dependent requirement matrix, the concrete rejection rules for company_name, the replace-vs-clear semantics of embed_origins and its relationship to the always-allowed first-party origins, and the icon's format/size/removal contract. This is meaning the schema's per-field strings do not convey, especially the interaction between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb ('Record') and resource (the workspace profile) and enumerates exactly which attributes it owns: company name, industry, audience, use case, embed allowlist, icon. That is far beyond a restatement of the name. It stops short of a 5 because it never routes the agent away from near-neighbours like set_share_card or set_nickname, which also touch identity-adjacent surface (the company name is even said to appear on share cards).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage conditions: partial-update semantics ('changing only the company name needs only company_name'), first-time required-field combinations per usage mode, and a caller restriction (read-only members cannot call it). It also explains the retired web form so the agent knows there is no alternative path. It lacks an explicit 'use X instead when…' routing statement, which keeps it at 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources