# Reported issues for edict

Pod holds 22 of 49 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [edict](/mcp/edict).

## Most discussed

### Compile → Deploy Pipeline — one-step verified deployment from AST to live service

## Problem

No other language lets an agent go from "idea" to "deployed, formally-verified, running service" in a single tool call chain. Currently, Edict can compile and run code — but the running part is ephemeral. There's no way to **deploy** the result as a persistent service.

## Proposed Solution

### New MCP Tool: `edict_deploy`

```json
{
  "tool": "edict_deploy",
  "args": {
    "ast": { "kind": "module", ... },
    "target": "cloudflare",
    "config": {
      "name": "my-api-handler",

[Read the thread](https://github.com/Sowiedu/Edict/issues/78) · 2026-03-06 · closed · 4 comments

### Register on MCP tool directories (Smithery, Glama, MCP Hub)

## Problem

Agents discover MCP tools through registries (Smithery, Glama, MCP Hub, mcp.so, etc.). Edict isn't listed on any of them.

## Proposed Solution

Register Edict on major MCP tool directories:

| Registry | URL |
|----------|-----|
| Smithery | https://smithery.ai |
| Glama | https://glama.ai/mcp |
| MCP Hub | https://mcphub.io |
| mcp.so | https://mcp.so |
| Awesome MCP Servers | https://github.com/punkpeye/awesome-mcp-servers |

Each listing should include:
- Clear description emphas

[Read the thread](https://github.com/Sowiedu/Edict/issues/46) · 2026-03-03 · closed · 3 comments

### Docker image for Edict MCP server

## Problem

Running Edict requires Node.js ≥ 20, npm install, and tsx. For containerized agents, a pre-built Docker image is much simpler.

## Proposed Solution

```dockerfile
FROM node:20-slim
WORKDIR /edict
COPY . .
RUN npm ci --production
CMD ["npx", "tsx", "src/mcp/server.ts"]
```

Support both stdio and HTTP transports via env var:
```bash
docker run -i sowiedu/edict-mcp                          # stdio
docker run -p 3000:3000 -e EDICT_TRANSPORT=http sowiedu/edict-mcp  # HTTP
```

Automated

[Read the thread](https://github.com/Sowiedu/Edict/issues/45) · 2026-03-03 · closed · 3 comments

### Browser: Example HTML page — compile and run Edict in-browser

## Parent: #75 (Browser-Side Compilation)

### Problem

A working example page demonstrates browser compilation end-to-end and serves as the "try it" experience. This is the capstone deliverable for #75.

### Scope

1. **Create `examples/browser/index.html`** — minimal example page
2. **Demonstrates the full pipeline** — AST input → validate → check → compile → run → output
3. **Uses the browser bundle** — imports from `edict-lang/browser` or loads `browser.bundle.js`
4. **Shows async loading** 

[Read the thread](https://github.com/Sowiedu/Edict/issues/124) · 2026-03-11 · closed · 2 comments

### Z3 verification caching and worker thread offloading

## Problem

Z3 contract verification is computationally heavy (5s timeout per verification). When the MCP server handles multiple concurrent agent requests with complex contracts, Z3 invocations can choke the Node.js event loop. Additionally, the same contract proven once may be re-verified on every compilation.

**Raised by:** Gemini (Medium)
**Verified against codebase:** ✅ — `TIMEOUT_MS = 5000` in verify.ts, no caching

## Proposed Solution

### Phase 1: Verification caching
- Cache Z3 result

[Read the thread](https://github.com/Sowiedu/Edict/issues/93) · 2026-03-06 · closed · 2 comments

### WASM module interop — import external WASM functions

## Problem

Edict programs can only use built-in functions. There's no way to extend Edict's capabilities by importing functions from external WASM modules.

## Proposed Solution

1. Allow `import` declarations to reference external WASM modules
2. The host provides the WASM module at runtime via `edict_run` configuration
3. Imported functions get type signatures in the AST, verified by the type checker
4. Codegen emits WASM imports from the external module

```json
{
  "kind": "import",
  "id":

[Read the thread](https://github.com/Sowiedu/Edict/issues/38) · 2026-03-03 · closed · 2 comments

### types: add proper StructuredError variants for deploy errors

## Problem

The deploy handler in `handlers.ts` creates ad-hoc error objects that bypass the `StructuredError` type system using `as unknown as StructuredError`:

```typescript
// Line 787
errors: [{ error: "scaffold_failed", reason: scaffoldResult.error } as unknown as StructuredError]

// Line 831  
errors: [{ error: "deploy_failed", code: deployResult.code, reason: deployResult.error, ... } as unknown as StructuredError]
```

These are the only `as unknown as StructuredError` casts in the cod

[Read the thread](https://github.com/Sowiedu/Edict/issues/193) · 2026-03-16 · closed · 1 comment

### refactor: extract `handlers.ts` (940 lines) into focused handler modules

## Problem

`src/mcp/handlers.ts` is **940 lines** containing 20+ handler functions spanning MCP tools, deploy logic, debug, compose, invoke, and skill management. The deploy handler alone is 138 lines with nested switch/case logic. This makes the file harder to navigate and increases merge conflict surface.

## Proposed Structure

Extract handler groups into focused modules within `src/mcp/handlers/`:

```
src/mcp/handlers/
├── index.ts           # re-exports (backward-compatible)
├── schema.ts

[Read the thread](https://github.com/Sowiedu/Edict/issues/192) · 2026-03-16 · closed · 1 comment

## Most recent

### Register Edict on Official MCP Registry (modelcontextprotocol.io)

## Parent Issue
Part of #46 — Register on MCP tool directories

## Problem
Edict is not listed on the [Official MCP Registry](https://modelcontextprotocol.io), the canonical registry maintained by the MCP specification authors. This is the highest-authority listing for MCP servers.

## How to Submit

The Official MCP Registry (Preview) launched September 2025. Publishing options:
1. **Publisher CLI** — publish via the official MCP publisher tool
2. **`server.json`** — provide a server manifest f

[Read the thread](https://github.com/Sowiedu/Edict/issues/204) · 2026-03-18 · closed · 0 comments

### Register Edict on mcp.so

## Parent Issue
Part of #46 — Register on MCP tool directories

## Problem
Edict is not listed on [mcp.so](https://mcp.so), a community MCP server directory.

## How to Submit

Submit via the web form at https://mcp.so.

## Listing Content

- **Name**: Edict
- **Category**: Developer Tools / Code Execution / Autonomous Agents
- **Description**: Agent-first programming language: agents produce JSON AST, the compiler validates, type-checks, effect-checks, verifies contracts via Z3/SMT, and compile

[Read the thread](https://github.com/Sowiedu/Edict/issues/203) · 2026-03-18 · closed · 0 comments

### Register Edict on MCP Hub (mcphub.io)

## Parent Issue
Part of #46 — Register on MCP tool directories

## Problem
Edict is not listed on [MCP Hub](https://mcphub.io), an MCP server discovery platform.

## How to Submit

Submit via the web form at https://mcphub.io (free for developers).

Provide:
- Server name, description, category
- Supported AI models
- Contact information
- GitHub repo link

Submissions go through a review process before being publicly listed.

## Listing Content

- **Name**: Edict
- **Category**: Developer Tools

[Read the thread](https://github.com/Sowiedu/Edict/issues/202) · 2026-03-18 · closed · 0 comments

### Register Edict on Smithery (smithery.ai)

## Parent Issue
Part of #46 — Register on MCP tool directories

## Problem
Edict is not listed on [Smithery](https://smithery.ai), one of the largest MCP server registries.

## How to Publish

Smithery supports publishing via CLI:

```bash
npx @smithery/cli mcp publish --name @Sowiedu/edict --transport stdio
```

Alternatively, publish via URL if the server is hosted:
```bash
smithery mcp publish <url> -n @Sowiedu/edict
```

Smithery will scan the server for metadata (tools, prompts, resources) 

[Read the thread](https://github.com/Sowiedu/Edict/issues/201) · 2026-03-18 · closed · 0 comments

### types: replace `as never` casts in QuickJS with discriminated union result type

## Summary

Replaced `as never` casts in QuickJS with discriminated union result type.

### Changes

- **`src/check-browser.ts`**: Converted `CheckBrowserResult` from a single interface to a discriminated union (`CheckBrowserSuccess | CheckBrowserFailure`) keyed on `ok`. All error-path returns now include `module: null`, `typeInfo: null`, `diagnostics: []`.
- **`src/quickjs/edict-quickjs.ts`**: Removed all 3 `as never` casts. Uses new `quickjsRuntimeError()` constructor.
- **`src/browser-full.ts

[Read the thread](https://github.com/Sowiedu/Edict/issues/194) · 2026-03-16 · closed · 0 comments

### perf: cache `buildAgentGuide()` result in `handleSchema("agent")`

## Problem

`buildAgentGuide()` is a pure function that produces static content, yet it's called on **every** invocation of:
- `handleSchema("agent")` (in `handlers.ts:181`)
- `handleExamples()` → `handleSchema("agent")` (in `handlers.ts:206`)

The minimal schema is already cached via `cachedMinimalSchema`, but the outer `combined` object — including the `buildAgentGuide()` result — is reconstructed every time.

## Fix

Cache the full agent schema result alongside `cachedMinimalSchema`:

```type

[Read the thread](https://github.com/Sowiedu/Edict/issues/188) · 2026-03-16 · closed · 1 comment

### test: add `guideResource` handler test (50% → 100% coverage)

## Problem

`src/mcp/resources/guide.ts` has **50% statement coverage** and **0% function coverage**. No dedicated test file exists. The `guideResource` handler wraps `buildAgentGuide()` into an MCP resource response, but this wrapper is never tested directly.

## Fix

Create `tests/mcp/guide-resource.test.ts` that:
1. Imports `guideResource` from `../../src/mcp/resources/guide.js`
2. Calls `guideResource.handler()` 
3. Asserts the response has `contents[0].uri === "edict://guide"`
4. Asserts `c

[Read the thread](https://github.com/Sowiedu/Edict/issues/187) · 2026-03-16 · closed · 1 comment

### test: add `invokeTool.handler` wrapper test (25% → 100% coverage)

## Problem

`src/mcp/tools/invoke.ts` has **25% statement coverage**. The handler function (`handleInvoke`) is well-tested in `tests/mcp/invoke.test.ts`, but the MCP tool wrapper (`invokeTool.handler`) — which serializes the result to JSON and sets `isError` — is never exercised.

**Uncovered lines**: 16-18 (the `handler` function body)

## Fix

Add a test in `tests/mcp/invoke.test.ts` that:
1. Imports `invokeTool` from `../../src/mcp/tools/invoke.js`
2. Calls `invokeTool.handler({ url, ... })` 

[Read the thread](https://github.com/Sowiedu/Edict/issues/186) · 2026-03-16 · closed · 1 comment

### Create agent system prompt / bootstrap guide for MCP-first onboarding

Implemented in b493a14.\n\n**Delivery:**\n- MCP `instructions` field on server init with bootstrap workflow hint\n- `edict://guide` MCP resource with full structured guide\n- `guide` field embedded in `edict_schema(format: \"agent\")` response\n\n**Guide contents:** `whatIsEdict`, `workflow`, `template` (hello-world), `rules`, `errorRecovery`, `builtins` (derived from registry), `toolReference` — all structured JSON, ~2K tokens.\n\n10 new tests, 2 updated tests, all 2348 passing.

[Read the thread](https://github.com/Sowiedu/Edict/issues/179) · 2026-03-14 · closed · 0 comments

### Bundle minimal schema snippet with `edict_examples` response

## Problem

LLMs consistently call `edict_schema` then `edict_examples` on turn 1, burning 2 rounds before writing any code. When stuck, they often re-fetch both, wasting another 2 rounds per retry.

## Current State

- `edict_schema(format: "agent")` already bundles minimal schema + compact maps + builtins + effects (~one-call bootstrap)
- `edict_examples` returns `{ count, examples }` with no schema context
- Agents need both to write correct programs — the schema for structure, the examples f

[Read the thread](https://github.com/Sowiedu/Edict/issues/175) · 2026-03-14 · closed · 1 comment

### Cloudflare deploy target and deployment documentation

## Parent Issue
Part of #78 (Compile → Deploy Pipeline)

## Scope

Wire up the Cloudflare deploy target in `edict_deploy`. When `target: "cloudflare"` is specified, the tool should use the existing CloudflareHostAdapter and worker scaffold generator to produce and deploy a Cloudflare Worker. Document how to configure deploy targets and the deploy target interface for extensibility.

## Acceptance Criteria

- [ ] Cloudflare deploy target works in `edict_deploy` (requires `CLOUDFLARE_API_TOKEN` en

[Read the thread](https://github.com/Sowiedu/Edict/issues/165) · 2026-03-13 · closed · 1 comment

### `edict_invoke` MCP tool for remote WASM service invocation

## Parent Issue
Part of #78 (Compile → Deploy Pipeline)

## Scope

Implement the `edict_invoke` MCP tool that invokes deployed Edict WASM services via HTTP. Given a URL and input, the tool sends a request to the deployed service and returns the structured result. This completes the deploy → invoke round-trip.

## Context

`edict_deploy` with `wasm_binary` target exists (#140, done). Agents can compile and package — but they currently can't invoke a deployed service through the MCP interface.

##

[Read the thread](https://github.com/Sowiedu/Edict/issues/158) · 2026-03-13 · closed · 0 comments

### Skill memory adapter with semantic retrieval and execution

## Parent Issue
Part of #79 (WASM as Crystallized Agent Memory)

## Scope

Build a reference implementation of an agent memory adapter that stores Edict skill packages and retrieves them by semantic search (name, description). Include skill execution from memory: load the stored WASM binary, run it, and return the result — bypassing LLM inference entirely.

## Context

The skill package format (#135) and MCP tools for packaging/invocation (#136) are done. This sub-issue builds the **memory integ

[Read the thread](https://github.com/Sowiedu/Edict/issues/157) · 2026-03-13 · closed · 1 comment

### Add `compileAndRun(ast)` convenience function

## Context — Calculator Benchmark

The agent's runner script follows a 4-step pipeline that will be identical for every Edict program:

```js
const v = validate(ast);     // check structure
const c = check(ast);        // resolve + typecheck + effects + contracts  
const compiled = compile(ast); // generate WASM
const result = await run(compiled.wasm); // execute
```

Each step has different error-checking patterns, and getting these wrong cost the benchmark agent 2 rounds.

## Proposed Change

[Read the thread](https://github.com/Sowiedu/Edict/issues/148) · 2026-03-12 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/Sowiedu/Edict/issues).
