Production hub

Docs, evidence snapshot, and release history.

A public operations hub for the compiler pipeline, current evidence, API contracts, and shipped release history.

Docs

Developer API guide

Issue a key in the editor, call the HTTP API, or connect your agent over MCP — one key, one shared quota, the same honest verified-subset contract everywhere.

One key, two surfaces: the HTTP API and the MCP server expose the same conversion over a machine-verified construct subset, with the same shared daily quota. Where a construct has no verified route, results report an honest gap instead of inventing output.

Step 1

Get an API key

Keys are issued in the editor and shown exactly once — store yours in a secret manager. Rotating or revoking a key takes effect immediately on both the HTTP API and the MCP server.

  1. Sign in with GitHub or Google in the editor.
  2. Open the API & Usage panel and issue a key (format: lena_sk_…).
  3. Copy it immediately — only a short display prefix is ever shown again.
Open the editor

Step 2

REST quickstart

POST your source to /api/v1/convert with the key in the x-lena-api-key header. The response separates what is verified from what is not: read status and gaps before using text.

The full request/response contract — every status value, error shape, and field — is pinned in the OpenAPI document below. The response carries schemaVersion so future envelope changes are explicit, never silent.

/api/openapi.json
Request
curl -X POST https://www.lenacode.com/api/v1/convert \
  -H "x-lena-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceLanguage": "python",
    "targetLanguage": "javascript",
    "code": "def add(a, b):\n    return a + b"
  }'
Response shape
{
  "schemaVersion": "1.0",
  "ok": true,
  "status": "converted",        // or: partial | no-verified-route | ...
  "sourceLanguage": "python",
  "targetLanguage": "javascript",
  "text": "...",                // set ONLY when conversion is complete
  "fragments": [ { "facetKey": "...", "text": "...", "verified": true } ],
  "gaps": [ { "facetKey": "...", "reason": "...", "message": "..." } ],
  "verification": { "inputLaw": "pass", "outputAdapters": "verified-direct-only", ... },
  "requestId": "..."
}

Anything listed under gaps means the result is not safe to apply as-is. text is null unless every construct in your input had a verified route.

Step 3

Connect over MCP

The MCP server (streamable HTTP) gives agents the same conversion plus discovery tools. It is read/transform only: no tool edits files, applies patches, or executes code — applying results is always the caller’s decision.

Recommended call order: lena_list_languages → lena_check_route → lena_transform. Discovery tools are free; only submitting source code consumes the shared daily quota.

Claude Code
claude mcp add --transport http lena-code https://www.lenacode.com/api/mcp \
  --header "Authorization: Bearer YOUR_KEY"
Cursor / generic MCP client (mcp.json)
{
  "mcpServers": {
    "lena-code": {
      "url": "https://www.lenacode.com/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}
ToolQuotaWhat it does
lena_list_languagesFreeCanonical language ids, accepted aliases, per-language verified counts. Call this first — never guess ids.
lena_check_routeFreePre-flight for a source/target pair: verified construct-route count without spending quota or source tokens.
lena_transformCountsThe conversion itself. Read status, fragments, gaps, and guidance — text is set only when conversion is complete.
lena_transform_batchCountsMultiple conversions in one call; each item consumes quota individually.
lena_get_coverageFreeAggregate verified-coverage numbers.
lena_get_language_coverageFreeVerified-coverage numbers for one language.

Metering

Quotas & plans

API and MCP conversions draw from one shared daily pool per key. Editor conversions are metered separately. Quotas reset at UTC midnight.

Plans & pricing
PlanAPI + MCP / day (shared)Price
free25$0/mo
pro1,000$5/mo
max5,000$15/mo

Per-request input limit: 256 KB UTF-8; binary content is rejected. Rate limiting applies on top of daily quotas — exceeded requests return 429 with a retry-after header.

Contract

Errors & limits

Errors are JSON with a stable code and a requestId you can quote to support. The same key and quota semantics apply on MCP — tool errors carry the equivalent reason.

401
Missing, malformed, revoked, or rotated key.
429
Rate limit or daily quota exceeded — the body says which, and retry-after says when.
400 / 413
Invalid body, binary content, or input over the 256 KB limit.
503
Entitlement state temporarily unavailable — the API refuses rather than guessing your plan. Retry shortly.

Submitted source is processed in memory for the request only; generated results may use a short-window hash-keyed cache. Privacy details

For agents

Machine-readable resources

Agents can learn this surface without scraping HTML: the OpenAPI contract over HTTP, and MCP resources served by the server itself.

  • /api/openapi.jsonfull HTTP contract (also served as the MCP resource lena://openapi)
  • lena://usage-guideagent-directed guide served by the MCP server
  • lena://health-publicpublic health snapshot
  • /api/coverage/exposureverified-coverage numbers; append /{languageId} for one language
  • /llms.txtthis guide’s entry points, in plain text

RELEASE LOG

Changelog

Slice-level release history derived from git log and curated public titles.

Changelog generated at 2026-07-09

Featured updates

30/50

  1. Update

    Update · 2026-07-09

    8331dd7ed
  2. landing

    Landing surface

    Update · 2026-07-09

    e714ad201
  3. editor

    Editor refresh

    Update · 2026-07-09

    9045991c5
  4. Deployment pipeline

    Update · 2026-07-09

    92880ce99

Recent changes

  1. editor

    Editor refresh

    2026-07-092e8eab90d
  2. editor

    Editor refresh

    2026-07-093269fdf82
  3. editor

    Editor refresh

    2026-07-095ed1d2b70
  4. editor

    Editor refresh

    2026-07-0962a3fa531
  5. editor

    Editor refresh

    2026-07-0918dae93bc
  6. Update

    2026-07-0943861fc27
  7. copy

    Marketing copy refresh

    2026-07-09a0742cccc
  8. editor

    Editor refresh

    2026-07-09da39054fb

Earlier trail

  1. Bug fix

    Update · 2026-07-095d5a25c7e
  2. Bug fix

    Update · 2026-07-0979d048c1a
  3. Update

    Update · 2026-07-098c8355723
  4. verification

    Verification system update

    Update · 2026-07-0901f83209f
  5. verification

    Verification system update

    Update · 2026-07-095357575df
  6. verification

    Verification system update

    Update · 2026-07-09e27684c9a
  7. verification

    Verification system update

    Update · 2026-07-092c9316e36
  8. verification

    Verification system update

    Update · 2026-07-09ba4e8125a
  9. verification

    Verification system update

    Update · 2026-07-094a16e01e3
  10. verification

    Verification system update

    Update · 2026-07-09b0d3ec86e
  11. verification

    Verification system update

    Update · 2026-07-091b70fb280
  12. verification

    Verification system update

    Update · 2026-07-09181b06060
  13. verification

    Verification system update

    Update · 2026-07-098b2cbc47a
  14. verification

    Verification system update

    Update · 2026-07-0966f0a19d9
  15. verification

    Verification system update

    Update · 2026-07-0969fc31b26
  16. verification

    Verification system update

    Update · 2026-07-098a710d27d
  17. verification

    Verification system update

    Update · 2026-07-09cb16154cb
  18. verification

    Verification system update

    Update · 2026-07-091f73cc31e