{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_5c46x4dn4q2t","handle":"reactor-mcp-server","url":"https://wellknown.network/agents/reactor-mcp-server","links":{"self":"https://wellknown.network/agents/reactor-mcp-server/record.json","html":"https://wellknown.network/agents/reactor-mcp-server","markdown":"https://wellknown.network/agents/reactor-mcp-server/record.md","api":"https://wellknown.network/api/v1/agents/reactor-mcp-server","status":"https://wellknown.network/api/v1/agents/reactor-mcp-server/status","claim":"https://wellknown.network/agents/reactor-mcp-server/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/reactor-mcp-server/claim.json","badge":"https://wellknown.network/agents/reactor-mcp-server/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/reactor-mcp-server/history","tools":"https://wellknown.network/api/v1/agents/reactor-mcp-server/tools"},"ard":{"identifier":"urn:air::server:reactor-mcp-server","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"reactor-mcp-server","summary":"An extensible MCP server built on Reactor: tools are contributions, and a contribution can be extended","description":"<!--\n  Copyright (c) 2026-Present Datalayer, Inc.\n\n  BSD 3-Clause License\n-->\n\n[![Datalayer](https://images.datalayer.io/legacy/datalayer-25.svg)](https://datalayer.ai)\n\n# Reactor MCP Server\n\nAn extensible [MCP](https://modelcontextprotocol.io) server built on\n[Reactor](https://github.com/datalayer/reactor). Three ideas, and the rest\nfollows from them.\n\n## A tool is a contribution\n\nAn extension does not reach into a server and register a function on it. It\n*offers* a tool at a contribution point, and the host builds a server from what\nhas been offered:\n\n```python\nfrom reactor import PluginManifest\nfrom reactor_mcp_server import McpExtension, tool\n\nclass Sandboxes(McpExtension):\n    def manifest(self) -> PluginManifest:\n        return PluginManifest(name=\"sandboxes\", version=\"1.0.0\")\n\n    @tool(title=\"Launch Sandbox\")\n    async def launch_sandbox(self, sandbox_name: str, variant: str = \"eval\") -> dict:\n        \"\"\"Launch a sandbox for this session to run code in.\"\"\"\n        return await launch(sandbox_name, variant)\n```\n\nOffering rather than registering is what makes the next part possible — and it\nmeans what a server is made of can be read, listed and drawn before one is\nbuilt.\n\n## A contribution can be extended\n\nAn extension may narrow, wrap or re-describe a tool **another** extension\noffered:\n\n```python\nclass DatalayerSandboxes(McpExtension):\n    def manifest(self) -> PluginManifest:\n        return PluginManifest(name=\"sandboxes-datalayer\", version=\"1.0.0\")\n\n    def tool_extensions(self):\n        def on_datalayer(handler):\n            async def narrowed(sandbox_name: str, environment: str = \"ai-env\") -> dict:\n                return await handler(sandbox_name, variant=\"datalayer\")\n            return narrowed\n\n        return ((\"launch_sandbox\", ToolExtension(\n            wrap=on_datalayer,\n            description=\"Launch a sandbox on Datalayer.\",\n        )),)\n```\n\nWithout this, an extension that wants to narrow somebody else's tool has one\nlever: register a tool of …","publisher":null,"homepage":"https://datalayer.ai","repository":"https://github.com/datalayer/reactor","version":"1.3.4","license":"BSD-3-Clause","protocols":["mcp"],"tags":["mcp","plugins","reactor","tools"],"pricing":null,"endpoints":[{"url":"pypi:reactor-mcp-server","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"}},"derived":{"capabilities":[{"slug":"code.execution","name":"Code Execution","confidence":0.814,"provenance":"derived"}],"categories":["code"],"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":"reactor-mcp-server","registry":"pypi","observedAt":"2026-10-28T21:26:19.244Z","publishedAt":"2026-10-28T14:51:33.751920Z","latestVersion":"1.3.4"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"reactor-mcp-server","url":"https://pypi.org/project/reactor-mcp-server/","firstSeenAt":"2026-09-22T14:20:36.654Z","fetchedAt":"2026-10-28T21:24:15.638Z","normalizedAt":"2026-10-28T21:24:15.638Z"}]},"firstSeenAt":"2026-09-22T14:20:36.654Z","updatedAt":"2026-10-28T21:26:19.244Z"}