Imperal MCP
PYPI · IMPERAL-MCP
Build, validate, smoke-test & deploy Imperal declarative IR apps from any LLM or agent.
Available components
Last scanned (5 hours ago)
Scores higher than 56% of PyPI servers
Category CI/CD and DevOps
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 Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 30 dependencies flagged as unhealthy. 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 (GPL-3.0-only).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability42
- 20% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (fair).Partial
- Tool/resource definitions use about 3182 tokens (~83/item across 38 items; 34 tools + 4 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management47
- Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage67
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 36 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
Checks we ran (15)
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Checks we could not complete (1)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Malware scan in Supply Chain SecurityMalware scan not yet available for this package.
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
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.
- 5 Nov 26 −14
- Malware scan: pass → unverified ▼ security
- 4 Nov 26 0
- Provenance: fail → unverified ▼ security
- Package version: 0.8.14 → 0.9.1 functional
- Package version: 0.8.14 → 0.9.0 functional
- Package version: 0.8.14 → 0.8.15 functional
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +16
- Provenance: fail → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Package version: 0.8.12 → 0.8.14 functional
- 29 Oct 26 +11
- Malware scan: pass → unverified ▼ security
- Injection markers: unverified → pass ▲ security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → 20 ▲ functional
- Stability: unverified → 0.23 ▲ functional
- 28 Oct 26 −10
- Tool safety: pass → unverified ▼ security
- Stability: 0.17 → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Schema quality: 20 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.8.11 → 0.8.12 functional
- 27 Oct 26 0
- Package version: 0.8.10 → 0.8.11 functional
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 pypi/imperal-mcp@0.9.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | Known build tool | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 30 packages
| Packages resolved | 30 |
|---|---|
| No linked repository | 1 |
| 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 →
check_syntax Check Syntax (Tree-sitter) ~35
Fast local tree-sitter syntax validation of a source file after editing.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
| root | – | – | – |
No output schema declared.
No examples provided.
checkpoint ShadowGit Checkpoint ~39
Capture an instant, invisible ShadowGit snapshot of the workspace without touching the user's real .git history.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | – | – |
| root | – | – | – |
No output schema declared.
No examples provided.
checkpoint_diff ShadowGit Checkpoint Diff ~38
Show a unified diff between the current workspace state and a ShadowGit checkpoint.
| Name | Type | Req | Description |
|---|---|---|---|
| paths | – | – | – |
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
checkpoint_rollback ShadowGit Checkpoint Rollback ~38
Restore the workspace to a previous ShadowGit checkpoint (an auto-safety snapshot is taken first).
| Name | Type | Req | Description |
|---|---|---|---|
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
coding_context Workspace Coding Context ~33
Project file tree and git status snapshot (respecting .gitignore and pruning heavy build/vendor directories).
| Name | Type | Req | Description |
|---|---|---|---|
| root | – | – | – |
No output schema declared.
No examples provided.
contract_slice Contract Slice ~44
Return the endpoints and route links across the user's repos, plus the given symbols with their callers.
| Name | Type | Req | Description |
|---|---|---|---|
| root | – | – | – |
| symbols | array | yes | – |
| target | – | – | – |
No output schema declared.
No examples provided.
deploy_ir Deploy IR ~42
Deploy an app.ir.json into the caller's account (creates the app record if needed).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | – |
| app_ir | object | yes | – |
No output schema declared.
No examples provided.
frame Frame ~89
The kernel's step frame for your work (the same frame a Webbee step gets): your task and plan with what is proven, the code around your focus from the exact graph, what your change reaches, the world, your path. Call it FIRST -- at the start and after each change -- before your shell's own search and read tools.
| Name | Type | Req | Description |
|---|---|---|---|
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
get_app Get App ~73
One app: what it is and its callable tools (name, action_type, what it does) -- the run_read_tool / run_write_tool ``function`` names; full=true gives the raw record with the whole manifest (PII-masked).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | – |
| full | boolean | – | – |
No output schema declared.
No examples provided.
graph_slice Call Graph Slice ~54
Return definition locations, signatures, direct callers, and callees for a batch of symbols from the code graph.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | integer | – | – |
| root | – | – | – |
| symbols | array | yes | – |
| target | – | – | – |
No output schema declared.
No examples provided.
grep_code Grep Code ~97
An exact text (or regex) inside the code -- a string in a function body the symbol search does not index. `target`: local (default), ssh:<connection_id> or host:<alias> with `root` = the repo path there.
| Name | Type | Req | Description |
|---|---|---|---|
| k | integer | – | – |
| path_glob | – | – | – |
| pattern | string | yes | – |
| regex | boolean | – | – |
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
impact_of_change Impact of Change ~78
Given symbols you plan to modify, return the files and call sites that depend on them (code first, tests after, uses inside the same file listed apart). Bounded to the first entries with their totals unless full=true.
| Name | Type | Req | Description |
|---|---|---|---|
| full | boolean | – | – |
| root | – | – | – |
| symbols | array | yes | – |
| target | – | – | – |
No output schema declared.
No examples provided.
list_apps List Apps ~20
List the caller's developer apps (PII-masked).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
live_sessions Live Sessions ~123
The user's OTHER sessions active in the last ``minutes`` -- Webbee in a terminal, another shell through imperal-mcp, the panel, Telegram: each with its surface, when it last moved, and its last request, steps and answer, and the newest steps of a turn still running; recall(ref, conversation=...) opens any message whole, state_lens(conversation=...) its state. Read-only, on request: nothing of another session enters your frame by itself.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| minutes | integer | – | – |
No output schema declared.
No examples provided.
message_session Message Session ~121
Write to another session of the user that is working now (``live_sessions`` names them -- Webbee in a terminal, another shell): a finding to check, a question, what you are doing so you do not both do it. It reads your words as an AGENT's, never the user's: a message approves nothing and changes no task -- decisions and releases stay the user's. Its answer comes back in your frame as an AGENT MESSAGE. The user sees both.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation | string | yes | – |
| text | string | yes | – |
No output schema declared.
No examples provided.
orient Orient on Task ~91
One-call orientation for a task: repo profile + top ranked symbols/snippets from the code graph in Imperal's vault. Call FIRST instead of scanning files blind. `target`: local (default), ssh:<connection_id> or host:<alias> with `root` = the repo path there.
| Name | Type | Req | Description |
|---|---|---|---|
| k | integer | – | – |
| query | string | yes | – |
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
outline Code File Outline ~53
Tree-sitter structural map of a source file (classes, functions, methods, major blocks with exact line ranges). Call before reading large files.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
read_symbol Read Symbol or Span ~64
Read ONE symbol (function, class, Class.method, block name) or line range ('L120-180') from a file without loading the whole file.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| path | string | yes | – |
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
recall Recall ~85
A past request or answer whole (ref = A<seq> / U<seq> / last_answers / all) -- of your session, or of another conversation of yours by its id (``conversation``, as search_history names it).
| Name | Type | Req | Description |
|---|---|---|---|
| conversation | string | – | – |
| n | integer | – | – |
| offset | integer | – | – |
| ref | string | yes | – |
No output schema declared.
No examples provided.
recall_context Recall Cross-Surface Cloud Memory ~75
Retrieve relevant user directives, preferences, and repository notes from Imperal Cloud Memory across Webbee, Telegram, and the Panel.
| Name | Type | Req | Description |
|---|---|---|---|
| include_repo_memory | boolean | – | – |
| include_resolved | boolean | – | – |
| include_user_facts | boolean | – | – |
| limit | integer | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
remember_fact Remember Durable User Fact / Directive ~55
Persist a durable user fact, architectural decision, or standing directive to Imperal Cloud Memory (shared across all surfaces).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| fact | string | yes | – |
| scope | – | – | – |
| tags | – | – | – |
No output schema declared.
No examples provided.
repo_profile Repository Profile ~39
Structured profile of the repository (languages, file count, the most-used definitions) from the code graph.
| Name | Type | Req | Description |
|---|---|---|---|
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
run_read_tool Run Read Tool ~76
Run a READ-only tool of a deployed app (refuses write/destructive). ``function`` is the tool's name as get_app lists it (``tool`` is taken as the same).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | – |
| args | – | – | – |
| function | string | – | – |
| tool | string | – | – |
No output schema declared.
No examples provided.
run_write_tool Run Write Tool ~111
Run a WRITE or DESTRUCTIVE tool of a deployed app. Money tools always go through out-of-band panel approval (never terminal consent or autopilot): re-run this tool after approving in the panel to complete. Write runs directly; destructive requires human consent (elicitation) or session autopilot; read tools are refused (use run_read_tool).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | – |
| args | – | – | – |
| function | string | – | – |
| tool | string | – | – |
No output schema declared.
No examples provided.
save_repo_note Save Durable Repository Note ~45
Save a durable repository convention or architectural note to Imperal Cloud Memory.
| Name | Type | Req | Description |
|---|---|---|---|
| citations | – | – | – |
| note | string | yes | – |
| repo | – | – | – |
| root | – | – | – |
No output schema declared.
No examples provided.
search_code Search Code Graph ~69
Search the code graph: exact names, words and meaning (each hit says how sure it is). Prefer over grep/find.
| Name | Type | Req | Description |
|---|---|---|---|
| k | integer | – | – |
| kind | – | – | – |
| path_glob | – | – | – |
| query | string | yes | – |
| root | – | – | – |
| target | – | – | – |
No output schema declared.
No examples provided.
search_history Search History ~78
Your past conversations that hold ``query`` -- Webbee, the panel, Telegram, other shells' sessions; each hit names its conversation and message, and recall(ref, conversation=...) opens it whole. Nothing of another conversation enters your frame by itself: ask here.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
smoke_ir Smoke-test IR ~50
Run one function of an app.ir.json in an ISOLATED store and report {ok,result,trace}.
| Name | Type | Req | Description |
|---|---|---|---|
| app_ir | object | yes | – |
| args | – | – | – |
| function | string | yes | – |
No output schema declared.
No examples provided.
state_lens State Lens ~106
What the kernel holds for your session, by section (law, plan, reality, memory, conversation, path) -- where the frame's counted lines point. ``conversation``: another session of yours working now (an id live_sessions names, e.g. Webbee's) -- its state, its running turn's steps included.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation | string | – | – |
| focus | string | – | – |
| offset | integer | – | – |
| section | string | – | – |
No output schema declared.
No examples provided.
task Task and Plan ~69
Declare what you were asked and your plan (items: {content, status: pending|in_progress|completed}) -- the kernel's frame holds you to it: an item is proven only by what the kernel measured.
| Name | Type | Req | Description |
|---|---|---|---|
| goal | string | yes | – |
| items | – | – | – |
| root | – | – | – |
No output schema declared.
No examples provided.
token_savings Context Compression Telemetry ~24
Return measured characters and lines returned vs. full-file baseline in this session.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
upload_file Upload Local File ~146
Send a file from THIS machine into Imperal and get its ids back. Read the file straight off disk -- never paste its bytes into a tool call, that is truncated long before it reaches the gateway. Returns {file_id, document_id, filename, size_bytes, status}. To then PLACE that file into any extension (a task attachment, an envelope, a post), call run_write_tool with the sink's own file argument set to {"document_id": <document_id>}: the gateway swaps the reference for the real bytes on the way in, so the file never travels through this conversation.
| Name | Type | Req | Description |
|---|---|---|---|
| name | – | – | – |
| path | string | yes | – |
No output schema declared.
No examples provided.
validate_ir Validate IR ~31
Validate an app.ir.json locally (envelope + every declarative step).
| Name | Type | Req | Description |
|---|---|---|---|
| app_ir | object | yes | – |
No output schema declared.
No examples provided.
vault_log_read Vault Log Read ~59
An output the kernel kept in the vault (ref = vault://logs/...), paged or grepped.
| Name | Type | Req | Description |
|---|---|---|---|
| grep | string | – | – |
| limit | integer | – | – |
| offset | integer | – | – |
| ref | string | yes | – |
No output schema declared.
No examples provided.
How do I install the Imperal MCP server?
Imperal MCP runs locally as a PyPI package, launched with uvx imperal-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · imperal-mcp
claude mcp add imperalcloud-imperal-mcp -- uvx imperal-mcp
What is the Imperal MCP server?
Imperal MCP is listed in the public MCP registry as io.github.imperalcloud/imperal-mcp. Build, validate, smoke-test & deploy Imperal declarative IR apps from any LLM or agent. This page covers its PyPI package (imperal-mcp).
Is the Imperal MCP server safe to use?
Imperal MCP scores 54 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. 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 Imperal MCP server expose?
Imperal MCP exposes 34 tools: validate_ir, smoke_ir, deploy_ir, list_apps, get_app, and 29 more. Their descriptions and schemas cost roughly 2,250 tokens of context every time the server is loaded.
Is the Imperal MCP server still maintained?
Imperal 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 Imperal MCP server under?
Imperal MCP declares the GPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the Imperal MCP server?
VerifyMCP ran 15 checks on Imperal MCP, covering Known CVEs, Install scripts, Dependency health, Source repository and 11 more. One item could not be completed, a gap on our side rather than a finding about Imperal MCP: Malware scan. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.