# AILANG Executor

> Write, type-check and run AILANG in a sandbox, with Z3-proved contracts and docs search.

- name: io.github.sunholo-data/ailang-executor
- version: 0.60.4
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 94/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.sunholo-data%2Failang-executor
- tools: https://api.protogrid.dev/v1/servers/io.github.sunholo-data%2Failang-executor/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ailang-executor": {
      "type": "http",
      "url": "https://executor.ailang.sunholo.com/mcp/connect/"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-1d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 29 of 29 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,014 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 29, about 3,014 tokens to load them all
- tool set hash: 680e1ff9099f8d49d18c632c1e68eb1b
- tools last changed: 2026-11-13T10:43:44.616Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.sunholo-data/ailang-executor.svg)](https://protogrid.dev/servers/io.github.sunholo-data/ailang-executor)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `submit_feedback` changed (description, inputSchema) **meaning changed**
  - before: Anonymous bug report / feature request / docs gap, queued for human review. Default routing: `public-feedback` inbox (general AILANG). Pass `package="vendor/name"` (e.g. "sunholo/auth") to route to that package's `pkg:vendor/name` inbox where its autonomous agent watches. Categories: bug, feature, docs, limitation. Body limit 10KB, snippet limit 4KB. Optional contact field for follow-up; opaque to the server. Set `auto_dispatch=true` to authorize the package agent to act on your submission immediately (default false — files for human triage; pkg-feedback agent template lands in a separate sprint).
  - after: Send a bug report, feature request, documentation gap or limitation about AILANG to the AILANG team. Use it only when the user asks to report something, and leave out personal or confidential information. Categories: bug, feature, docs, limitation. Body up to 10 KB, snippet up to 4 KB. `contact` is optional, for a reply. `package` (vendor/name) sends the report to that AILANG package's maintainers instead. Returns a ticket ID.
- 2026-11-13 `onboarding_guide` changed (description) **meaning changed**
  - before: Stepwise onboarding flow for using AILANG. role: "agent" (AI coding agent flow, default) | "developer" (human dev flow) | "" (returns both) For v1 returns the full guide; client picks the relevant role. v2 may filter on AILANG side once we have proper record-projection helpers.
  - after: Step-by-step guide to getting started with AILANG, for an AI coding agent and for a human developer. role: "agent" | "developer" | "" (both). The guide for both roles is returned whatever role says; pick the part you need.
- 2026-11-13 `executor_whoami` changed (description) **meaning changed**
  - before: The signed-in account, as the gate verified it. Served only on the gated /mcp/connect/; the client cannot supply or forge _auth.
  - after: Which account this connection is signed in as (its user ID) and which app connected it (for example claude.ai or chatgpt.com).
- 2026-11-13 `docs_search` changed (description) **meaning changed**
  - before: Full-text search across doc Markdown for the given version. Filters server-side on lowercased body + title; returns the top 10 matches, docs pages before archived teaching prompts (prompts/v*.md match almost any query), each as path, title, its first 10 headings and an excerpt around the match: the full page is a docs_nav / example_get away. Whole bodies made one search ~30 KB, too much for a tool result in a listed connector.
  - after: Full-text search of the AILANG documentation for a version (case-insensitive, on page titles and text). Returns the top 10 matches, docs pages before archived teaching prompts, each with its path, title, first 10 headings and an excerpt around the match.
- 2026-11-13 `docs_nav` changed (description) **meaning changed**
  - before: Sidebar tree as JSON. Replaces scraping the Docusaurus sidebar. Version-scoped: snapshot of that release's docs site nav.
  - after: The AILANG docs site's navigation tree for a version, as JSON: section and page titles with their paths.

Full history: https://api.protogrid.dev/v1/servers/io.github.sunholo-data%2Failang-executor/changes

## Remotes

- https://executor.ailang.sunholo.com/mcp/connect/ (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (29)

- `ailang_builtins`: List AILANG builtin functions with documentation, grouped by module.
`search` filters lines case-insensitively; empty returns everything.
- `ailang_check`: Type-check AILANG source. `code` is a whole module; the module line may be
omitted or be `module main`. Returns the ai-check JSON report on stdout:
check.passed and check.errors (with locations and fixes), and verify: each
function's requires/ensures proved with Z3 (verify.results: verified,
counterexample with a witness, or inconclusive after 5s per function).
Only `pure` functions (or `! {}`) are proved; others report skipped/NOT_PURE.
`verification` names the overall result; "unavailable" means this server
had no solver, so the code was type-checked only and its contracts were not
proved (prove them locally with `ailang verify`).
- `ailang_eval`: Evaluate one pure AILANG expression and print it with show(). Builtins are
in scope; for stdlib functions (map, filter, ...) use ailang_run with
explicit imports.
- `ailang_prompt`: Call this FIRST: the AILANG teaching prompt (syntax rules, templates,
stdlib map). AILANG is not in your training data the way Python is; code
written without this prompt rarely type-checks.
- `ailang_run`: Run AILANG source in the hosted sandbox. Entry point is `main`, with no
arguments. Only the IO capability is granted (println works; FS, Net,
Process, Env and AI are refused by name before the program starts), and the
run is killed at the policy timeout. stdout is the program's output; stderr
carries the policy decision JSON.
- `ailang_versions`: List all AILANG versions the server can answer for.
- `benchmark_run`: One run's full result (code, compile_ok, runtime_ok, stdout_ok, cost, tokens).
- `benchmarks_compare`: Pairwise model comparison.
Output: {a_only_passes, b_only_passes, both, neither}
- `benchmarks_for_model`: Where does a given model pass/fail? Optional version filter.
Output: {passes: [...], fails_by_category: {...}, total_cost}
- `benchmarks_list`: List benchmark suites and runs, optionally filtered to a since_version cutoff.
- `changelog_for_version`: What changed in a given release (added/changed/fixed/breaking).
- `design_doc`: Full design doc by slug (e.g. "m-agent-mcp-website").
- `design_docs_list`: List planned/implemented/rejected design docs, optionally filtered by version.
state = "planned" | "implemented" | "rejected" | ""; empty = all.
- `docs_nav`: The AILANG docs site's navigation tree for a version, as JSON: section and
page titles with their paths.
- `docs_search`: Full-text search of the AILANG documentation for a version (case-insensitive,
on page titles and text). Returns the top 10 matches, docs pages before
archived teaching prompts, each with its path, title, first 10 headings and
an excerpt around the match.
- `effects_catalog`: All declared effects with capability mapping and the version they appeared in.
- `example_for_concept`: Best-fit examples for a free-form concept query ("how do I use effects?").
Filters server-side on why + title; returns up to 5 matches.
- `example_get`: Full source + metadata for one example by path.
- `examples_list`: Filter examples that pass under for_version, optionally by features/status.
features = comma-separated tags ("effects,records"); empty = no filter.
status = "passing" | "failing" | ""; empty = passing only.
- `executor_whoami`: Which account this connection is signed in as (its user ID) and which app
connected it (for example claude.ai or chatgpt.com).
- `install_guide`: Harness-aware install instructions for AILANG.
harness: "claude-code" | "gemini-cli" | "codex-cli" | "manual" | "build-from-source" | ""
platform: only meaningful for "manual" (e.g. "darwin-arm64", "linux-amd64"); ignored otherwise
Empty harness returns ALL harnesses + the remote_mcp config block.
- `limitations_list`: Known limitations (Y-combinator, etc.) optionally filtered by category.
- `onboarding_guide`: Step-by-step guide to getting started with AILANG, for an AI coding agent
and for a human developer. role: "agent" | "developer" | "" (both). The
guide for both roles is returned whatever role says; pick the part you need.
- `prompt_get`: Fetch the canonical teaching prompt for a version.
kind = "agent" | "devtools" | "compact" (full prompt = empty).
- `roadmap`: What's shipping next, what's been rejected and why.
- `stdlib_module`: Full module: exports + signatures + docstrings.
- `stdlib_modules`: List stdlib modules available in this AILANG version with one-line summaries.
- `stdlib_search`: Find stdlib functions by name, signature, or keyword.
Filters the pre-built search index server-side; returns top 20 matches.
- `submit_feedback`: Send a bug report, feature request, documentation gap or limitation about AILANG to the AILANG team. Use it only when the user asks to report something, and leave out personal or confidential information. Categories: bug, feature, docs, limitation. Body up to 10 KB, snippet up to 4 KB. `contact` is optional, for a reply. `package` (vendor/name) sends the report to that AILANG package's maintainers instead. Returns a ticket ID.
