Chatvolt Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Chatvolt Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This document provides a high-level overview of the Chatvolt Model Context Protocol (MCP) server, a TypeScript-based application designed to extend the capabilities of AI agents by providing them with a suite of tools to interact with the Chatvolt platform.
The main goal of this project is to act as a bridge between an AI model and the Chatvolt API. It exposes a set of tools that an AI agent can call to perform actions such as managing agents, querying datastores, and handling CRM scenarios. This allows for the automation of complex workflows and provides a natural language interface to the Chatvolt platform.
src/server.ts)The core of the application is the MCP server, which is responsible for:
ListTools, CallTool, ListResources, and GetPrompt.CallTool requests and dispatches them to the appropriate tool handler.src/tools/)The tools are the actions that the AI agent can perform. They are defined in the src/tools/ directory and are broadly categorized into:
The server provides additional context to the AI model through resources and prompts:
This MCP server is launched via a command from the client. To connect, you need to configure your client to launch the chatvolt-mcp command and pass the necessary environment variables.
Here is an example of how you might configure your client's mcpServers setting:
{
"mcpServers": {
"chatvolt-mcp": {
"command": "npx",
"args": [
"chatvolt-mcp"
],
"env": {
"CHATVOLT_API_KEY": "{your_token}"
}
}
}
}Note: You must replace "{your_token}" with your actual Chatvolt API key.
This document provides a detailed technical architecture of the Chatvolt Model Context Protocol (MCP) server. It expands on the high-level overview, covering the request lifecycle, directory structure, and the process of defining and registering tools.
CallToolThe CallTool request is the primary mechanism by which an AI agent executes an action. The lifecycle of this request is as follows:
sequenceDiagram
participant AI Agent
participant MCP Server
participant Tool Handler
participant Chatvolt API
AI Agent->>+MCP Server: Sends CallToolRequest (e.g., 'delete_agent', {id: '123'})
MCP Server->>MCP Server: Receives request in CallTool handler
Note over MCP Server: Finds handler for 'delete_agent' in `toolHandlers` map
MCP Server->>+Tool Handler: Invokes handleDeleteAgent(request)
Tool Handler->>Tool Handler: Validates arguments (e.g., checks for 'id')
Tool Handler->>+Chatvolt API: Calls `deleteAgent('123')`
Chatvolt API-->>-Tool Handler: Returns result (e.g., {success: true})
Tool Handler-->>-MCP Server: Returns formatted content
MCP Server-->>-AI Agent: Sends response with tool outputFlow Description:
CallToolRequest. This request is handled by the generic CallToolRequestSchema handler defined in src/server.ts.toolHandlers object, which maps tool names (e.g., "delete_agent") to their corresponding handler functions (e.g., handleDeleteAgent). This object is imported from the central src/tools/ index file.handleDeleteAgent in src/tools/deleteAgent.ts is called.src/services/ layer (e.g., deleteAgent(id)).The project is organized to separate concerns, making it modular and maintainable.
deleteAgent.ts).Tool definition object (e.g., deleteAgentTool) that contains the tool's name, description, and inputSchema as required by the MCP SDK.handleDeleteAgent) that contains the logic for executing the tool.index.js file within this directory is responsible for importing all individual tools and handlers and exporting them as two aggregate objects: tools (an array of all tool definitions) and toolHandlers (a map of tool names to their handlers).deleteAgent function, imported from ../services/chatvolt.js, would contain the fetch call and logic required to send a DELETE request to the Chatvolt /agents/:id endpoint.Tools are the core components that define the server's capabilities. Their definition and registration follow a clear pattern:
Tool from the @modelcontextprotocol/sdk/types.js library. This object includes:name: A unique, machine-readable name for the tool (e.g., "delete_agent").description: A human-readable description of what the tool does and its parameters. While a resource file like TOOL_DESCRIPTIONS.md exists to provide detailed documentation to the AI model, the description property within the tool definition itself serves as a concise summary.inputSchema: A JSON Schema object that formally defines the arguments the tool accepts, including their types and whether they are required.tools array and toolHandlers map are imported from src/tools/index.js into src/server.ts.ListToolsRequestSchema handler in src/server.ts uses the imported tools array to respond to requests for the list of available tools.CallToolRequestSchema handler uses the toolHandlers map to find and execute the correct function based on the name parameter in the incoming request.This architecture creates a decoupled system where new tools can be easily added by creating a new file in the src/tools/ directory and updating the central index.js file, without modifying the core server logic in src/server.ts.
This document explains the role and content of system prompts used to guide the AI agent's behavior when interacting with the Chatvolt MCP (Model Context Protocol). These prompts are defined in the SYSTEM_PROMPTS.md file and provide a foundational set of instructions for the AI.
System prompts are high-level instructions that define the AI's persona, objectives, and operational constraints. They ensure the AI acts in a predictable and effective manner by establishing a clear framework for how it should interpret user requests, utilize its tools, and structure its responses.
The SYSTEM_PROMPTS.md file outlines three primary scenarios, each with a corresponding system prompt to guide the AI's behavior.
list_agents).getDocumentation tool to retrieve information about all its available tools.This document provides a detailed reference for the available tools that can be used to interact with the server.
create_agentCreates a new Chatvolt agent.
| Parameter | Type | Description |
|---|---|---|
name | string, required | The name of the agent. This is a human-readable identifier for the agent. |
description | string, required | A detailed description of the agent's purpose and capabilities. |
modelName | string, required | The specific AI model the agent will use (e.g., 'gpt-4', 'claude_3_sonnet'). |
systemPrompt | string, required | The initial instructions or context given to the agent to define its personality, role, and behavior. |
temperature | number, optional | Controls the randomness of the model's output. A value closer to 0 makes the output more deterministic, while a value closer to 1 makes it more creative. |
tools | array, optional | A list of tools that the agent can use to perform actions. |
update_agentPartially updates an existing agent based on the ID. Allows updating one or more fields of a specific agent. Only the fields provided in the request body will be updated.
| Parameter | Type | Description |
|---|---|---|
id | string, required | ID of the agent to be updated. |
name | string, optional | New name for the agent. |
description | string, optional | New description for the agent. |
modelName | string, optional | New LLM model to be used by the agent. |
temperature | number, optional | New model temperature (min 0.0, max 1.0). |
systemPrompt | string, optional | New system prompt for the agent. |
visibility | string, optional | New visibility for the agent (e.g., 'public', 'private'). |
handle | string, optional | New unique identifier (slug) for the agent. |
interfaceConfig | object, optional | New chat interface settings for this agent. |
configUrlExternal | object, optional | New external URL configurations. |
configUrlInfosSystemExternal | object, optional | New external URL configurations of the system. |
delete_agentDeletes a specified agent.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the agent to be deleted. |
list_agentsRetrieves a list of all available agents.
This tool takes no parameters.
get_agentRetrieves detailed information about a single agent.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the agent to retrieve. |
agent_querySends a query or message to an agent for processing.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the agent that will receive the query. |
query | string, required | The text of the question or command to be sent to the agent. |
conversationId | string, optional | The identifier for an existing conversation. If provided, the query will be part of that conversation's history. |
enable_disable_agent_integrationEnables or disables a specific integration for an agent.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the agent. |
type | string, required | The type of integration to modify (e.g., 'whatsapp', 'telegram'). |
enabled | boolean, required | Set to true to enable the integration or false to disable it. |
create_crm_scenarioCreates a new scenario within the CRM.
| Parameter | Type | Description |
|---|---|---|
name | string, required | The name of the new CRM scenario. |
description | string, optional | A description of the scenario's purpose. |
update_crm_scenarioUpdates an existing CRM scenario.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the scenario to update. |
name | string, required | The new name for the scenario. |
description | string, optional | The new description for the scenario. |
delete_crm_scenarioDeletes a CRM scenario.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the scenario to delete. |
list_crm_scenariosLists all CRM scenarios.
| Parameter | Type | Description |
|---|---|---|
agentId | string, optional | If provided, filters the list to show only scenarios associated with this agent ID. |
create_crm_stepCreates a new step within a CRM scenario.
| Parameter | Type | Description |
|---|---|---|
scenarioId | string, required | The unique identifier of the scenario to which this step will be added. |
name | string, required | The name of the new step. |
update_crm_stepUpdates an existing step in a CRM scenario.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the step to update. |
name | string, required | The new name for the step. |
delete_crm_stepDeletes a step from a CRM scenario.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the step to delete. |
list_crm_stepsLists all steps for a given CRM scenario.
| Parameter | Type | Description |
|---|---|---|
scenarioId | string, required | The unique identifier of the scenario whose steps are to be listed. |
create_datastoreCreates a new datastore.
| Parameter | Type | Description |
|---|---|---|
type | string, required | The type of datastore to create (e.g., 'qdrant'). |
name | string, optional | A name for the datastore. |
description | string, optional | A description of the datastore's content or purpose. |
get_datastoreRetrieves information about a specific datastore.
| Parameter | Type | Description |
|---|---|---|
id | string, required | The unique identifier of the datastore to retrieve. |
search | string, optional | A search term to find specific data within the datastore. |
list_datastoresRetrieves a list of all datastores.
This tool takes no parameters.
create_datasourceCreates a new data source within a datastore.
| Parameter | Type | Description |
|---|---|---|
datastoreId | string, required | The unique identifier of the datastore where the data source will be created. |
name | string, required | The name of the data source, often used as a filename. |
text | string, required | The actual text content of the data source. |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.