Docs / Contact / ai/overview
MCP across Tendrl
Tendrl exposes several Model Context Protocol (MCP) servers. You don't choose between "MCP" and an "MCP app". You connect a server once, and your AI client shows the richest experience it supports: an interactive card where available, the same result as plain text everywhere else. Nothing extra to install for the card.
The servers
| Server | How you connect | What it does |
|---|---|---|
| Contact | Remote: https://app.tendrl.com/contact/mcp (Bearer key) |
Manage entities/devices, messages, flows, services, roles, and API keys. |
| Surface | Remote: https://app.tendrl.com/surface/mcp (Bearer key), or a local server |
Scan files and payloads for malware and prompt-injection threats. Renders an interactive scan card (hosted endpoint and local server). |
| Local Dev | Local stdio server on your machine | Flash firmware, provision, and debug physical MicroPython devices. |
| Strand | Not a server you connect an assistant to | A workflow platform that consumes MCP servers as connectors inside its AI nodes (see the Strand docs → Connectors → MCP Server). |
Contact and Surface are the servers you add to your AI client. Local Dev runs beside them for hardware work. Strand sits on the other side of the protocol: it calls MCP servers from inside automated workflows.
How they work together
The servers don't call each other. Your AI assistant orchestrates them, carrying results from one to the next. A typical end-to-end flow:
- Register a device as a Contact entity; its single API key is issued once at creation (Contact).
- Flash and provision the physical board with that key (Local Dev).
- Scan before you trust: check firmware, payloads, or an inbound message with Surface, and only proceed if it passes.
- Automate: route the device's messages through a Strand workflow (which can itself call Surface or Contact via MCP connectors).
Because one assistant drives all of them, "provision a device end-to-end" or "scan this before I deploy it" become single conversations instead of four separate dashboards.
Text or interactive card: your client decides
Where a server ships an interactive UI, clients that support the MCP Apps extension render it inline; others fall back to the same data as text. There is nothing to toggle.
| Client | Interactive card | Falls back to |
|---|---|---|
| Claude Desktop · claude.ai | Yes | — |
| VS Code (Copilot) | Yes | — |
| Goose · Postman | Yes | — |
| Cursor · CLI clients | Not yet | Full text result |
On clients that support the MCP Apps extension, the Surface MCP server (hosted or local) renders scan results as a card (the malware verdict plus any prompt-injection findings) instead of raw JSON. Everywhere else, and for every other tool, results come back as text (the same data, just not visualized).
Set up a server
- Contact: MCP Server · Claude Code
- Surface: see the Surface docs → Resources & setup, and Surface → AI → MCP Server
- Local Dev (hardware): Local Dev Server
Tendrl