MCP server for the Anthropic Admin API — manage your Claude org from any MCP-compatible client.
Strong foundation with 24 well-named tools, comprehensive descriptions (avg 180 chars), and complete input schemas with types and constraints. All tools follow verb_noun naming (get_, list_, create_, update_, remove_, archive_). Descriptions clearly state WHAT the tool does and WHEN to use it. Parameters include min/max bounds, enums for roles/statuses, and pagination support. However, output schemas are not explicitly documented in the source, responses are described narratively rather than as formal JSON Schema. Error handling is minimal; no recovery guidance or actionable error messages visible. Missing tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification (READ_ONLY, WRITE, DESTRUCTIVE). No confirmation/dry-run pattern visible in code for destructive ops, though 'confirm' parameter exists.
Grant a user access to a workspace. Org admins and org billing members get automatic workspace roles and don't need to be added explicitly. workspace_billing is inherited from org-level billing role and cannot be assigned here.
Archive a workspace. Archived workspaces are hidden from default listings but their data (usage history, costs) is preserved. API keys in the workspace become inactive. Per Anthropic docs this state is reversible through the Console.
Create a new workspace. Workspaces partition API keys, members, and limits. Max 100 active workspaces per organization. Creating a workspace does not add any members or keys to it automatically.
Cancel a pending invite. Once deleted, the invite link will no longer work. The invitee will not be notified. Re-inviting requires a new invite call.
Get metadata for a single API key by ID. Returns name, status, workspace_id, partial_key_hint (last 4 chars), created_by_user_id, and timestamps. The actual key value is never returned.
Output schemas not documented. Tool descriptions state what fields are returned (e.g., 'Returns id, email, name, role...') but no formal JSON Schema output definitions are visible in source. LLMs cannot reliably extract structured data or plan downstream tool chains without documented response schemas.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk stratification. Tools are marked READ_ONLY, WRITE, or DESTRUCTIVE in metadata but these hints are not exposed in the MCP tool definition, preventing clients from rendering appropriate UI warnings or enforcing safety policies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Get usage data specific to Claude Code workspaces. Returns daily aggregated user activity, tool usage statistics, and token consumption for Claude Code sessions. This is separate from the general usage report and only covers Claude Code workspace activity. Bedrock-routed Claude Code is not included.
Get dollar-amount cost data for the organization. Returns costs in **US dollars** (already converted from the API's native cents representation by the client wrapper) broken down by operation description (input tokens, output tokens, cache writes /reads, code execution, web search, etc.) and optionally by workspace. Use for questions like 'what did we spend last week' or 'which workspace cost the most this month'. Priority Tier costs are NOT included here — track those via usage.
Get a single invite by ID. Returns the invited email, role offered, status (pending / accepted / expired / deleted), and timestamps.
Get a single organization member by user ID. Returns email, name, role, and timestamps. Useful for resolving a user ID into a display name or checking a member's current role.
Get information about the current Anthropic organization. Returns the organization's ID, name, and type. Useful as a smoke test that the Admin API key is configured correctly.
Get detailed token usage from the Messages API. Returns input/output/cache token counts and request counts, bucketed by the requested time window and grouped by the requested dimensions. Use this for questions like 'how many Opus tokens did workspace X burn yesterday' or 'show daily request volume for the last week grouped by model'. Data appears within ~5 minutes of API calls.
Get a single workspace by ID. Returns name, display_color, created_at, archived_at (if archived), and type. Useful for resolving a workspace ID into its display name before referring to it in subsequent operations.
Invite a new member to the organization. Sends an invitation email. The invitation expires in 21 days and cannot be modified once created — only cancelled and re-issued. Cannot grant the 'admin' role; admins must be promoted via Console.
List API keys in the organization. Returns metadata only — the actual key values are never returned by the Admin API and cannot be retrieved after creation. Each entry includes id, name, status, workspace_id, partial_key_hint (last 4 chars), and created_by_user_id.
List pending and historical organization invites. Invites expire after 21 days. Each invite includes the invited email, the role offered, status (pending / accepted / expired / deleted), and timestamps.
List organization members. Returns up to ``limit`` members per call. For pagination, pass the last user_id from a previous response as ``after_id``. Member objects include id, email, name, role (user / developer / billing / admin / claude_code_user), and timestamps.
List members of a specific workspace. Each entry includes the user_id and their workspace_role (workspace_admin / workspace_developer / workspace_user / workspace_billing). Org admins automatically have workspace_admin on every workspace and may not appear here explicitly.
List workspaces in the organization. Workspaces partition API keys, members, and billing. Every org has a Default Workspace that doesn't appear in this list. Max 100 active workspaces per org; archived workspaces don't count against the limit.
Remove a member from the organization. The user loses access to all workspaces immediately. API keys created by them remain active (keys are org-scoped, not user-scoped). Cannot remove members with the 'admin' role — that must be done through the Console.
Remove a member from a workspace. The user retains their org-level role and access to other workspaces. Org admins cannot be removed from workspaces.
Update an API key's name or status. Status can be set to 'active' or 'inactive'. Inactive keys cannot be used for API calls but are not deleted. At least one of ``name`` or ``status`` must be provided.
Change an existing member's organization role. Cannot promote to or demote from 'admin' — those changes happen only in the Console. Changing roles takes effect immediately and may impact what API keys and workspaces the user can access.
Rename or recolor a workspace. Cosmetic only — does not affect billing, access, or API keys. At least one of ``name`` or ``display_color`` must be provided.
Change a member's role within a workspace. Effective immediately. Does not affect org-level roles.
Error handling lacks recovery guidance. No evidence of actionable error messages (e.g., 'User not found. Try list_members() to find the correct user_id.') or error classification (retryable vs user-fixable vs fatal). Raw API errors will not guide LLM recovery.
Pagination cursors (before_id, after_id) lack clear documentation on direction and semantics. LLMs may not understand whether 'after_id' means 'return items after this ID' or 'return items starting from this ID', risking incorrect pagination logic.
Confirm parameter defaults to false but is required for all write/destructive ops. If an LLM forgets to set confirm=true, the operation silently fails. No validation error or warning is documented to guide the LLM to correct the mistake.