Technical Reference

Navige Technical Reference

Navige sits between your AI agent and the actions it takes, evaluating every call against your rules before it's allowed to execute. Connect through MCP for native tool interception, or call the generic enforcement endpoint directly from any language. Every decision is logged to an append-only audit trail; any organisation can also turn on blockchain anchoring, free, for independently verifiable proof the log hasn't been altered.

API Base URL
https://api.navige.ai
Auth Header
Authorization: Bearer nv_your_key

Quick Start

Two ways to connect. MCP-speaking agents (Claude Desktop, Cursor, Cline, Continue, and any other MCP-compatible client) point at Navige as a native MCP server — see the MCP section below. Anything else calls POST /enforce directly with a virtual key — see the setup guide's Direct REST tab for curl, Python, and Node examples.

Authentication

All authenticated endpoints take a virtual key, minted per agent from your dashboard's Agents page (shown once). Pass it as a bearer token:

http
Authorization: Bearer nv_your_key_here

An MCP client that can't set custom headers can pass the same key as a query parameter instead: ?api_key=nv_your_key_here.

Sign in to the dashboard itself with your email and password — each organisation supports multiple team members with owner, admin, and viewer roles, not a single shared credential. A virtual key is scoped to one agent and carries that agent's activity; it's shown once at creation and can't be retrieved again, only revoked and replaced.

MCP — Claude Desktop and other MCP clients

Connect any MCP-compatible agent by adding Navige as an MCP server in your config. Every tool call passes through Navige's governance pipeline before it executes.

json — claude_desktop_config.json
{
  "mcpServers": {
    "navige": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.navige.ai/mcp?api_key=nv_xxx"]
    }
  }
}

Governance Pipeline

Every call through MCP or /enforce runs the same pipeline, in order. The first check that stops the call returns its decision immediately — nothing later in the list runs.

1
Authentication
Virtual key validated against a Redis-cached lookup. Agent, organisation, and plan resolved.
401 if invalid
2
Kill-switch check
Checks for an active kill switch on this agent, tool, MCP server, or credential. A switch flipped from the dashboard takes effect on the very next call — no redeploy, no cache to wait out.
BLOCKED
3
Usage limit check
Monthly call count checked against plan limit. Free = 5K, Starter = 100K, Growth = 1M, Business = 5M, Enterprise = unlimited.
Denied
4
Policy evaluation
Your rules are evaluated against the call by deterministic code — no model in the decision path. The same call, against the same rules, always produces the same decision. If nothing matches, a blast-radius backstop applies: financial and destructive actions default to requiring approval rather than silently passing through.
Denied
5
Approval (if the matched rule requires it)
A pending approval is created and a notification sent — Slack, email, or a signed generic webhook — with one-click Approve/Deny links, no login required to decide. The call holds open for up to 5 minutes waiting on a decision; a caller with a shorter timeout can pass wait: false and poll GET /enforce/status/:approvalId instead.
PENDING
6
Log + allow
The decision is written to the append-only audit trail, with PII masking and secret redaction already applied, before the response reaches the caller. On MCP, an allowed call is forwarded to the real tool; on /enforce, the caller performs the real action itself after seeing the decision.
ALLOWED

Caching

To keep the pipeline fast, Navige caches two things in Redis:

Important: Changing a policy, adding a kill switch, or editing a rule invalidates its cache immediately — you're never evaluated against a stale policy for longer than it takes the write to complete.

PII & Compliance

Before any call's arguments are written to the audit trail, Navige redacts what shouldn't be stored raw — the original, unredacted values are still what your policy rules evaluate against; only what gets persisted is masked:

Every redaction is counted, not just applied silently — each audit entry records how many PII matches and secrets it redacted, feeding directly into compliance reports rather than being recomputed against data that was never stored raw.

Blockchain Anchoring

Blockchain anchoring is optional, off by default, and free on every plan — turning it on doesn't require an upgrade. Once an organisation turns it on, Navige hashes each batch of audit-log entries together with the hash of the previous batch, and records the result on the Polygon Mainnet via a smart contract at 0xd2544fc3164ac0eBfb6B7A2c193800F9651Fc46F.

