{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_tyj2dmgfzy86","handle":"textual-mcp-server","url":"https://wellknown.network/agents/textual-mcp-server","links":{"self":"https://wellknown.network/agents/textual-mcp-server/record.json","html":"https://wellknown.network/agents/textual-mcp-server","markdown":"https://wellknown.network/agents/textual-mcp-server/record.md","api":"https://wellknown.network/api/v1/agents/textual-mcp-server","status":"https://wellknown.network/api/v1/agents/textual-mcp-server/status","claim":"https://wellknown.network/agents/textual-mcp-server/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/textual-mcp-server/claim.json","badge":"https://wellknown.network/agents/textual-mcp-server/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/textual-mcp-server/history","tools":"https://wellknown.network/api/v1/agents/textual-mcp-server/tools"},"ard":{"identifier":"urn:air::server:textual-mcp-server","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"textual-mcp-server","summary":"MCP server for programmatically driving Textual TUI apps","description":"# textual-mcp-server\n\nAn [MCP](https://modelcontextprotocol.io) server that lets AI agents launch, interact with, and inspect [Textual](https://textual.textualize.io) TUI applications headlessly. Drive any Textual app through its full lifecycle — click buttons, type text, read widget state, take screenshots — all via the Model Context Protocol.\n\n## Features\n\n- **Headless app execution** — Launch any Textual app without a terminal, powered by Textual's built-in `Pilot` testing API\n- **Full interaction toolkit** — Click, type, press keys, and hover over widgets using CSS selectors\n- **Rich state inspection** — Snapshot the widget tree, query widgets by selector, and extract type-specific properties from 16+ widget types\n- **Multi-session support** — Run multiple apps concurrently with isolated sessions\n- **Error tracking** — Automatic collection of worker errors and app exceptions via message hooks\n- **Screenshot capture** — Export the current screen as plain text or SVG\n\n## Installation\n\nRequires Python 3.10+.\n\n```bash\npip install textual-mcp-server\n```\n\nFor development:\n\n```bash\ngit clone https://github.com/discohead/textual-mcp-server.git\ncd textual-mcp-server\npip install -e \".[dev]\"\n```\n\n## Quick Start\n\n### As a standalone server\n\n```bash\ntextual-mcp\n```\n\n### With Claude Code\n\nAdd to your MCP configuration (e.g., `~/.claude.json` or project `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"textual\": {\n      \"command\": \"textual-mcp\"\n    }\n  }\n}\n```\n\n### Typical workflow\n\n```\n1. textual_launch(\"my_app.py\")         → session_id\n2. textual_snapshot(session_id)         → widget tree + focus + bindings\n3. textual_click(session_id, \"#submit\") → interact\n4. textual_screenshot(session_id)       → visual output\n5. textual_stop(session_id)             → cleanup\n```\n\n## Tools\n\n### Lifecycle\n\n| Tool | Description |\n|------|-------------|\n| `textual_launch` | Launch a Textual app headlessly. Accepts a file path (`app.py`), path with class (`app.py:MyApp`), or module path (`mypac…","publisher":null,"homepage":"https://github.com/discohead/textual-mcp-server","repository":"https://github.com/discohead/textual-mcp-server","version":"1.0.0","license":null,"protocols":["mcp"],"tags":["headless","mcp","model-context-protocol","testing","textual","tui"],"pricing":null,"endpoints":[{"url":"pypi:textual-mcp-server","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"code.testing","name":"Testing","confidence":1,"provenance":"declared"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":1,"provenance":"declared"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.779,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":0.745,"provenance":"derived"}],"categories":["code","dev","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":"textual-mcp-server","registry":"pypi","observedAt":"2026-10-29T00:26:56.865Z","publishedAt":"2026-02-17T07:23:25.379797Z","latestVersion":"1.0.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"textual-mcp-server","url":"https://pypi.org/project/textual-mcp-server/","firstSeenAt":"2026-09-10T14:22:11.214Z","fetchedAt":"2026-10-29T00:25:07.355Z","normalizedAt":"2026-10-29T00:25:07.355Z"}]},"firstSeenAt":"2026-09-10T14:22:11.214Z","updatedAt":"2026-10-29T00:26:56.865Z"}