{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_e4nrkta8ztg9","handle":"etna-mcp","url":"https://wellknown.network/agents/etna-mcp","links":{"self":"https://wellknown.network/agents/etna-mcp/record.json","html":"https://wellknown.network/agents/etna-mcp","markdown":"https://wellknown.network/agents/etna-mcp/record.md","api":"https://wellknown.network/api/v1/agents/etna-mcp","status":"https://wellknown.network/api/v1/agents/etna-mcp/status","claim":"https://wellknown.network/agents/etna-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/etna-mcp/claim.json","badge":"https://wellknown.network/agents/etna-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/etna-mcp/history","tools":"https://wellknown.network/api/v1/agents/etna-mcp/tools"},"ard":{"identifier":"urn:air::server:etna-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"etna-mcp","summary":"A lightweight tool server for AI models — extend with drop-in kit files.","description":"# Etna\n\nA tool server built for agentic harnesses. Etna gives you tool isolation out of the box — each kit is its own branch of the tool tree, independently toggleable per session. Drop a Python file in, and it's live.\n\nKit authoring is intentionally Pythonic: a decorator, type hints, and a docstring are all the model needs to understand and use a tool. Everything else — schema generation, dependency management, client registration, hot-reload — is handled for you.\n\n## Why Etna instead of MCP\n\nMCP solves the problem of getting tools into models, and it does that well. What it doesn't solve is what happens when you have a lot of them. The standard answer is to run a separate server process per tool category and register each one individually in your client config. That works, but it means your tool surface area is defined at the process level — adding a capability requires restarting something, and toggling access requires editing a config file.\n\nEtna takes a different position. One server, one connection, all your kits. Isolation happens at the kit level inside that single process — each kit is its own independently toggleable branch of the tool tree. A harness can expose different kits to different models, different sessions, or different users, all from the same running server. No additional processes, no config restarts.\n\nMCP compatibility ships as an adapter so Etna works with any client that already speaks MCP. But the Etna Protocol is its own thing — built directly on LLM tool use, not on top of MCP.\n\n## How it works\n\n- **CLI (`etna`)** — manages the full lifecycle. Install kits, start the server, configure clients, manage Chrome for browser automation. One command for everything.\n- **Kits (`~/.etna_server/kits/`)** — each kit is a plain Python file with `@tool`-decorated functions and four metadata fields. Drop one in, and it's live.\n- **Server** — FastAPI process that auto-discovers all kits at startup and again on hot-reload. Speaks both the Etna Protocol …","publisher":{"name":"dwhite-sys","url":null},"homepage":"https://github.com/dwhite-sys/Etna","repository":"https://github.com/dwhite-sys/Etna","version":"1.0.0b48","license":"Apache-2.0","protocols":["mcp"],"tags":["mcp","model","context","protocol","llm","tools","kit","claude","openwebui","lm","studio","etna","ai"],"pricing":null,"endpoints":[{"url":"pypi:etna-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"infra.browser-automation","name":"Browser Automation","confidence":1,"provenance":"derived"}],"categories":["infra"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"etna-mcp","registry":"pypi","observedAt":"2026-11-09T04:26:45.293Z","publishedAt":"2026-10-04T04:51:00.642055Z","latestVersion":"1.0.0b48"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"etna-mcp","url":"https://pypi.org/project/etna-mcp/","firstSeenAt":"2026-09-09T15:21:51.882Z","fetchedAt":"2026-11-09T04:25:26.497Z","normalizedAt":"2026-11-09T04:25:26.497Z"}]},"firstSeenAt":"2026-09-09T15:21:51.882Z","updatedAt":"2026-11-09T04:26:45.293Z"}