{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_xfb23pcp5spt","handle":"modal-mcp-op","url":"https://wellknown.network/agents/modal-mcp-op","links":{"self":"https://wellknown.network/agents/modal-mcp-op/record.json","html":"https://wellknown.network/agents/modal-mcp-op","markdown":"https://wellknown.network/agents/modal-mcp-op/record.md","api":"https://wellknown.network/api/v1/agents/modal-mcp-op","status":"https://wellknown.network/api/v1/agents/modal-mcp-op/status","claim":"https://wellknown.network/agents/modal-mcp-op/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/modal-mcp-op/claim.json","badge":"https://wellknown.network/agents/modal-mcp-op/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/modal-mcp-op/history","tools":"https://wellknown.network/api/v1/agents/modal-mcp-op/tools"},"ard":{"identifier":"urn:air::server:modal-mcp-op","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"modal-mcp-op","summary":"Read-only MCP server for observing and debugging Modal applications","description":"# modal-mcp\n\nA read-only MCP server that exposes [Modal](https://modal.com) to LLM agents for\ndebugging and observing deployed applications: logs, app and function state, container\nlifecycle, failures, deployment history, and cost.\n\n**Read-only by construction, permanently.** No tool in this server can create, change,\nstop, restart or delete anything in a Modal workspace. That is not a flag, a toolset\ntoggle, or a refusal at the edge — the mutating RPCs are unreachable as attributes on the\nobject the tool layer holds. See [The read-only boundary](#the-read-only-boundary).\n\nStatus: **alpha.** Every tool has been exercised against a real Modal workspace; the\ngaps are listed honestly in [What this cannot see](#what-this-cannot-see).\n\nPublished to PyPI as **`modal-mcp-op`**. The obvious name `modal-mcp` was already\ntaken by an unrelated project with similar positioning.\n\n## Install and run\n\n```bash\nuvx modal-mcp-op stdio                # or: uv tool install modal-mcp-op\nexport MODAL_TOKEN_ID=...\nexport MODAL_TOKEN_SECRET=...\nmodal-observe stdio\n```\n\nCredentials come from the **process environment only**. The server does not read a `.env`\nfile; `.env.example` is a template you source yourself:\n\n```bash\ncp .env.example .env && set -a && . .env && set +a\n```\n\nThere is no interactive login, no linked-project state, and no config file — so this runs\nheadless in a container or a CI job.\n\nMCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"modal\": {\n      \"command\": \"modal-observe\",\n      \"args\": [\"stdio\"],\n      \"env\": { \"MODAL_TOKEN_ID\": \"...\", \"MODAL_TOKEN_SECRET\": \"...\" }\n    }\n  }\n}\n```\n\n**Use a service-user token with a Viewer role** rather than a personal user token. This\nserver only ever reads, so it needs nothing more, and a user token inherits a human's\nfull workspace access. `modal_status` reports which kind it holds so a mismatch is\nvisible.\n\n## Driving it without an MCP client\n\nEverything is reachable from a shell, because that is the only way to debug it…","publisher":null,"homepage":null,"repository":null,"version":"0.1.0","license":"Apache-2.0","protocols":["mcp"],"tags":["debugging","mcp","modal","observability","read-only"],"pricing":null,"endpoints":[{"url":"pypi:modal-mcp-op","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","summary":"pypi","version":"pypi","description":"pypi"}},"derived":{"capabilities":[{"slug":"code.debugging","name":"Debugging","confidence":1,"provenance":"declared"},{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":1,"provenance":"declared"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.779,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.745,"provenance":"derived"}],"categories":["code","dev"],"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":"modal-mcp-op","registry":"pypi","observedAt":"2026-10-28T16:27:15.328Z","publishedAt":"2026-08-17T17:02:10.648494Z","latestVersion":"0.1.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"modal-mcp-op","url":"https://pypi.org/project/modal-mcp-op/","firstSeenAt":"2026-09-10T06:23:33.418Z","fetchedAt":"2026-10-28T16:25:09.076Z","normalizedAt":"2026-10-28T16:25:09.076Z"}]},"firstSeenAt":"2026-09-10T06:23:33.418Z","updatedAt":"2026-10-28T16:27:15.328Z"}