Asl3 Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Asl3 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.
A small, client-neutral MCP interface to the ASL3 Remote Platform.
allstar-mcp does not control Asterisk or app_rpt directly. It translates nine semantic MCP tools into the ASL3-API v1 REST contract. Authentication, authorization, traffic policy, dispatch serialization, durable operations, idempotency, verification, and radio safety remain authoritative in asl3-api.
No particular AI model, desktop client, or personal assistant is required.
MCP client | | stdio v allstar-mcp | | authenticated HTTP v asl3-api | | AMI on localhost v Asterisk / app_rpt
The remote-network product is the REST API. The MCP server listens on stdio only in v0.2.0.
The MCP implementation uses the official Model Context Protocol Python SDK, pinned to mcp==2.2.0.
Set the API endpoint and credential, then run the stdio server:
export ALLSTAR_API_URL=http://127.0.0.1:8073 export ALLSTAR_API_KEY='your-api-key' uvx allstar-mcp
ALLSTAR_API_URL defaults to http://127.0.0.1:8073.
For a remote node, connect to asl3-api through the protected transport recommended by that project, such as Tailscale, WireGuard, or a TLS reverse proxy. Do not expose Asterisk AMI for MCP clients.
Any MCP client that can launch a stdio server can use the same command and environment variables. Client-specific configuration formats belong in the client's own documentation.
Exactly nine tools are exposed.
| Tool | Purpose |
|---|---|
| health_check | API reachability, auth, AMI health, and backend-contract compatibility |
| get_node_state | Fresh native node state with explicit unknown/incomplete evidence |
| lookup_node | Public directory metadata for a canonical AllStar node number |
| get_recent_operations | Recent durable control operations |
| get_operation_status | One durable operation by operation ID |
| Tool | Purpose |
|---|---|
| announce | Request identify or status |
| link_node | Link one node in transceive or monitor mode |
| unlink_node | Remove one exact direct link, including a permanent link |
| unlink_all | Remove all direct links, including permanent links |
There are no generic REST, AMI, COP, shell, DTMF, macro, force, emergency, confirmation, dry-run, QSO-bypass, or arbitrary-command tools.
There are also no MCP resources, prompts, Tasks, or remote MCP listener in this release.
Control tools do not return a simplistic success=true.
ASL3-API creates a durable operation and tracks separate dispatch and observed effect states. MCP returns that operation unchanged inside a small envelope containing the idempotency key and operation document.
Call get_operation_status to learn what happened later.
STATE_UNKNOWN or UNKNOWN evidence is never converted into false, and OUTCOME_UNKNOWN is never converted into success or failure.
Each control tool invocation:
The MCP adapter has no automatic control retry loop and configures the HTTP transport with retries disabled.
If the control response is lost, the tool returns CONTROL_RESPONSE_UNCERTAIN, the key used for that logical attempt, and retried=false. It does not issue a second radio operation.
A received ASL3-API problem response is preserved with its stable code and detail. API credentials are redacted from surfaced errors.
Before any control request, the adapter checks /v1/capabilities for the contract it depends on:
An incompatible backend blocks MCP control. Read-only tools remain available when they can be used safely.
This is compatibility checking, not radio policy. Traffic eligibility and other operator policy remain protected inside asl3-api and cannot be weakened by MCP arguments.
Controllable AllStar node targets must match:
^[1-9][0-9]{0,5}$
That means 1 to 6 ASCII decimal digits, with no leading zero, whitespace, Unicode digits, signs, shorthand, or sentinel values.
Directory lookup is informational. A private/static node can still be a valid target even if it is absent from the public directory.
python3 -m venv .venv .venv/bin/pip install -e '.[dev]' .venv/bin/ruff check src/ tests/ .venv/bin/pytest -q
The tests use httpx.MockTransport and the official MCP SDK. They do not access a live AllStar node or issue radio commands.
CI runs on Python 3.10 and 3.13, lints, tests, and builds the package.
allstar-mcp is intentionally not the safety boundary.
It has no AMI credentials and cannot:
MCP tool annotations are client hints only. ASL3-API remains authoritative.
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.