Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Thalovant MCP

NPM · @THALOVANT/MCP-SERVER · 2 COMPONENTS

Connect MCP clients to Thalovant control-plane and hub runtime APIs over stdio or Streamable HTTP.

0 this week 91 Trust /100

Last scanned (1 hour ago)

Scores higher than 94% of npm servers

Category AI and Machine Learning

Trust breakdown (7 categories)

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 Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 50 of 138 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to thalovant/thalovant-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability55
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 13886 tokens (~235/item across 59 items; 59 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage91
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 73% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 11 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 59 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
Changelog

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.

  • 4 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 3 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 11113 → 13886 ▼ functional
    • Package version: 0.6.6 → 0.7.0 functional
  • 26 Oct 26 +6
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • CVE-2023-54404 no longer affects this package ▲ security
    • Known CVEs: fail → pass ▲ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 0.6.5 → 0.6.6 functional
  • 24 Oct 26 +9
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
    • Malware scan: unverified → pass ▲ security
  • 23 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.6.4 → 0.6.5 functional
  • 20 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 19 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.6.3 → 0.6.4 functional
  • 17 Oct 26 +1
    • Stability: 0.90 → pass security
Diagnostics

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 5 Nov 2026 · Analysed npm/@thalovant/mcp-server@0.7.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo thalovant/thalovant-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/thalovant/thalovant-mcp/.github/workflows/release.yml@refs/heads/main
Rekor log index 3677433397
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:7ee6849bf10fe959ba15878727d24b90ab3768d6fd23fb006ceb8ed51143db7dfb92173b15e7b7368a03fb13dc33ee067277b433673cf7c0f73b09422

Background: How many MCP packages publish verified provenance →

Dependencies 138 packages
Packages resolved 138
Stale 50
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 59 exposed · ~13,886 tokens

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 →

Tool Tokens
thalovant_uninstall_runtime_group_skill ~138

Remove one skill from a Thalovant runtime group. This removes only the named skill; the runtime group and its other skills are untouched. Requires the hubs:write scope and a paid plan.

NameTypeReqDescription
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
runtimeGroupIdstringyesRuntime group UUID.
skillIdstringyesSkill id to remove.

No output schema declared.

No examples provided.

thalovant_update_bridge ~577

Change where and how a chat app bridge answers (PATCH /v1/bridges/{id}); send only what changes, at least one of allowed, requireMention, sessionScope and settings. allowed REPLACES the whole list of chats, channels or rooms the bridge answers in (1-50, never empty: pause it instead): keep the current ones from thalovant_get_bridge, add rows from thalovant_list_bridge_chats, or type ids matching the chat app's targets.pattern. Setting allowed the first time starts a bridge in setup. requireMention false makes it answer every message in its groups, which spends the daily allowance faster; a Discord bridge always needs a mention (422 bridge_mention_required). sessionScope person gives each person a conversation of their own, chat one per chat. settings are the chat app's non-secret settings (its settings form in thalovant_list_chat_app_connectors), merged into the stored ones and checked again; an address must be https on port 443 with a public host. A token or secret is never a setting: a setting name that looks like one is refused here before any request, and tokens and secrets are replaced in the Thalovant console: open the bot from Connections or the hub's Chat apps tab and use Replace token. To pause or resume, use thalovant_pause_bridge or thalovant_resume_bridge. Needs a paid plan. Requires the hubs:write scope, and the hub's owner or a workspace manager.

NameTypeReqDescription
allowedarray–Every chat the bridge should answer in, 1-50; replaces the stored list.
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
bridgeIdstringyesBridge UUID: the id from thalovant_list_bridges.
etagstring–Optional. The bridge's etag, read from the `etag` field of thalovant_get_bridge (the API sends no ETag header), sent as If-Match: a bridge changed since fails with HTTP 412 and nothing changes. Leave…
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
requireMentionboolean–Answer only messages that mention the bot or reply to it. Discord bridges are always true.
sessionScopestring–person: each person has a conversation of their own; chat: one conversation per chat.
settingsobject–Non-secret settings to change, at most 32, by the setting keys of the chat app's settings form; merged into the stored ones.

No output schema declared.

No examples provided.

thalovant_update_hub ~595

Partially update a Thalovant hub. Send ONLY the fields you are changing — do not round-trip a whole hub resource. name, namespace, and domain are immutable and are deliberately not accepted here; the API rejects a changed value with HTTP 400. This route uses optimistic locking and requires the hub's current etag, which lives in the hub resource BODY (there is no ETag response header), so call thalovant_get_hub first and pass the etag field from its response. A missing or stale etag fails 412 and changes nothing. Requires the hubs:write scope and a paid plan.

NameTypeReqDescription
activeboolean––
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
capacityProfilestring–Hub capacity profile. Only "standard" (the API default, 1 replica) and "autoscaling" (2-32 replicas) are accepted. Omit the key entirely rather than sending null — an explicit null fails 422 INVALID_…
etagstringyesRequired. The hub's current etag, sent as If-Match for optimistic locking. Read it from the `etag` field in the hub resource BODY returned by thalovant_get_hub — the API does not send an ETag respons…
hubIdstringyesHub UUID. This authenticated route rejects slugs.
isLockedboolean–Admin only: a non-admin gets 403, and a non-admin cannot update a locked hub at all.
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
ownerIdstring––
runtimeGroupIdstring––
slugstring–Mutable, unlike name/namespace/domain. Fails 409 if the slug is already taken.
specobject–Hub spec object. `version` is REQUIRED and must be a non-empty string — {"version": "1"} is the minimum valid spec; omitting it fails 422 "Schema validation failed". Other keys pass through, and the…
visibilitystring–1-32 characters. Switching to "public" is plan-gated and fails 403 on plans that keep hubs private.

No output schema declared.

No examples provided.

thalovant_update_hub_skill ~426

Move a skill already installed on the runtime group attached to a Thalovant hub to a specific version (not a runtime group or skill set). The change applies live on the hub in about 15 seconds, with no hub restart. version is required — read the current version and latest_version from thalovant_list_hub_skills. The API answers 202 with an operation_id, hub_id, runtime_group_id, previous_version and state "updating": pass wait: true to poll the operation until it converges (state "installed", or an error carrying the operation's failure message), with a 120 s default timeout; otherwise follow it with thalovant_get_operation. Fails 404 when the skill is not installed on the hub (code hub_without_runtime_group when the hub has no runtime group), 409 with code skill_version_already_installed when it is already at that version, and 422 for an invalid version. hubId must be the hub UUID — the authenticated hub routes reject slugs. Requires the hubs:write scope and a paid plan; scope is checked before plan, so a free-plan token sees 403, never 402. A hub-restricted token must cover every hub sharing the affected runtime group.

NameTypeReqDescription
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
hubIdstringyesHub UUID (not the slug).
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
skillstringyesSkill name, 1-191 characters.
timeoutMsinteger–How long to wait when wait is true, 1000-600000 ms. Defaults to 120000.
versionstringyesRequired target version, 1-64 characters.
waitboolean–Poll the operation until the update converges (installed or failed). Defaults to false.

No output schema declared.

No examples provided.

thalovant_update_memory_item ~163

Update an explicit Thalovant memory item.

NameTypeReqDescription
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
clearExpiresAtboolean––
consentScopestring––
consentVersion–––
contentstring––
expiresAtstring|null––
kindstring––
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
memoryIdstringyes–
metadataobject––
retentionPolicystring––
tagsarray––
title–––

No output schema declared.

No examples provided.

thalovant_update_runtime_group ~191

Update a Thalovant runtime group's name, description, or spec. spec patches replicas and container resources. This route does NOT use If-Match, so no etag is required. Requires the hubs:write scope and a paid plan.

NameTypeReqDescription
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
descriptionstring–Max 255 characters.
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
namestring–1-128 characters.
runtimeGroupIdstringyesRuntime group UUID.
specobject–Patches replicas and container resources only. Note the replica ceiling here is 20, separate from a hub's autoscaling ceiling of 32.

No output schema declared.

No examples provided.

thalovant_update_runtime_group_config ~235

Merge runtime configuration into a Thalovant runtime group. The SDK reads and deep-merges config, then writes with a revision precondition. Only explicit HTTP 412 conflicts retry, at most three attempts; older APIs fail before a write. Set merge=false for explicit unconditional replacement. personas, when provided, is REPLACED wholesale rather than merged; omit it to leave stored personas untouched. Requires hubs:read and paid hubs:write for merging; replacement needs paid hubs:write.

NameTypeReqDescription
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
configobjectyesConfiguration object merged into the stored configuration. Required.
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
mergeboolean–False explicitly replaces the full configuration without a revision precondition.
personasobject–Replaces the stored personas outright. Left untouched when omitted.
runtimeGroupIdstringyesRuntime group UUID.

No output schema declared.

No examples provided.

thalovant_wait_for_admission ~314

Wait until a hub admits a connection made with thalovant_create_client_identity: about ninety seconds after the create. Follows the operation the create returned (operationId), reading it every pollIntervalMs; a 429 is waited out for the time the API names. outcome is admitted (ready, or an operation the API no longer tracks), failed -- the platform could not admit it (errorCode says why, status is null) or the API refused the wait itself (status, code and detail say what it answered) -- or timeout: timeoutMs passed first and the connection may still be admitted, so call this tool again rather than creating another connection. A token the API refuses (401, 403) or an API out of reach is a tool error of its own, not a failed admission. Omit operationId when the create returned none. Reads only.

NameTypeReqDescription
apiUrlstring–Control-plane base URL. Configured credentials may only be used on their configured origin; defaults to https://api.thalovant.com.
loginScopestring–Optional login scope used with THALOVANT_EMAIL and THALOVANT_PASSWORD.
operationIdstring–operationId from thalovant_create_client_identity: the operation's id or its links.self path. An absolute URL must be on the API's own origin.
pollIntervalMsinteger–Milliseconds between two reads of the operation.
timeoutMsinteger––

No output schema declared.

No examples provided.

thalovant_wait_for_event ~217

Wait for one named hub event using a saved identity and return it: the first eventName the hub sends once the connection is made, or a timeout error after timeoutMs. sessionId, requestId and context narrow it to events carrying the same values. Listens only: it opens the connection and sends the hub no message, so it changes nothing.

NameTypeReqDescription
configPathstring–Path to a Thalovant SDK config file.
contextobject––
eventNamestringyesThe bus message type to wait for, such as speak or recognizer_loop:utterance.
fromEnvboolean–Load the identity from Thalovant SDK environment variables.
identityFilestring–Path to a Thalovant identity JSON file.
profilestring–SDK config profile name.
protocolstring–Runtime transport protocol.
requestIdstring––
sessionIdstring––
timeoutMsinteger––

No output schema declared.

No examples provided.

Install

How do I install the Thalovant MCP server?

Thalovant MCP runs locally as an npm package, launched with npx -y @thalovant/mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @thalovant/mcp-server

# add to Claude Code
claude mcp add thalovant-thalovant-mcp -- npx -y @thalovant/mcp-server
Common questions

What is the Thalovant MCP server?

Thalovant MCP is listed in the public MCP registry as io.github.thalovant/thalovant-mcp. Connect MCP clients to Thalovant control-plane and hub runtime APIs over stdio or Streamable HTTP. This page covers its npm package (@thalovant/mcp-server).

Is the Thalovant MCP server safe to use?

Thalovant MCP scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 Thalovant MCP server expose?

Thalovant MCP exposes 59 tools: thalovant_config_status, thalovant_list_public_hubs, thalovant_get_public_hub, thalovant_list_hubs, thalovant_get_hub, and 54 more. Their descriptions and schemas cost roughly 13,886 tokens of context every time the server is loaded.

Is the Thalovant MCP server still maintained?

Thalovant MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Thalovant MCP server under?

Thalovant MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.