SRG+
PYPI · SRGPLUS-MCP · 2 COMPONENTS · SCANNED SEP 21
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 0 of 30 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 138 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability67
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 8085 tokens (~83/item across 97 items; 97 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (66% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 16 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 97 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the SRG+ MCP server?
SRG+ runs locally as a PyPI package, launched with uvx srgplus-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · srgplus-mcp
claude mcp add srgplus-srgplus-mcp -- uvx srgplus-mcp
{
"mcpServers": {
"srgplus-srgplus-mcp": {
"command": "uvx",
"args": [
"srgplus-mcp"
]
}
}
} {
"servers": {
"srgplus-srgplus-mcp": {
"command": "uvx",
"args": [
"srgplus-mcp"
]
}
}
} codex mcp add srgplus-srgplus-mcp -- uvx srgplus-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"srgplus-srgplus-mcp": {
"type": "local",
"command": [
"uvx",
"srgplus-mcp"
],
"enabled": true
}
}
} openclaw mcp add srgplus-srgplus-mcp --command uvx --arg srgplus-mcp
mcp_servers:
srgplus-srgplus-mcp:
command: "uvx"
args: ["srgplus-mcp"] {
"McpServers": {
"srgplus-srgplus-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"srgplus-mcp"
]
}
}
} assistant mcp add srgplus-srgplus-mcp -t stdio -c uvx -a srgplus-mcp
{
"mcpServers": {
"srgplus-srgplus-mcp": {
"command": "uvx",
"args": [
"srgplus-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 0
- Stability: 0.97 → pass security
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed pypi/srgplus-mcp@0.4.7
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 30 packages
| Packages resolved | 30 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_permission_targets ~125
Get all targets of a given type accessible to the current user. workspace_id: target workspace ID — get available IDs from list_workspaces() target_type: "HubProfile", "Workspace", "Channel", etc. child_target_type: filter to targets that have a child of this type parent_target_id: filter to targets belonging to this parent Returns each target with its permission flags (can_edit, can_archive, etc.)
| Name | Type | Req | Description |
|---|---|---|---|
| child_target_type | – | – | – |
| parent_target_id | – | – | – |
| target_type | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
get_progression_stats ~69
Get completion statistics for the current user. workspace_id: target workspace ID — get available IDs from list_workspaces() Pass collection_id to scope to a specific collection. Returns total content count and how many the user has completed.
| Name | Type | Req | Description |
|---|---|---|---|
| collection_id | – | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
get_subcontent ~207
List the subcontent items nested inside a collection, page by page. Returns the content items linked as subcontent inside the given collection's category. Each item includes its id, name, cover, privacy, progression, and the section it belongs to. workspace_id: target workspace ID — get available IDs from list_workspaces() content_id: ID of the collection (the parent content item) category_name: "Content" (nested content items) or "Asset" (nested assets) page_size: items per page (default 50) cursor: opaque cursor from a previous response; omit for first page order: "Asc" (default) or "Desc" Returns {"items": [...], "cursor": "..." | null}
| Name | Type | Req | Description |
|---|---|---|---|
| category_name | string | yes | – |
| content_id | string | yes | – |
| cursor | – | – | – |
| order | string | – | – |
| page_size | integer | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
get_user ~47
Get a user's full profile by ID. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| user_id | string | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
get_workspace ~47
Get full details of a workspace (name, seats, subscription, hub profiles). workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
get_workspace_action ~51
Get full details of a workspace automation action by ID. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
get_workspace_hub_profiles ~45
List all hub profiles in a workspace (minimal representation). workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
get_workspace_invitation_link ~90
Generate a shareable invitation link for a workspace for a single email. workspace_id: target workspace ID — get available IDs from list_workspaces() role_id: 1 = Admin, 2 = Editor, 3 = Viewer Returns the invitation ID and access link URL.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | – | |
| role_id | integer | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
get_workspace_users ~42
List all users in a workspace with their roles. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
give_permission ~113
Grant a user a role on a target (hub profile, workspace, channel, etc.). workspace_id: target workspace ID — get available IDs from list_workspaces() target_type: "HubProfile", "Workspace", or "Channel" role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Type | Req | Description |
|---|---|---|---|
| role_id | integer | yes | – |
| target_id | string | yes | – |
| target_type | string | yes | – |
| user_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
invite_to_hub_profile ~85
Send email invitations to join a hub profile. workspace_id: target workspace ID — get available IDs from list_workspaces() role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Type | Req | Description |
|---|---|---|---|
| emails | array | yes | – |
| hub_profile_id | string | yes | – |
| role_id | integer | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
invite_to_workspace ~73
Send email invitations to join a workspace. workspace_id: target workspace ID — get available IDs from list_workspaces() role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Type | Req | Description |
|---|---|---|---|
| emails | array | yes | – |
| role_id | integer | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
is_member ~62
Check whether the current user is a member of a target (any role). workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| target_id | string | yes | – |
| target_type | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | boolean | yes | – |
No examples provided.
join_hub_profile ~54
Join a public hub profile as the current API key user. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
list_assets ~130
List assets in a hub profile with cursor-based pagination. workspace_id: target workspace ID — get available IDs from list_workspaces() types: e.g. ["Media", "File", "Image", "Embed", "Video"] or None for all Returns {"items": [...], "cursor": "..." | null}
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | – | – | – |
| exclude_assets | – | – | – |
| exclude_collections | – | – | – |
| hub_profile_id | string | yes | – |
| only_archived | boolean | – | – |
| page_size | integer | – | – |
| types | – | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
list_channels ~57
List all channels for a hub profile. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| include_archived | boolean | – | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_contents ~127
List content items in a hub profile with cursor-based pagination. workspace_id: target workspace ID — get available IDs from list_workspaces() types: ["Content"], ["Collection"], or None for both (default) Returns {"items": [...], "cursor": "..." | null}
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | – | – | – |
| exclude_categories | – | – | – |
| exclude_collections | – | – | – |
| exclude_contents | – | – | – |
| hub_profile_id | string | yes | – |
| only_archived | boolean | – | – |
| page_size | integer | – | – |
| types | – | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
list_hub_profiles ~41
List all hub profiles in a workspace. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_invitations ~51
List all pending invitations for a hub profile. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_managed_hub_profiles ~50
List hub profiles where the current API key user has Admin or Editor role. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_permission_groups ~67
List all permission groups for a target. workspace_id: target workspace ID — get available IDs from list_workspaces() target_type: "HubProfile" or "Workspace"
| Name | Type | Req | Description |
|---|---|---|---|
| target_id | string | yes | – |
| target_type | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_workspace_actions ~41
List all automation actions configured on a workspace. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_workspace_invitations ~42
List all pending invitations for a workspace. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
list_workspaces ~65
List all workspaces accessible with the current API key(s). When multiple API keys were provided during OAuth, this returns all workspaces across all keys. Use the workspace_id from this list to target a specific workspace in any other tool that requires a workspace_id parameter.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
move_content ~123
Move a content item to a different category section within a channel. workspace_id: target workspace ID — get available IDs from list_workspaces() content_id: ID of the content item to move channel_id: ID of the channel containing the target category category_id: ID of the destination category section_id: ID of the destination section within that category
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | string | yes | – |
| channel_id | string | yes | – |
| content_id | string | yes | – |
| section_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
move_hub_profile_to_workspace ~42
Transfer a hub profile to a different workspace (preserves content).
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
move_subcontent ~198
Reorder a subcontent item within a collection section. Moves the item to the position immediately AFTER previous_subcontent_id. Pass previous_subcontent_id=None to move the item to the very first position in the section. workspace_id: target workspace ID — get available IDs from list_workspaces() content_id: ID of the collection (the parent content item) category_name: "Content" or "Asset" section_id: ID of the section containing the subcontent item subcontent_id: ID of the subcontent item to reorder previous_subcontent_id: ID of the item that should come directly before the moved item; None places it first in the section
| Name | Type | Req | Description |
|---|---|---|---|
| category_name | string | yes | – |
| content_id | string | yes | – |
| previous_subcontent_id | – | – | – |
| section_id | string | yes | – |
| subcontent_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
patch_content_progression ~72
Update the current user's progression status for a content item. workspace_id: target workspace ID — get available IDs from list_workspaces() status: "NotStarted", "Incomplete", or "Completed"
| Name | Type | Req | Description |
|---|---|---|---|
| content_id | string | yes | – |
| status | string | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
patch_media_progression ~74
Update the current user's last watched position in a media asset (seconds). workspace_id: target workspace ID — get available IDs from list_workspaces() Call periodically during playback to enable resume functionality.
| Name | Type | Req | Description |
|---|---|---|---|
| last_watched_time | integer | yes | – |
| media_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
remove_content_from_categories ~108
Remove a content item from one or more channel categories. The content item itself is not deleted. workspace_id: target workspace ID — get available IDs from list_workspaces() content_id: ID of the content item channel_id: ID of the channel category_ids: IDs of the categories to remove the content from
| Name | Type | Req | Description |
|---|---|---|---|
| category_ids | array | yes | – |
| channel_id | string | yes | – |
| content_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
remove_user_from_permission_group ~58
Remove a user from a permission group. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| group_id | string | yes | – |
| user_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
restore_hub_profile ~49
Restore a previously archived hub profile. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
search_assets ~98
Search assets in a hub profile by keyword. workspace_id: target workspace ID — get available IDs from list_workspaces() types: e.g. ["Media", "File"] or None for all types
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_categories | – | – | – |
| exclude_collections | – | – | – |
| exclude_medias | – | – | – |
| hub_profile_id | string | yes | – |
| search | string | yes | – |
| types | – | – | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
search_contents ~105
Search content items in a hub profile by keyword. workspace_id: target workspace ID — get available IDs from list_workspaces() types: ["Content"], ["Collection"], or None for both (default)
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_categories | – | – | – |
| exclude_collections | – | – | – |
| exclude_contents | – | – | – |
| hub_profile_id | string | yes | – |
| only_archived | boolean | – | – |
| search | string | yes | – |
| types | – | – | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
turn_on_hub_profile_community ~59
Enable community features for a hub profile (posts, comments, reactions). workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_asset ~94
Update an asset's display name, read-only flag, and optionally its cover image. workspace_id: target workspace ID — get available IDs from list_workspaces() cover_image: local file path or http(s):// URL — SDK uploads automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | – |
| cover_image | – | – | – |
| name | string | yes | – |
| read_only | boolean | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
update_category ~161
Update a category's name, pin status, notification settings, and display options. workspace_id: target workspace ID — get available IDs from list_workspaces() view_type: display view type (e.g. "Grid", "List") progression_enabled: track user completion progress cover_show: show cover images in this category expandable: allow the category to be collapsed
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | string | yes | – |
| channel_id | string | yes | – |
| cover_show | boolean | – | – |
| expandable | boolean | – | – |
| is_pinned | boolean | – | – |
| name | string | yes | – |
| notifications_enabled | boolean | – | – |
| progression_enabled | boolean | – | – |
| view_type | – | – | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_channel ~105
Update a channel's name, privacy, and category order. workspace_id: target workspace ID — get available IDs from list_workspaces() privacy: "Public" or "Private" categories: list of {"id": "...", "order": 0} to reorder categories
| Name | Type | Req | Description |
|---|---|---|---|
| categories | – | – | – |
| channel_id | string | yes | – |
| hub_profile_id | string | yes | – |
| name | string | yes | – |
| privacy | – | – | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_content ~204
Update a content item's metadata. Only provided fields are changed. workspace_id: target workspace ID — get available IDs from list_workspaces() privacy: "Preview", "Private", or "Public" channels: list of channel IDs (replaces existing placement) main_asset_id: ID of the primary playable asset url: external URL to associate with the content hub_profile_id: required if the content belongs to a specific profile cover_image: local path or http(s):// URL of the cover image (auto-upload) context: context widget objects (replaces existing) categories: category assignment objects (replaces existing)
| Name | Type | Req | Description |
|---|---|---|---|
| categories | – | – | – |
| channels | – | – | – |
| content_id | string | yes | – |
| context | – | – | – |
| cover_image | – | – | – |
| details | – | – | – |
| hub_profile_id | – | – | – |
| main_asset_id | – | – | – |
| name | – | – | – |
| privacy | – | – | – |
| url | – | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
update_content_section ~73
Rename a section inside a collection content item's category. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| category_name | string | yes | – |
| content_id | string | yes | – |
| name | string | yes | – |
| section_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_hub_profile ~193
Update an existing hub profile's metadata. All fields are overwritten — provide the full desired state. workspace_id: target workspace ID — get available IDs from list_workspaces() availability_level: "Public" or "Private" primary_url: optional external URL shown on the profile app_clip_on: enable iOS App Clip widgets: profile widget configuration objects (replaces existing) buttons: action buttons (replaces existing), each {"title": "...", "logic": {"type": "...", "url": "..."}}
| Name | Type | Req | Description |
|---|---|---|---|
| app_clip_on | boolean | – | – |
| availability_level | string | – | – |
| buttons | – | – | – |
| description | – | – | – |
| hub_profile_id | string | yes | – |
| name | string | yes | – |
| primary_url | – | – | – |
| sub_name | – | – | – |
| user_name | string | yes | – |
| widgets | – | – | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
update_invitation ~84
Update the role assigned to a pending invitation. workspace_id: target workspace ID — get available IDs from list_workspaces() role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Type | Req | Description |
|---|---|---|---|
| hub_profile_id | string | yes | – |
| invitation_id | string | yes | – |
| role_id | integer | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
update_permission_group ~52
Rename a permission group. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| group_id | string | yes | – |
| name | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_section ~70
Rename a section inside a channel category. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | string | yes | – |
| channel_id | string | yes | – |
| name | string | yes | – |
| section_id | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_workspace ~45
Update a workspace's display name. workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| workspace_id | string | yes | – |
No output schema declared.
No examples provided.
update_workspace_action ~100
Update a workspace automation action. All fields are overwritten. workspace_id: target workspace ID — get available IDs from list_workspaces() metadata example: {"$type": "ProgressionUpdatedMetadata", "webhookUrl": "https://..."}
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | – |
| details | – | – | – |
| hub_profile_ids | – | – | – |
| metadata | object | yes | – |
| title | string | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
update_workspace_invitation ~77
Update the role assigned to a pending workspace invitation. workspace_id: target workspace ID — get available IDs from list_workspaces() role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Type | Req | Description |
|---|---|---|---|
| invitation_id | string | yes | – |
| role_id | integer | yes | – |
| workspace_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
What is the SRG+ MCP server?
SRG+ is an MCP server listed in the public MCP registry as io.github.srgplus/srgplus-mcp. Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent. This page covers its PyPI package (srgplus-mcp).
Is the SRG+ MCP server safe to use?
SRG+ scores 62 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the SRG+ MCP server expose?
SRG+ exposes 97 tools: list_hub_profiles, list_managed_hub_profiles, get_hub_profile, get_hub_profile_by_username, filter_hub_profiles, and 92 more. Their descriptions and schemas cost roughly 8,085 tokens of context every time the server is loaded.
Is the SRG+ MCP server still maintained?
SRG+ is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.