viaSocket
com.viasocket.mcp/mcpmcp.viasocket.comstreamable-httpv1.0.0Scanned
Build viaSocket plugins and automations, and connect your product to other apps.
15 tools: 1 can delete or cancel things, 5 change things and 9 only read.
- Reads private data · 3
- Reads text others write · 10
- Can send data out · 1
- 4 findings, 2 high
Anlyon alternative
6 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
15 tools
Deletes or cancels 1Claude Code: deny
call_any_api_of_viasocketSend a POST, PUT, PATCH or DELETE request to any viaSocket API endpoint for the user and return its response: every write (create, update, publish, delete).Reads text others writeNo findings
Why it is in this group
- The name "call_any_api_of_viasocket" says "call": a word for a change.
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Send a POST, PUT, PATCH or DELETE request to any viaSocket API endpoint for the user and return its response: every write (create, update, publish, delete). For GET requests use call_any_read_api_of_viasocket. Look the endpoint up with get_viasocket_api_docs first to get its URL, headers, query params and body, unless the skill or a dedicated tool on this server already gives them exactly. Load the quickstart-viasocket-developer-hub skill first: it explains which tool to use when. Pass the full url with path variables filled in, the headers the docs list, query params in `query` (not in the url) and the JSON body in `body`. For the auth header the docs name (Authorization, proxy_auth_token, x-api-key, ...), pass it with an empty value "": the signed-in user's token is filled in automatically. Never put a real or made-up token there; if the docs name no auth header, leave it out and the token is sent as Authorization. If the API needs the user to sign in, they're asked the first time. Only for the viaSocket endpoints documented on this server: it attaches the viaSocket sign-in, so never use it for Embarko (ship.embarko.ai) or any other service. Returns { status, ok, headers, data }: the HTTP status and the response body, including error details on failure.
Annotations the server declares
- title: Write to viaSocket API
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Changes things 5Claude Code: ask
call_any_read_api_of_viasocketRead from any viaSocket API endpoint with a GET request for the user and return its response.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "call_any_read_api_of_viasocket" says "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Findings
- Warn
The server marks "call_any_read_api_of_viasocket" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "call_any_read_api_of_viasocket" says "call": a word for a change.
Description, as the server wrote it Read from any viaSocket API endpoint with a GET request for the user and return its response. Use it once you know the exact endpoint: look it up with get_viasocket_api_docs first to get its URL, headers, query params and body, unless the skill or a dedicated tool on this server already gives them exactly. Load the quickstart-viasocket skill first: it explains which tool to use when. For POST, PUT, PATCH and DELETE use call_any_api_of_viasocket. Pass the full url with path variables filled in, the headers the docs list, and query params in `query` (not in the url). For the auth header the docs name (Authorization, proxy_auth_token, x-api-key, ...), pass it with an empty value "": the signed-in user's token is filled in automatically. Never put a real or made-up token there; if the docs name no auth header, leave it out and the token is sent as Authorization. If the API needs the user to sign in, they're asked the first time. Returns { status, ok, headers, data }: the HTTP status and the response body, including error details on failure.
Annotations the server declares
- title: Read from viaSocket API
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_viasocket_embed_secretGets the viaSocket organization's embed signing secret (VIASOCKET_EMBED_SECRET) into the developer's .env encrypted, so you never see it.Reads private dataReads text others write2 findings
Why it is in this group
- The name "get_viasocket_embed_secret" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
What it can reach
- private-dataThe name "get_viasocket_embed_secret" says "get" and "secret": it reads secrets.
- private-dataThe description's first sentence says "get" and "secret": it reads secrets.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- High
The description refers to ".env".
What this check looks forMatched text
description: "...CKET_EMBED_SECRET) into the developer's .env encrypted, so you never see it. Use it..."
- Warn
The server marks "get_viasocket_embed_secret" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_viasocket_embed_secret" says "get": a word for reading.
Description, as the server wrote it Gets the viaSocket organization's embed signing secret (VIASOCKET_EMBED_SECRET) into the developer's .env encrypted, so you never see it. Use it in SDK setup. Get orgId with get_org_details_by_token first. Before calling, run `docstar-cli key request` in the project folder and pass its publicKey; then run the `save` command this tool returns, then its `emit` command (the developer can choose another .env file). Never ask for, print or repeat the secret.
Annotations the server declares
- title: Get a viaSocket API key
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
quickstart-viasocket-developer-hubQuickstart for viaSocket: build and manage your viaSocket plugins (apps) in the Developer Hub (auth, actions, triggers, versions, reusable components, debugging), set up a product'…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Quickstart for viaSocket: build and manage your viaSocket plugins (apps) in the Developer Hub (auth, actions, triggers, versions, reusable components, debugging), set up a product's viaSocket keys, give a product its own MCP server, and build automations (flows) for the user: find apps, connect accounts, create flows, set triggers and write steps. Routes plug work through the plug skills index, product integration and the product's MCP server through the viaSocket skill, and Embarko deploy through Embarko's quickstart. Load this before any viaSocket task. Call this to load the full instructions for this skill before doing the task.
Annotations the server declares
- title: Quickstart Viasocket Developer Hub
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
report_feedbackReport a problem to viaSocket while building with it: an error, a confusion, wrong docs or skills, a user correction, or a missing capability.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Report a problem to viaSocket while building with it: an error, a confusion, wrong docs or skills, a user correction, or a missing capability. Problems only, never success; no need to ask the user; a failed report never stops the task. Plugs: fix or extend the user's own plugs (the ones in list_plugins) yourself, and build a plug for an app that has none. A plug used in flows but not in list_plugins is viaSocket's: never edit it, report it here (refs.pluginId, refs.actionId; a missing action, trigger or field is kind missing_capability, with exactly what is needed and why). Body: source (sdk | http_api | plug | action | trigger | connection | skill | other), kind (error | confusion | missing_capability | wrong_instructions | user_correction) and feedback (what happened, in plain words), plus optional severity, stage, intent, attempted, expected, actual, error, refs, env and retries. Never include secrets, tokens or script_id. The org and user come from the sign-in.
Annotations the server declares
- title: Report Feedback
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
report_publishedCall once right after you publish something on the user's own plug (one in list_plugins): a new plug, or a new action, trigger, version or connection on it.No findings
Why it is in this group
- The description's first verb is "call": a word for a change.
Description, as the server wrote it Call once right after you publish something on the user's own plug (one in list_plugins): a new plug, or a new action, trigger, version or connection on it. viaSocket then reviews the published plug and may add missing actions or triggers. Body: pluginId (the plug rowid, required), published (new_plug | new_action | new_trigger | new_version | connection), plus optional app (the app's name), actionIds (rowids of the actions or triggers just published) and note (plain words, never secrets). No need to ask the user; a failed call never stops the task. The org and user come from the sign-in. Not for problems: use report_feedback for those.
Annotations the server declares
- title: Report Published
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 9Show 9 read-only tools
get_org_details_by_tokenGet the viaSocket organization (id and details) that the signed-in user's token belongs to.No findings
Why it is in this group
- The name "get_org_details_by_token" says "get": a word for reading.
Description, as the server wrote it Get the viaSocket organization (id and details) that the signed-in user's token belongs to. Read-only, no inputs. Call this first whenever you need the organization id (orgId) for other viaSocket Developer Hub calls such as List Plugins, Get Plugin or analytics, instead of asking the user for it.
Annotations the server declares
- title: Get Org Details By Token
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_plugin_analyticsGet run counts, error counts and flow counts for every action and trigger version of a plugin (filter=getPluginDetails, identifier=<pluginId>, optional startTime and endTime dates)…Reads text others writeNo findings
Why it is in this group
- The name "get_plugin_analytics" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Get run counts, error counts and flow counts for every action and trigger version of a plugin (filter=getPluginDetails, identifier=<pluginId>, optional startTime and endTime dates).
Annotations the server declares
- title: Get Plugin Analytics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_viasocket_api_docsBrowse the viaSocket API docs, one level at a time.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_viasocket_api_docs" says "get": a word for reading.
What it can reach
- private-dataThe name "get_viasocket_api_docs" says "get" and "doc": it reads documents.
- private-dataThe description's first sentence says "browse" and "doc": it reads documents.
- untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
Description, as the server wrote it Browse the viaSocket API docs, one level at a time. Call it without arguments to get the top level: the modules and pages with a short description and the endpoints they hold. Call it with `path` set to a module's or page's link (or path) to get what is inside it; each listing links the next level. Call it with `path` set to an endpoint's link ending in ".openapi.yml" to get that endpoint as an OpenAPI file: method, url, headers, query params, path variables, a request body example and sample responses. Fetch only the level you need.
Annotations the server declares
- title: Get viaSocket API docs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_action_versionsList all versions of an action or trigger (filter=getActionVersions, identifier=<actionId>), with code, inputs, authid, status and verification status.Reads text others writeNo findings
Why it is in this group
- The name "list_action_versions" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List all versions of an action or trigger (filter=getActionVersions, identifier=<actionId>), with code, inputs, authid, status and verification status. Use fields to keep the response small.
Annotations the server declares
- title: List Action Versions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_actions_and_triggersList a plugin's actions and triggers (filter=getAllActions, identifier=<pluginId>), or get one (filter=getActionDetails, identifier=<actionId>).Reads text others writeNo findings
Why it is in this group
- The name "list_actions_and_triggers" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List a plugin's actions and triggers (filter=getAllActions, identifier=<pluginId>), or get one (filter=getActionDetails, identifier=<actionId>). Use it to find an actionId.
Annotations the server declares
- title: List Actions and Triggers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_auth_versionsList a plugin's authentication versions (filter=getAuthDetails, identifier=<pluginId>) to find an authid.Reads text others write1 finding
Why it is in this group
- The name "list_auth_versions" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- High
The description contains "never show them to the user", an instruction to keep something from the user.
What this check looks forMatched text
description: "...onses include decrypted client secrets: never show them to the user."
Description, as the server wrote it List a plugin's authentication versions (filter=getAuthDetails, identifier=<pluginId>) to find an authid. Responses include decrypted client secrets: never show them to the user.
Annotations the server declares
- title: List Auth Versions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_embed_projectsList an organization's embed projects (type=embed) for viaSocket SDK setup.Reads text others writeNo findings
Why it is in this group
- The name "list_embed_projects" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List an organization's embed projects (type=embed) for viaSocket SDK setup. Each data.projects[].id is a project_id (VIASOCKET_PROJECT_ID). Reuse an existing embed: one embed serves a whole product. Only if there is none, create one with the Create Embed Project endpoint (via call_any_api) after the developer confirms.
Annotations the server declares
- title: List Embed Projects
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_pluginsList every viaSocket Developer Hub plugin (app) the user's organization owns.Reads text others writeNo findings
Why it is in this group
- The name "list_plugins" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List every viaSocket Developer Hub plugin (app) the user's organization owns. Send filter=getAllPlugins and identifier equal to the orgId in the path. Start here to find a pluginId (rowid).
Annotations the server declares
- title: List Plugins
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
search_viasocket_docsSearch the viaSocket documentation with a natural-language question.Reads private dataNo findings
Why it is in this group
- The name "search_viasocket_docs" says "search": a word for reading.
What it can reach
- private-dataThe name "search_viasocket_docs" says "search" and "doc": it reads documents.
Description, as the server wrote it Search the viaSocket documentation with a natural-language question. Returns the most relevant passages with their page URLs.
Annotations the server declares
- title: Search viaSocket docs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
30 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.
- Reads private data3
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write10
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__server__call_any_read_api_of_viasocket"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The description contains "never show them to the user", an instruction to keep something from the user.
What this check looks forMatched text
description: "...onses include decrypted client secrets: never show them to the user."
The description refers to ".env".
What this check looks forMatched text
description: "...CKET_EMBED_SECRET) into the developer's .env encrypted, so you never see it. Use it..."
The server marks "call_any_read_api_of_viasocket" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "call_any_read_api_of_viasocket" says "call": a word for a change.
The server marks "get_viasocket_embed_secret" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_viasocket_embed_secret" says "get": a word for reading.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http server https://connect.viasocket.com/mcpclaude mcp add --transport http server https://connect.viasocket.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__server__search_viasocket_docs",
"mcp__server__get_viasocket_api_docs",
"mcp__server__list_plugins",
"mcp__server__list_auth_versions",
"mcp__server__list_actions_and_triggers",
"mcp__server__list_action_versions",
"mcp__server__get_plugin_analytics",
"mcp__server__get_org_details_by_token",
"mcp__server__list_embed_projects"
],
"ask": [
"mcp__server__call_any_read_api_of_viasocket",
"mcp__server__report_feedback",
"mcp__server__report_published",
"mcp__server__get_viasocket_embed_secret",
"mcp__server__quickstart-viasocket-developer-hub"
],
"deny": [
"mcp__server__call_any_api_of_viasocket"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as server. Review it before you use it.
Capability tags behind 11 rules
- mcp__server__search_viasocket_docs private-data
- mcp__server__get_viasocket_api_docs private-data, untrusted-input
- mcp__server__call_any_api_of_viasocket untrusted-input
- mcp__server__list_plugins untrusted-input
- mcp__server__list_auth_versions untrusted-input
- mcp__server__list_actions_and_triggers untrusted-input
- mcp__server__list_action_versions untrusted-input
- mcp__server__get_plugin_analytics untrusted-input
- mcp__server__list_embed_projects untrusted-input
- mcp__server__call_any_read_api_of_viasocket untrusted-input, outbound
- mcp__server__get_viasocket_embed_secret private-data, untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.viasocket.mcp/mcp/verify?hash=6d1e8d5e8f16d77c10acc39a064f07fd87aa2042eada6d2b224197910b600f1d" | jq -e '.changed == false'Pinned hash 6d1e8d5e8f16, from Oct 30, 2026, 13:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.viasocket.mcp/mcp/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.viasocket.mcp/mcp)Source: MCP Registry · repository. Synced Oct 30, 2026, 13:17 UTC.