Because each batch's hash includes the one before it, the batches form a chain: altering or removing any past batch changes its hash, which breaks every hash computed after it. This creates an independently verifiable tamper-evident record. The audit trail itself is also append-only at the database level — direct edits or deletes are blocked outright — so if any logged entry in a batch were somehow altered, recomputing that batch's hash would not match what's on-chain, and neither would any batch anchored after it.

Anchor records are stored alongside your audit logs. Use the Blockchain tab in your dashboard to see every anchor with a direct Polygonscan link, or query the API below to verify programmatically.

Current implementation: chained batch-level hashing — proves a batch, and every batch after it, is linked to what came before. It doesn't prove completeness within a single batch (a record deleted before that batch's hash is taken won't be detected on its own). Per-record Merkle proofs are on the roadmap.

Viewing your anchors

Every anchor — batch hash, Polygon transaction hash, and a pre-computed Polygonscan link — is listed in your dashboard's Blockchain tab. This is a dashboard feature, not a separate API-key-authed endpoint on the gateway; the shape below is what that view returns:

json — anchor record
{
  "id": "uuid",
  "hash": "0xabc123...",
  "prev_hash": "0x999888...",
  "batch_from": "2026-07-22T13:00:00.000Z",
  "batch_to": "2026-07-22T14:00:00.000Z",
  "action_count": 142,
  "status": "live",
  "tx_hash": "0xdef456...",
  "polygonscan_url": "https://polygonscan.com/tx/0xdef456...",
  "created_at": "2026-07-22T14:00:00.000Z"
}

How to verify a batch independently

  1. Export your audit log for the batch's time window, and note the log_hash of the anchor immediately before it — that's your prevHash (null for an organisation's first anchor)
  2. Recompute: ethers.keccak256(ethers.toUtf8Bytes(JSON.stringify({ prevHash, batch }))), where batch is each record's id, occurredAt, decision, requestHash, in the same order the batch was built
  3. Compare the result to log_hash above
  4. Open the polygonscan_urlMore details → Input data — the same hash is written on-chain

Salesforce & Agentforce

Two separate pieces, both live: automatic discovery of every Agentforce and Einstein Bot agent in a connected org, and — new — a real-time enforcement package for the ones you specifically want governed.

Discovery is self-serve from the dashboard — Settings → Salesforce. Create a Connected App (or External Client App) in your own Salesforce org, set its callback URL to https://app.navige.ai/api/platforms/salesforce/callback, and paste in your instance URL and Consumer Key/Secret. From there it's a real OAuth flow (Authorization Code + PKCE) that records every agent found, plus its CRM system access, in your Registry — no code deployed into Salesforce for this part, and no CLI required. Salesforce Connected Apps are scoped to the org that creates them, which is why this needs your own org's app credentials rather than a single "click to connect" button. It's inventory only: Agentforce runs entirely inside Salesforce's own runtime, so this never shows a live conversation trace, only that an agent exists and what it can reach.

Real-time enforcement is a small, installable Salesforce package (Apex classes, a permission set, a platform event) your admin deploys with the Salesforce CLI. It adds an Invocable Action — Navige: Check Before Acting — that any Flow or Agentforce Topic Action can call right before a real step executes, getting back the same allow / deny / approval decision every other integration gets. Because Salesforce Apex callouts cap out around 120 seconds and an approval can take up to 5 minutes, the package always calls with wait: false and polls for the outcome via a Queueable job, publishing a platform event once Navige reports a final decision.

Worth being precise about: real-time enforcement is opt-in per action — a Salesforce admin wires the Invocable Action into each Flow or Topic they want governed. It isn't automatic coverage of every Agentforce agent the moment a Salesforce org connects.

Full setup instructions, the package source, and a verification checklist are in the salesforce/ directory of the Navige repository.

Plan Limits

PlanPriceCalls/moAgentsRetention
Free$05,00017 days
Starter$29/mo100,000330 days
Growth$249/mo1,000,0001090 days
Business$649/mo5,000,000Unlimited1 year
EnterpriseCustomCustomUnlimitedCustom

Limits are enforced at the intercept point. When a limit is exceeded, the API returns HTTP 429 with a clear error message. Usage resets on the 1st of each calendar month.

Ready to connect?
Follow the interactive setup guide for your exact stack.
Open Setup Guide →