Nova Help

The tools an assistant gets over MCP

The tools, resources and prompts Nova's MCP server offers, including find_operations and call_nova_operation, which reach everything a connection's grant covers.

Updated in release 0.0.1

Once connected (Connect an AI agent through MCP), an assistant calls tools/list and gets only the tools its connection can actually use.

Built-in tools

Tool What it does
whoami Who the connection acts as, which organization, and the permissions behind it. Call it first.
list_my_organizations The organizations the person belongs to; a machine credential is bound to one.
find_operations Search every operation this connection can call, by words, address or permission key.
call_nova_operation Call any operation find_operations returned, by its operation_id.

Documented tools

The documented operations in the API reference are tools with the same names: list_accounts, create_quote, send_invoice, schedule_work_order, search_help, get_help_article and so on. A tool is listed only when the connection holds every permission it checks.

Reaching everything else

An assistant cannot hold the roughly 3,200 operations Nova has, so it searches for them:

{"jsonrpc": "2.0", "id": 3, "method": "tools/call",
 "params": {"name": "find_operations",
            "arguments": {"query": "void agreement", "limit": 5}}}
{"items": [{"operation_id": "post_agreements_by_agreement_void",
            "method": "POST",
            "path": "/v1/agreements/{agreement_uid}/void",
            "summary": "Void an agreement",
            "permissions": ["agreements.void"],
            "path_params": ["agreement_uid"],
            "read_only": false, "destructive": false}],
 "count": 1,
 "next_step": "Call one with call_nova_operation, passing its operation_id."}

Only operations the connection holds the permissions for are returned. Then:

{"jsonrpc": "2.0", "id": 4, "method": "tools/call",
 "params": {"name": "call_nova_operation",
            "arguments": {"operation_id": "post_agreements_by_agreement_void",
                          "arguments": {"agreement_uid": "agr_5c2e9a0d1b7f4e36",
                                        "body": {"reason": "Customer cancelled"}}}}}

Inside arguments: address placeholders by name, filters as plain keys, the request body under body. The operation runs its own permission checks, so these two tools add reach, never rights. A connection with nothing granted is not offered them.

Resources and prompts

  • Resources: every help article as nova://help/<key>. Read the article for a screen before acting on it.
  • Prompts: create_quote_for_customer, schedule_work_order and answer_with_help.

When a tool call fails

The result is marked isError: true and its text is Nova's error (Errors and how to recover). The ones an assistant meets most:

  • approval_required — tell the person, then repeat the same call once they approve (Handle an action that waits for a person's approval).
  • A missing permission — say which one (detail.missing_permissions); a person can add it to the connection.
  • agent_outside_working_hours — say when it may act next.
  • 429 — slow down; wait the time the error gives.
Was this helpful?