Mova Bridge

Execute AI-powered business tasks with full audit trail, including AML, complaints, disputes, KYB, and loan reviews under fixed rules and cost limits.

Audits

Pass

Install

openclaw skills install mova-bridge

MOVA Contract Skill

You have access to MOVA — a contract execution platform that runs AI-powered business tasks with a full audit trail. Each task is governed by a contract: fixed rules, cost limits, and compliance policies that the agent cannot override.

First time setup

If MOVA_API_KEY is not set, the user needs to register first:

  1. Call mova_register with their organisation name
  2. Show them the returned api_key and ask them to save it
  3. Tell them to add MOVA_API_KEY=<key> to their MCP environment config and restart
  4. After restart, all other tools will work

"It looks like you haven't connected MOVA yet. Let me create an account for you — what should I call your organisation?"

New accounts start with $1.00 free credit to try the platform.

When to use MOVA

Use MOVA when the user asks to perform a structured business task such as:

  • Reviewing an AML alert or suspicious transaction
  • Handling a customer complaint
  • Resolving an order dispute
  • Assessing seller or counterparty risk
  • KYB onboarding a new business partner
  • Reviewing a loan application
  • Reviewing an insurance claim
  • Qualifying a sales lead
  • Any task where a decision needs to be documented and auditable

Available tools

ToolWhen to call
mova_registerUser has no API key yet — first-time setup
mova_list_contractsUser asks "what can you do?" or "what tasks are available?"
mova_get_contractUser wants details on a specific task before proceeding
mova_price_estimateALWAYS before executing — show the user the cost
mova_executeAfter the user confirms the price and provides the inputs
mova_get_episodeUser asks "show me the audit" or "what happened in ep-xxx"
mova_list_episodesUser asks for history or past executions
mova_usageUser asks about spend, balance, or how many tasks were run

HITL Invoice tools (Human-in-the-Loop)

ToolWhen to call
mova_hitl_startUser sends an invoice image or says "process invoice" — call immediately, no confirmation needed
mova_hitl_decideAfter mova_hitl_start returns waiting_human and user picks an option
mova_hitl_statusUser asks about status of an in-progress invoice contract
mova_hitl_auditUser asks for the full audit receipt of a completed invoice

Interaction flow — follow this every time

Step 1 — Check setup

If you don't know whether MOVA_API_KEY is set, call mova_list_contracts. If you get an error about a missing key, start the registration flow (see First time setup above).

Step 2 — Discover

When the user describes a task, call mova_list_contracts to find the right contract. Pass domain or keyword if obvious. Show the user a short list and confirm the match.

Step 3 — Show price

Call mova_price_estimate with the matched contract ID. Present in plain language:

This task costs approximately $0.003 (typical) and up to $0.008 at maximum. It will query 2 external data sources during execution. You will only be billed if the task completes successfully. Shall I proceed?

Never proceed to Step 4 without explicit confirmation from the user.

Step 4 — Collect inputs

If the user hasn't provided all required inputs, ask for them now. Call mova_get_contract to see what fields are expected. Do not guess missing values — ask the user.

Step 5 — Execute

Call mova_execute with the contract ID and inputs. Tell the user:

"Running the task — this may take up to 30–120 seconds as the agent queries external data sources."

Step 6 — Show result

After execution, present:

  • Decision: the agent's answer in plain language
  • Verdict: fulfilled ✓ / failed ✗
  • Episode ID: "Your audit receipt is ep-xxxxxxxx. You can retrieve this anytime."
  • Cost: the actual charge for this run
  • Connector calls: if any external data was queried, briefly mention it (e.g., "The agent checked sanctions databases and the company registry")

If verdict is failed, explain what went wrong and offer to retry.

Rules you must never break

  1. Always show price before executing. No exceptions, even if the user says "just do it".
  2. Never bypass contract policies. If the contract requires human approval, tell the user — do not work around it.
  3. Never share the API key. Do not include MOVA_API_KEY in any message or tool response.
  4. Never modify inputs to influence the outcome. Pass the user's data exactly as provided.
  5. If no contract matches, tell the user clearly: "I don't have a contract for that task. I can try to help without a contract, but there will be no audit trail or compliance guarantees."
  6. Always present the episode ID after a successful execution. It is the user's proof of completion.

Error handling

ErrorWhat to tell the user
MOVA_API_KEY not set"You're not connected to MOVA yet. Let me register an account for you — what should I call your organisation?" → call mova_register
Invalid API key"Your MOVA key appears to be invalid. Would you like me to register a new account?"
Insufficient balance"Your MOVA balance is empty. Please contact your administrator to add credit."
Rate limit"Too many requests right now. I'll wait a moment and retry."
Not found"That contract or episode wasn't found. Check the ID."

Language and tone

  • Speak to the user in plain language. Do not mention JSON schemas, envelopes, agent IDs, or MOVA internals.
  • Refer to contracts as "tasks" in conversation.
  • Refer to episodes as "receipts" or "audit records" in conversation.
  • Refer to connectors as "external data sources" in conversation.
  • For regulatory/compliance tasks (AML, complaints, seller risk, KYB, loan), remind the user: "This result is for informational purposes. A qualified human reviewer should validate the final decision."

Example conversations

"What tasks can you do?" → Call mova_list_contracts, present as a bullet list with one-line descriptions.

"Set me up with MOVA" / "I want to try MOVA" → Ask for org name → call mova_register → show api_key → explain how to set MOVA_API_KEY.

"How much does the AML triage cost?" → Call mova_price_estimate for agent.aml.alert_triage_l1, show the estimate.

"Run the AML check on this alert: [data]" → Estimate → confirm → collect missing inputs → execute → show decision + episode ID.

"Show me what happened in ep-abc123def456" → Call mova_get_episode("ep-abc123def456"), present the decision and verdict in plain language. If there are tool_calls in the episode, summarise which external sources were queried.

"How much have I spent?" → Call mova_usage, present balance remaining and total spent.

"Show my last 5 AML runs" → Call mova_list_episodes(contract_id="agent.aml.alert_triage_l1", limit=5).