@venelx/mcp
Allows triggering and monitoring Android builds, including build status, logs, and artifacts, through the Venelx CI/CD platform.
Diagnoses GitHub repository access, reporting whether the configured token has valid access to connected repositories and surfacing reasons for failures.
Allows triggering and monitoring iOS builds, including build status, logs, and artifacts, through the Venelx CI/CD platform.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@venelx/mcpTrigger an iOS build for my project and show its status."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@venelx/mcp
An MCP (Model Context Protocol) server that lets AI assistants (Claude Code, Cursor, Kimi Code, and any MCP-compatible client) operate the Venelx CI/CD platform through its REST API: list projects, trigger builds, check build status, tail logs, list artifacts and workers, and diagnose signing / GitHub access.
The server talks to the Venelx API over HTTPS and to your AI client over stdio.
Prerequisites
Node.js ≥ 18
A Venelx account with at least one project
A personal API token — create one in the Venelx dashboard at Account → API tokens: https://app.venelx.com/account/tokens
Token scopes
Scope | What it allows |
| All read-only tools (list projects, status, logs, artifacts, …) |
| Everything |
Tokens look like vx_.... Treat them like passwords — pass them via environment
variables, never commit them.
Related MCP server: Vercel MCP Relay Server
Configuration
Environment variable | Required | Default | Description |
| yes | — | Personal API token ( |
| no |
| API base URL (self-hosted etc.) |
Install & run
Claude Code
claude mcp add venelx --env VENELX_TOKEN=vx_... -- npx -y @venelx/mcpCursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"venelx": {
"command": "npx",
"args": ["-y", "@venelx/mcp"],
"env": {
"VENELX_TOKEN": "vx_..."
}
}
}
}Kimi Code / generic MCP client
Same shape as above — add to your client's MCP JSON config:
{
"mcpServers": {
"venelx": {
"command": "npx",
"args": ["-y", "@venelx/mcp"],
"env": {
"VENELX_TOKEN": "vx_...",
"VENELX_API_URL": "https://api.venelx.com"
}
}
}
}Local development
git clone <repo> && cd venelx-mcp
npm install
npm run buildThen point your MCP client config at the local build:
{
"mcpServers": {
"venelx": {
"command": "node",
"args": ["/path/to/venelx-mcp/dist/index.js"],
"env": {
"VENELX_TOKEN": "vx_..."
}
}
}
}Tools
Tool | Scope needed | What it does |
| read | List projects the token can access (id, name, GitHub URL, platforms, role). |
| read | Project details plus a GitHub access summary. |
| write | Queue a build for a platform ( |
| read | Current pipeline status per platform + the 10 most recent builds. |
| read | Last N lines of a build log (latest build, or a given |
| read | Build artifacts for a project. |
| read | Build workers owned by the account (name, status, capabilities). |
| read | Code-signing readiness, optionally per platform ( |
| read | GitHub repo access diagnosis: |
Troubleshooting
401 Authentication failed —
VENELX_TOKENis missing, wrong, or revoked. Create a new token at Account → API tokens (https://app.venelx.com/account/tokens) and update your MCP config.403 Forbidden on
trigger_build— your token only has thereadscope. Create a token with the write scope.Could not reach the Venelx API (ECONNREFUSED / ENOTFOUND) — the API base URL is unreachable. Check
VENELX_API_URL(defaults tohttps://api.venelx.com) and your network.Nothing happens / no output — MCP servers speak JSON-RPC on stdout; run it through your MCP client, not directly in a terminal. Diagnostics are printed to stderr.
License
MIT
Available Tools
9 toolsbuild_statusA
Get the current build pipeline status per platform plus the 10 most recent builds for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It implies a read-only operation by using 'Get', but does not mention authentication, rate limits, response format, or any side effects. This is acceptable for a seemingly simple status read but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and outcome. Every word contributes to the meaning, with no fluff or redundancy, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and no annotations, the description covers the primary return value (status per platform and 10 recent builds) adequately. It does not explain what 'status' might entail or how to interpret it, but given the simplicity, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the sole parameter (projectId) with a clear description 'Venelx project ID', so the baseline is 3. The tool description does not add any additional meaning about the parameter, such as constraints or how it relates to the per-platform aspect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('current build pipeline status per platform plus the 10 most recent builds') for a project. It is distinct from siblings like trigger_build (trigger action) or list_projects (project enumeration), so an agent can easily tell what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not explicitly state when to use it versus alternatives, nor does it mention any exclusions or preferred contexts. An agent could infer use for status checks, but the lack of explicit routing to siblings like trigger_build or tail_logs leaves some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectA
Get full details for one Venelx project, including a summary of its GitHub access state.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only says 'Get full details' and mentions a 'GitHub access state' summary. It does not mention read-only nature explicitly (though 'get' implies it), error behaviors, authentication requirements, rate limits, or any side effects. The description relies on the verb to convey safety, which is insufficient for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the core action ('Get full details') and then adds the additional relevant detail about GitHub access state. There is no fluff or redundancy, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool, the description adequately conveys what the tool returns ('full details' and 'GitHub access state summary'), but it does not mention possible failure modes, required permissions, or how the projectId is obtained. Given the absence of annotations and output schema, a bit more context (e.g., error handling) would improve completeness, but the current level is acceptable for a straightforward get operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the single parameter 'projectId' with a clear description ('Venelx project ID'). Since schema coverage is 100%, the baseline is 3. The description does not add any additional meaning beyond what the schema already provides, so it stays at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and a specific resource ('full details for one Venelx project'), and adds a distinguishing detail ('including a summary of its GitHub access state'). This distinguishes it from siblings like list_projects (which lists multiple projects) and github_access (which may focus solely on access details). An agent can easily tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single project's complete details, which is implicitly different from list_projects. However, it does not explicitly mention alternatives or when not to use this tool (e.g., 'for multiple projects use list_projects'). The context is clear but not explicit enough to fully guide an agent's decision among several similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_accessB
Diagnose GitHub repository access for a project: githubAccess {ok, reason, message} and the githubAuth credential source label.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return structure but does not state whether the operation is read-only, requires authentication, makes network calls, or what side effects (if any) occur. The label of the credential source hints at an auth dependency, but that is under-explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loading the purpose and including the return structure. It is concise with no filler, though the literal format string ('githubAccess {ok, reason, message}') could be clearer to an agent unfamiliar with the notation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and no output schema, the description provides a basic overview of the return fields (ok, reason, message) and the credential label. However, it does not explain the meaning of these fields or how to interpret them, leaving some ambiguity for an agent deciding how to act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes projectId with 100% coverage. The description adds no extra semantic meaning beyond what the schema provides; it simply repeats 'for a project'. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Diagnose') and resource ('GitHub repository access for a project'), and even previews the return shape. It is clearly distinct from sibling tools like list_projects or build_status, which are about listing or building rather than access diagnosis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It does not mention situations where one might prefer get_project or another sibling. An agent must infer the tool's applicability solely from its purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artifactsC
List build artifacts (installable binaries etc.) for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden of behavioral disclosure, yet it only restates the operation. It doesn't mention return format, ordering, whether results are paginated, or what artifact types are included beyond 'installable binaries etc.'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. The '(installable binaries etc.)' parenthetical is slightly loose but does not add meaningful bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param, no output schema, no nested objects), so the description covers the basic contract. However, for a read operation with zero annotation coverage, it is thin on what the caller receives and how it relates to build_status or trigger_build.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — the sole parameter projectId is already described as 'Venelx project ID' in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 for full coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') plus resource ('build artifacts') scoped to a project, which is clear and distinguishable from siblings like trigger_build and build_status. The qualifier '(installable binaries etc.)' slightly dilutes precision but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus list_projects, build_status, or signing_status. The only context is 'for a project', which implies a relationship to build outcomes but never explicitly routes the agent away from alternatives or states prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List all Venelx projects the API token can access (id, name, GitHub URL, platforms, role).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It states the list is limited to projects 'the API token can access', which is a useful permission constraint, and enumerates the returned fields, giving the agent a clear expectation of the output shape. It does not explicitly state read-only status, but 'List' inherently implies a non-mutating operation, and no other behavioral caveats are necessary for a simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the action ('List all Venelx projects...') and then lists the returned fields. There is no waste or redundancy, and every word contributes to utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation with no parameters and no output schema, the description covers the essentials: scope ('all accessible'), permission constraint ('the API token can access'), and the exact return fields. Nothing critical is missing for an agent to invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description needs no parameter information. The schema is trivially complete with 100% coverage, and the description correctly avoids fabricating parameter details, yielding the baseline score for a 0-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'List' and resource 'Venelx projects', and clarifies it returns all accessible projects with specific fields (id, name, GitHub URL, platforms, role). The 'all' qualifier distinguishes it from the sibling tool get_project, which is singular, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for listing all projects, which is a clear usage context, and the sibling get_project suggests an alternative for a single project. However, it does not explicitly mention alternatives or provide exclusions, so it lacks the explicit routing seen in higher-scoring descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workersA
List the build workers owned by the current account (name, status, capabilities).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'List' which implies a read-only operation, but does not explicitly mention authentication needs, pagination, or side effects. It does add that workers are scoped to the current account, which is useful context. However, the description is minimal and does not go beyond the obvious behavior of a listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and scope, followed by a parenthetical list of returned fields. No wasted words. Structure is optimal for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (0 params, no output schema), the description is fairly complete. It tells the agent what data will be returned (name, status, capabilities), which substitutes for an output schema. It omits any mention of pagination or error conditions, but for a simple list operation this is acceptable. It does not cover potential 'when to use' alternatives, which is captured under usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema reflects that with an empty properties object. Per the rubric, a baseline of 4 applies when there are no parameters to document. The description adds no parameter information because none exist, but it still clarifies the output fields, which is slightly beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('List'), a resource ('build workers'), and a scope ('owned by the current account'). It also specifies the returned fields (name, status, capabilities), which differentiates it from siblings like list_projects that target a different resource. Purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. While the purpose implies use for inspecting workers, there is no mention of when not to use it or how it relates to siblings like list_projects or get_project. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signing_statusB
Check code-signing readiness for a project. Optionally filter by platform ("ios" or "android").
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Platform to check; omit to check all platforms | |
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says 'check' which implies a read-only operation, but it does not explicitly confirm non-mutation, describe the output structure (e.g., per-platform readiness, overall status), or mention edge cases like missing certificates or platform unavailability. Without annotations, this lack of detail is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary purpose and then mentions the optional filter. Every word earns its place, and it is immediately scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description is adequate but incomplete. It explains the purpose and platform filter, but lacks context on what 'code-signing readiness' entails, what the response looks like, and when an agent would prefer this over sibling tools. Given the simplicity, it does not fully equip an agent to interpret the result or handle errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (projectId and platform) are already documented with descriptions. The description adds minimal value by restating the platform filter ('Optionally filter by platform'), but it does not provide deeper semantics (e.g., acceptable values for projectId format or how the filter affects output). Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check code-signing readiness for a project.' This clearly distinguishes it from siblings like build_status or trigger_build, which relate to builds rather than signing. However, 'code-signing readiness' could be more explicitly defined (e.g., whether it involves certificate checks or provisioning), but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It mentions optional platform filtering but gives no guidance on prerequisites, typical scenarios, or when not to use it (e.g., if a build is needed, trigger_build might be more appropriate). The purpose is clear enough that an agent could infer usage, but explicit routing is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tail_logsA
Return the last N lines of a build log. If buildId is omitted, the most recent build of the project is used.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Number of log lines to return (default 100) | |
| buildId | No | Build history ID; defaults to the latest build | |
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behavioral trait of defaulting to the latest build, but it does not mention error handling, permissions, or any side effects. Since it is a read-only operation ('Return'), the core behavior is clear, but additional safety or failure-mode context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and includes the key default behavior. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only log tail tool with a fully documented schema and no output schema, the description is sufficiently complete. It covers the core function and default behavior. Additional details like output format or error cases would be nice but are not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented (e.g., lines default 100, buildId defaults to latest). The description does not add meaning beyond what the schema provides; it merely restates the defaults. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Return the last N lines of a build log') with a specific verb and resource. It distinguishes itself from sibling tools like trigger_build or build_status by focusing on log content, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: it is for reading log lines from a build. It mentions the default behavior when buildId is omitted, which helps agents know when to use it. However, it does not explicitly contrast with sibling tools or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_buildA
Trigger a CI/CD build for a project on a platform (e.g. "ios" or "android"). Requires an API token with the write scope. Returns jobId/status/message; a skipped build includes a skipReason (e.g. signing_not_ready, github_token_invalid).
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Build platform / flow id, e.g. "ios" or "android" | |
| projectId | Yes | Venelx project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the required write scope, the return format (jobId/status/message), and the special case of skipped builds with skipReason. It also implies async behavior via jobId. While it doesn't detail all failure modes, it covers the most relevant behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence with no wasted words. It leads with the action, then prerequisites, then return shape, and finally the skip case. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters and no output schema, the description sufficiently explains the return values and the skip scenario. It lacks detailed error handling info, but that is not essential given the return structure and permission note. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already described in the input schema. The description merely repeats the platform examples without adding new meaning, such as relationships or format constraints. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Trigger a CI/CD build for a project on a platform' – a specific verb and resource. It distinguishes from siblings like build_status by focusing on initiation rather than status. The examples of platforms add context without confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use (to start a build) and provides a prerequisite ('Requires an API token with the write scope'), but it does not explicitly mention alternatives or when not to use it. Given sibling names like build_status, the usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
build_status - First observed
get_project - First observed
github_access - First observed
list_artifacts - First observed
list_projects - First observed
list_workers - First observed
signing_status - First observed
tail_logs - First observed
trigger_build
TDQS
Scored across 9 tools
Each tool targets a distinct operation: listing vs. fetching details, triggering builds vs. checking status, tailing logs, listing artifacts/workers, and checking signing/access readiness. There is no overlap between tools, so an agent can reliably select the right one.
Tools generally follow a verb_noun pattern (list_projects, get_project, trigger_build, tail_logs). A few status-oriented tools use noun-only names (build_status, signing_status, github_access), but the style is uniformly snake_case and predictable, with only minor deviation from the strict verb-first convention.
With 9 tools, the surface is well-scoped for a CI/CD and project management server. Each tool addresses a clear need (listing, detail, build, logs, artifacts, workers, readiness checks) without redundancy or bloat.
The core CI/CD lifecycle is covered: listing projects, getting details, triggering builds, checking status, fetching logs, and retrieving artifacts. Notable gaps include build cancellation and artifact download endpoints, but these are minor and likely handled externally; the main workflows are complete.
Maintenance
Related MCP Connectors
Agentic CI operations for build inspection, failure diagnosis, and runner troubleshooting.
Inspect and control your Northflank projects, services, jobs, and builds from your AI assistant.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Jenkins CI/CD systems for build management, job monitoring, console log analysis, and debugging through natural language commands.2MIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with the Vercel REST API to manage projects, deployments, domains, environment variables, and teams through natural language commands.-
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to query and manage GoCD pipelines, stages, and jobs through the Model Context Protocol. It allows users to trigger builds, analyze failures, and access build logs or artifacts using the GoCD REST API.31 npm2MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Jenkins CI/CD servers, including checking build status, triggering builds, and retrieving build logs.8MIT