Axis
NPM · @VIRSANGHAVI/AXIS-SERVER · 2 COMPONENTS · SCANNED SEP 21
Coding agents from Claude Code, Cursor and Codex claim jobs and lock files on one shared board.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain 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 150 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (AGPL-3.0-only).Pass
- Actively maintained (last published 48 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3519 tokens (~121/item across 29 items; 28 tools + 1 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 Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage89
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 66% 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
- We read all 28 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Axis MCP server?
Axis runs locally as an npm package, launched with npx -y @virsanghavi/axis-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 · @virsanghavi/axis-server
claude mcp add dev-useaxis-axis -- npx -y @virsanghavi/axis-server
{
"mcpServers": {
"dev-useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server"
]
}
}
} {
"servers": {
"dev-useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server"
]
}
}
} codex mcp add dev-useaxis-axis -- npx -y @virsanghavi/axis-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-useaxis-axis": {
"type": "local",
"command": [
"npx",
"-y",
"@virsanghavi/axis-server"
],
"enabled": true
}
}
} openclaw mcp add dev-useaxis-axis --command npx --arg -y --arg @virsanghavi/axis-server
mcp_servers:
dev-useaxis-axis:
command: "npx"
args: ["-y", "@virsanghavi/axis-server"] {
"McpServers": {
"dev-useaxis-axis": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@virsanghavi/axis-server"
]
}
}
} assistant mcp add dev-useaxis-axis -t stdio -c npx -a -y @virsanghavi/axis-server
{
"mcpServers": {
"dev-useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.83 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 −3
- Stability: pass → 0.77 functional
- 9 Sept 26 +1
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed npm/@virsanghavi/axis-server@1.14.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 150 packages
| Packages resolved | 150 |
|---|---|
| Deprecated | 1 |
| Stale | 49 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
cancel_job ~50
**KILL TICKET**: Cancel a job that is no longer needed. - Requires `jobId` and a `reason`.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | – |
| reason | string | yes | – |
No output schema declared.
No examples provided.
claim_job ~88
**CLAIM A SPECIFIC TICKET**: Atomically claim a known job by ID. - Prefer this over `claim_next_job` when work has been intentionally assigned or agents have disjoint scopes. - Rejects completed, already claimed, or dependency-blocked jobs.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| jobId | string | yes | – |
No output schema declared.
No examples provided.
claim_next_job ~117
**CLAIM WORK**: Claim the next job from the Job Board before starting it. - You MUST claim a job before editing files for that job. - Respects priority (Critical > High > ...) and dependencies (won't assign a job if its deps aren't done). - Returns the Job object if successful, or 'NO_JOBS_AVAILABLE'. - Call this immediately after posting jobs, and again after completing each job to pick up the next one.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
No output schema declared.
No examples provided.
complete_job ~172
**CLOSE TICKET**: Mark a job as done and release file locks. - Call this IMMEDIATELY after finishing each job — do not accumulate completed-but-unclosed jobs. - Requires `outcome` (what was done). - If you are not the assigned agent, you must provide the `completionKey`. - **This is the primary way to release file locks.** Leaving jobs open holds locks and blocks other agents. - REMINDER: After completing all jobs, you MUST also call `finalize_session` to clear any remaining locks.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| completionKey | string | – | Optional key to authorize completion if not the assigned agent. |
| jobId | string | yes | – |
| outcome | string | yes | – |
No output schema declared.
No examples provided.
finalize_session ~129
**MANDATORY SESSION CLEANUP** — call this automatically when the user's request is fully complete. - Archives the current Live Notepad to a permanent session log. - **Clears ALL active file locks** and completed jobs. This is your safety net to ensure no dangling locks. - Resets the Live Notepad for the next session. - Do NOT wait for the user to say 'we are done.' When all tasks are finished, call this yourself. - **CRITICAL**: You MUST call this before ending ANY session. Failing to do so leaves file locks that block all other agents.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
force_unlock ~65
**ADMIN OVERRIDE**: Break a file lock. - **WARNING**: Only use this if a lock is clearly stale or the locking agent has crashed. - Will forcibly remove the lock from the database.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | – |
| reason | string | yes | – |
No output schema declared.
No examples provided.
get_project_soul ~221
**MANDATORY FIRST CALL**: Returns the project's goals, architecture, conventions, and active state. - Combines `context.md` (project goals/architecture) and `conventions.md` (coding standards/norms) into a single prompt. - You MUST call this as your FIRST action in every new session or task — before reading files, before responding to the user, before anything else. - If the project soul is not yet filled (you'll see a 'MANDATORY: Project soul is not yet filled' message), you MUST fill it before any other work: 1. Use `search_codebase` to explore the repo and infer project details. 2. Call `update_project_soul` with `context` and/or `conventions` params to populate the soul in one call. 3. If there is nothing to search, ask the user what the project is about, then call `update_project_soul`. - Skipping this call means you are working without context and will make wrong decisions.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_shared_context ~83
**READ THE LIVE NOTEPAD**: Return the current shared notepad for this project — the team's short-term working memory (claims, decisions, blockers, handoffs). - Use to catch up on what other agents did without waiting for the ambient team-activity trailer. - Same shape as the hosted get_shared_context tool: { notepad, projectName }.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_subscription_status ~88
**BILLING CHECK**: Returns the user's subscription tier (Pro vs Free), Stripe customer ID, and current period end. - If no email is provided, returns the subscription status of the current API key owner. - Critical for gating features behind paywalls.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Optional. User email to check. If omitted, checks the subscription of the current API key owner. |
No output schema declared.
No examples provided.
get_usage_stats ~76
**API USAGE**: Returns token usage and request counts. - If no email is provided, returns usage for the current API key owner. - Useful for debugging rate limits or explaining quota usage to users.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Optional. User email to check. If omitted, checks usage of the current API key owner. |
No output schema declared.
No examples provided.
guarded_write ~136
**ENFORCED WRITE**: Write a file *through* your lock. The server writes only if you hold the lock AND the file is unchanged since you locked it — otherwise it returns NO_LOCK, DENIED (held by another agent), or CONFLICT (changed underneath you). Use this instead of a raw editor when you want Axis to actually *prevent* clobbering, not just detect it. Refreshes the lock's fingerprint on success.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| content | string | yes | Full new file contents. |
| filePath | string | yes | – |
No output schema declared.
No examples provided.
index_codebase ~142
**INDEX THE REPO FOR SEARCH**: Walk the project, content-hash every file, and sync changed files into the searchable index so `search_codebase`/`deep_search` work and stay fresh. - Incremental: unchanged files are skipped (no re-embedding), deleted files are pruned. Safe and cheap to run often. - Run this once to set up search on a new project, and after large changes (e.g. a git pull) to refresh. Single-file edits are picked up by `index_file`. - Respects .gitignore and skips binaries/large files. Takes no arguments — it indexes the current project root.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
index_file ~150
**UPDATE SEARCH INDEX**: Add or refresh a single file in the RAG vector database. - Call this immediately after creating a new file or significantly refactoring an existing one — keeps `search_codebase` results fresh. - Only `filePath` is required. If you omit `content`, the server reads the file from disk itself — preferred, since it avoids round-tripping large file bodies through the tool call. - Pass `content` explicitly only when indexing material that doesn't live on disk (e.g. in-memory generated source).
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | Optional. Omit to have the server read filePath from disk. |
| filePath | string | yes | Absolute or project-relative path. |
No output schema declared.
No examples provided.
list_agents ~77
**WHO'S ONLINE**: List agents currently active or idle on this project. - Use to see your team before posting jobs — idle workers started early show up here, so you don't have to make the user wait for jobs before launching agents. - Returns each agent's status (active/idle), last activity, and last-seen time.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_jobs ~66
**INSPECT THE JOB BOARD**: Return all current jobs with status, priority, owner, dependencies, and timestamps. - Use before dividing work across agents or when you need to claim a specific ticket.
| Name | Type | Req | Description |
|---|---|---|---|
| includeCompleted | boolean | – | Include done and cancelled jobs. Default: false. |
No output schema declared.
No examples provided.
list_locks ~43
**INSPECT ACTIVE LOCKS**: Return current file locks, owners, intents, and timestamps. - Call before planning overlapping work or when a lock conflict needs coordination.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
post_job ~139
**CREATE TICKET**: Post a new task to the Job Board. - Call this IMMEDIATELY when you receive a non-trivial task (2+ files, new features, refactors). Do not wait to be asked. - Break work into trackable jobs BEFORE you start coding. - Supports `dependencies` (list of other Job IDs that must be done first). - Priority: low, medium, high, critical.
| Name | Type | Req | Description |
|---|---|---|---|
| dependencies | array | – | Array of Job IDs that must be completed before this job can be claimed. |
| description | string | yes | – |
| priority | string | – | – |
| title | string | yes | – |
No output schema declared.
No examples provided.
propose_file_access ~347
**CRITICAL: REQUEST FILE LOCK** — call this before EVERY file edit, no exceptions. - Returns `GRANTED` if safe to proceed, `REQUIRES_ORCHESTRATION` if another agent holds the lock, or `REJECTED` if you tried to lock a directory. - **Lock individual files, not directories.** Directory locks block parallel work and are rejected. - Paths can be absolute or relative — they're normalized against the project root. - Required: `intent` (descriptive — 'Refactor auth to use JWT', NOT 'editing file') plus `filePath` or `filePaths`. `agentId` is optional (defaults to your session identity). - Editing several files? Pass `filePaths` to lock them in ONE call — all-or-nothing, so a partial batch never blocks others. - Locks expire after 30 minutes. Use `force_unlock` only as a last resort for crashed agents. - **Every lock MUST be released.** `complete_job` releases the locks for that job; `finalize_session` releases everything. Dangling locks block all other agents.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| filePath | string | – | One file to lock. Use `filePaths` instead for a multi-file batch. |
| filePaths | array | – | Lock several files in one call (all-or-nothing: on any denial, locks granted earlier in the batch are released). |
| intent | string | yes | – |
| userPrompt | string | – | Optional. The user prompt that triggered this lock, for audit trails. Server captures it best-effort if omitted. |
No output schema declared.
No examples provided.
read_context ~128
**READ THIS FIRST** to understand the project's architecture, coding conventions, and active state. - Returns the content of core context files like `context.md` (Project Goals), `conventions.md` (Style Guide), or `activity.md`. - Usage: Call with `filename='context.md'` effectively. - Note: If you need the *current* runtime state (active locks, jobs), use the distinct resource `mcp://context/current` instead.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | The name of the file to read (e.g., 'context.md', 'conventions.md') |
No output schema declared.
No examples provided.
release_file_access ~93
**RELEASE YOUR LOCK**: Release one file lock as soon as you no longer need it. - Use this before a job is complete when another agent can safely continue on the file. - Only the owning agent can release the lock; use `force_unlock` only for a crashed agent.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| filePath | string | yes | – |
No output schema declared.
No examples provided.
release_job ~138
**RELEASE TICKET**: Put an abandoned in_progress job back on the board without cancelling it. - Use when another agent claimed a job and went silent — the job returns to 'todo' so anyone can pick it up. - Guarded: refuses if the assigned agent still looks active; pass `force: true` to override deliberately. - Parity with the hosted release_job tool.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity; recorded as the releaser. |
| force | boolean | – | Release even if the assigned agent looks active. Default: false. |
| jobId | string | yes | – |
No output schema declared.
No examples provided.
search_codebase ~172
**CODE INTELLIGENCE SEARCH** — does what plain grep can't: returns ranked `file:line` hits PLUS `related` files that historically co-change with each hit, PLUS `definitions` of what the top result calls. - Use for 'where is X', 'how is Y done', anything before refactoring, and any time you need to know what code is structurally connected to a match (not just textually present). - Hybrid: semantic + full-text + trigram, reranked. Falls back to instant local search offline. - For pure literal-string lookups (a specific token or filename), grep is fine — this tool's edge is the related/definitions enrichment.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Natural-language question or code query (symbol, behavior, or 'where is X done'). |
No output schema declared.
No examples provided.
search_docs ~71
**DOCUMENTATION SEARCH**: Searches the official Axis documentation (if indexed). - Use this when you need info on *how* to use Axis features, not just codebase structure. - Falls back to local RAG search if the remote API is unavailable.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Natural language search query. |
No output schema declared.
No examples provided.
switch_project ~93
**SWITCH PROJECT**: Rebind the live MCP session to another workspace without reconnecting. - Use this when you move from one repository to another inside the same client session. - If `projectRoot` is omitted, the server re-detects from the current runtime hints.
| Name | Type | Req | Description |
|---|---|---|---|
| projectName | string | – | Optional explicit project name override. |
| projectRoot | string | – | Absolute path to the target repository root. |
No output schema declared.
No examples provided.
update_context ~193
**APPEND OR OVERWRITE** any shared context file. - To update the project soul (context.md / conventions.md), prefer `update_project_soul` instead — it handles both files in one call. - Use this tool for other context files (e.g., `activity.md`) or when you need to append to a file. - For short-term updates (like 'I just fixed bug X'), use `update_shared_context` (Notepad) instead. - Supports `append: true` (default: false) to add to the end of a file.
| Name | Type | Req | Description |
|---|---|---|---|
| append | boolean | – | Whether to append to the end of the file (true) or overwrite it (false). Default: false. |
| content | string | yes | The new content to write or append. |
| filename | string | yes | File to update (e.g. 'activity.md'). For soul files, prefer update_project_soul instead. |
No output schema declared.
No examples provided.
update_project_soul ~193
**UPDATE THE PROJECT SOUL** — write project context and/or conventions in a single call. - The project soul consists of `context.md` (goals, architecture, core features) and `conventions.md` (coding standards, agent norms). - Provide `context` to update `context.md`, `conventions` to update `conventions.md`, or both. - Use this when `get_project_soul` says the soul is unfilled, or whenever you need to update long-term project knowledge. - This replaces the file contents entirely (not append). For appending, use `update_context` instead.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | – | Full content for context.md (project overview, architecture, core features, deployment). Omit to leave unchanged. |
| conventions | string | – | Full content for conventions.md (language standards, styling, code patterns, agent norms). Omit to leave unchanged. |
No output schema declared.
No examples provided.
update_shared_context ~105
**LIVE NOTEPAD**: The project's short-term working memory. - **ALWAYS** call this after completing a significant step (e.g., 'Fixed bug in auth.ts', 'Ran tests, all passed'). - This content is visible to *all* other agents immediately. - Think of this as a team chat or 'standup' update.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| text | string | yes | – |
No output schema declared.
No examples provided.
verify_file_lock ~124
**TAMPER CHECK BEFORE WRITING**: Confirm a file you hold a lock on hasn't changed since the lock was granted. - Locks are advisory — another process can still edit the file. Call this right before overwriting to avoid clobbering concurrent changes. - Returns `OK` (unchanged), `CONFLICT` (modified/deleted — re-read before writing), `NO_LOCK`, or `UNKNOWN` (no fingerprint recorded).
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Optional — defaults to this session's unique identity. |
| filePath | string | yes | – |
No output schema declared.
No examples provided.
What is the Axis MCP server?
Axis is an MCP server listed in the public MCP registry as dev.useaxis/axis. Coding agents from Claude Code, Cursor and Codex claim jobs and lock files on one shared board. This page covers its npm package (@virsanghavi/axis-server).
Is the Axis MCP server safe to use?
Axis scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. 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 Axis MCP server expose?
Axis exposes 28 tools: read_context, update_context, get_subscription_status, get_usage_stats, search_codebase, and 23 more. Their descriptions and schemas cost roughly 3,499 tokens of context every time the server is loaded.
Is the Axis MCP server still maintained?
Axis is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Axis MCP server under?
Axis declares the AGPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.