MiqromanageSupport

Agentic control via MCP

🔒 Enterprise / miqromanage plan only. Run unlocks the agent fleet (departments, approvals). Autonomous control of external systems through MCP is a higher gate. This page describes the design; the capability is being built.

This page explains how a Miqro agent can read context and control systems through Model Context Protocol — using our own models — without ever performing an unapproved action on your tools.

The one rule everything is built around

Miqro has a single, load-bearing safety property:

An agent is a text producer. Nothing it decides reaches your systems until an action is approved and executed through the action queue.

Today, agents propose; a human (or a policy) approves; only then does the platform act. Agentic MCP control keeps that guarantee intact even when the agent is calling tools live, mid-reasoning. The mechanism is below.

What "control via MCP" gives an agent

An MCP server publishes a set of tools (a tool is a named capability with a typed input — search_issues, create_ticket, read_file, open_pull_request, …). With a self-hosted MCP client, a Miqro agent can:

  • Discover the tools a connected server offers,
  • Read live context as it reasons (look something up, then decide), and
  • Act on your systems — gated, see below.

Because Miqro hosts the MCP client itself, the agent's tool calls run inside our process, where we can apply the approval gate to every write. (We deliberately do not hand MCP brokering to a model provider's managed connector, which would move writes outside our control.)

How a tool call is handled — reads vs. writes

Every tool an agent can call is classified as read or write, and the two are handled completely differently:

Tool type Example What happens
Read list_incidents, search_repo, read_file Runs immediately. The agent gets live data and keeps reasoning. No approval needed — reads have no side effect.
Write create_incident, open_pull_request, send_message Not executed inline. The call is staged as an approval item in the action queue and the agent is told it's pending. The real action only happens after approval, through the same executor, audit log, and retry machinery every Miqro action already uses.

So a "write tool" is a first-class thing the agent can call — but calling it means stage it for approval, not do it. This is what preserves the one rule above, even in a live tool-calling loop.

Classification fails toward safety

For an MCP server's tools, Miqro treats a tool as a safe read only if the server explicitly declares it read-only. Anything else is treated as a write and routed through approval. A server cannot label a destructive tool "safe" and have it auto-execute — the absence of a clear read-only signal already means "require approval."

The loop, end to end

agent turn ─▶ model decides to call tools
                │   read:  list_incidents(...)        ─▶ run now, return live data
                │   write: create_incident(...)       ─▶ stage for approval, return "pending"
                ▼
        model sees the reads + that the write is pending, keeps reasoning
                │
                ▼
        finishes with a summary + the list of staged actions awaiting approval

The agent can chain reads freely (search → fetch → decide), stage one or more writes, and explain exactly what it has queued — all in one turn, with zero ability to act on your systems unapproved.

Connecting a system

MCP servers are registered by the account owner and allowlisted — an agent cannot point itself at an arbitrary endpoint. Registration validates the server, lists its tools, and arms them for the agent fleet, exactly like connecting a connector today. Low-risk write tools can optionally be put on a per-account auto-approve list, but even those are recorded in the audit log; everything else waits for a human.

Guardrails (summary)

  • Writes are never executed inline — they stage for approval. (Primary control.)
  • Unknown tools default to "write + approval" — classification fails safe.
  • Servers are owner-registered and allowlisted — no arbitrary outbound targets.
  • Tool descriptions are treated as untrusted data — even if a server's text tries to coax the model into a destructive call, that call is still just a staged approval item a human reviews.
  • The loop is bounded — caps on iterations, tool calls, time, and token spend, so it can't run away.
  • Everything is audited — every read and every staged write is logged.

Relationship to connectors

This is the same model as connectors, generalized. Connectors are typed, hand-written REST integrations with a declared capability manifest; MCP control reaches any MCP-exposed system and reuses the same risk classification and the same approval gate. If a system already has a Miqro connector, use it; MCP control is for everything that doesn't — including coding sources.

See also

  • MCP overview — the two directions, and where this fits.
  • The agent fleet — the execution model, the action queue, and the approval gate this builds on.
  • Coding sources — the first systems we connect.