Skip to main content
Glama
operandi-mcp

operandi-mcp

OPERANDI MCP Server — operate real appliances from any agent

mcp-name: cc.operandi/operandi

operandi_mcp_server.py exposes OPERANDI over the Model Context Protocol so any MCP-capable agent host (Claude Desktop, Claude Code, or your own agent runtime) can identify an appliance and pull its grounded, safety-checked, robot-executable operation package as native tools.

This is the "build for agents" surface: the customer is a robot's planner / an LLM agent, not a human reading PDFs.

Tools

Tool

What it does

identify_appliance

Resolve observed nameplate text / panel labels / model → a catalog object (call first).

get_operation_package

The robot-executable package: model-exact procedures, control map + grounding, per-step verification signals, recovery state machine, safety envelope.

list_appliances

Browse operable appliances (optionally by category).

find_by_capability

Find appliances by function (heat / wash / brew / defrost …).

Related MCP server: Groundcrew

Why an agent wants this

A general model, cold, gives confidently-wrong physical instructions on ordinary appliances a large fraction of the time (OPERANDI Stage A: 24% of cold instructions were would-fail, including invented buttons and cycles). Grounded in the package these tools return, that fell to 0 hallucinations, 96% exact. The tools turn "guess the buttons" into "read the manufacturer's ground truth". See ../docs/BUSINESS_MODEL.md.

Setup — zero config

pip install operandi-mcp

That's it. No key needed for your first packages: on first use the server mints an instant trial key itself (POST /v1/trial — no signup, 2 operation packages included, cached at ~/.operandi/mcp_key). When the trial is spent, tool responses tell the agent exactly how to sign up free (10 packages/month) or go Pro.

Have a key already? Set it and it wins over the trial:

export OPERANDI_API_KEY=ok_live_...

Claude Desktop / Claude Code config

{
  "mcpServers": {
    "operandi": { "command": "operandi-mcp" }
  }
}

(Optionally add "env": {"OPERANDI_API_KEY": "ok_live_..."} once you have an account key.)

Then ask the agent: "Identify the Samsung ME20H705MSS and give me the safe procedure to defrost 0.5 kg of mince." — it will call identify_appliance then get_operation_package and answer from grounded data.

Notes

  • The server is a thin, API-key-authenticated REST client — the same binary works against local dev or the hosted service by changing OPERANDI_API_URL.

  • Auth is Authorization: Bearer <key>; a missing/invalid key surfaces as a tool error, not a crash.

  • Transport is newline-delimited JSON-RPC 2.0 (the MCP stdio transport). Offline protocol tests: pytest tests/test_mcp_server.py.

Available Tools

4 tools
find_by_capabilityA

Find appliances by what they DO (e.g. 'heat', 'wash', 'brew', 'defrost') — useful when an agent has a goal but not a specific model in mind.

Inputs: capability (required).

get_operation_packageA

Get the robot-executable operation package for an appliance: model-exact ordered procedures, a control map with grounding (where each control is + how it is actuated), per-step verification signals, a recovery state machine, and a safety envelope (hazards / interlocks / never-do). This is the grounded knowledge a general model hallucinates without. Optionally target one procedure (e.g. 'defrost').

Inputs: ref (required), procedure.

identify_applianceA

Resolve which appliance an agent/robot is looking at, from observed text or panel labels, to an OPERANDI catalog object. Call this first, then get_operation_package with the returned slug. Returns ranked matches with confidence.

Inputs: query (required), brand, limit, category, +1 more.

list_appliancesB

Browse the appliances OPERANDI can operate, optionally filtered by category.

Inputs: limit, category.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: find by capability, identify from observation, get operation package, and list all appliances. There is no overlap; the descriptions clearly differentiate them.

    Naming Consistency4/5

    All names use snake_case and are descriptive, but 'find_by_capability' breaks the verb_noun pattern used by the others (identify, get, list). This is a minor inconsistency.

    Tool Count4/5

    With 4 tools, the server covers the essential workflow (browse, search, identify, retrieve details) for its niche domain. It is slightly minimal but well-scoped, so score 4.

    Completeness4/5

    The set covers browsing, searching by capability, identification from observation, and retrieving detailed operation packages. Missing features like direct model lookup or procedure listing are minor gaps.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Universal Search-First Knowledge Acquisition Plugin for LLMs. Enables real-time web search and deep page browsing via MCP or CLI. Zero-cost, privacy-first, supports DuckDuckGo, Bing, Google, Brave, Wikipedia, Arxiv, YouTube, Reddit and more.
      2
      15 npm
      53 PyPI
      20
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables AI agents to automate real desktop applications across Windows, Linux, and macOS using incremental screen perception, accessibility trees, OCR, and window management, dramatically reducing token usage compared to screenshot-per-step approaches.
      27 PyPI
      4
      MIT