mcp

AIDA is Neon Law Navigator's agent. In Google Gemini Enterprise you tag @AIDA and ask, in plain English, to work with the firm's data — look someone up, add a client, start a retainer — with no install and no CLI.

Use @AIDA in Google Gemini Enterprise

A lawyer adds AIDA once through Gemini Enterprise's "Add AIDA" connector, then talks to her in the ordinary chat box. Every request is plain language: AIDA works out which of her tools answers it, runs that tool against the same database the portal reads, and replies. You never name a tool or write code.

What you can ask

Some of what you can ask for today — phrase it however you like; the examples are just illustrative:

Ask for…Example promptWhat AIDA does
Add a person"Add Maya Patel, maya@example.com, to the CRM."Creates the person record.
Look someone up"Show me everyone with a neonlaw.com email."Finds matching people.
List jurisdictions"What states can we organize an entity in?"Lists every jurisdiction.
Start a notation"Start a retainer for maya@example.com."Begins the questionnaire.
Answer a notation(AIDA asks the next question; you answer in chat)Records the answer, asks the next.
Check a notation body"Validate this markdown notation."Lints it and reports problems.

AIDA confirms before she acts

Under the hood

For the technically minded. AIDA is reached the same way on any host that speaks the protocols — A2A first, then MCP, over one tool catalog. Gemini Enterprise's "Add AIDA" connector is one such host.

A2A (Agent2Agent). A host learns about AIDA from her public agent card at GET /api/aida.json — name, skills, transport, security schemes — then sends each chat message as a JSON-RPC message/send to POST /api/aida/rpc, authenticated with the same Google Workspace identity that signs into the portal. No new identity provider, no per-tool setup.

MCP (Model Context Protocol). The catalog also speaks MCP at POST /mcp, and web::a2a bridges the two so A2A and MCP share one registry (src/tools/mod.rs). Every tool name carries the aida_ prefix so it stays grouped in a multi-server client. Both endpoints sit on the web pod behind the same auth stack (Google OAuth → OPA), on the same Cloud SQL connection the public site uses.

How a query runs — two model calls

Behind a single plain-English ask are two model calls around one tool run. The first decides which tool to call; AIDA runs it (the query against Cloud SQL); the second turns the result into the answer you read. The router is Vertex AI Gemini Flash in production (a NullRouter in local dev points callers at the metadata.skill backdoor instead).

sequenceDiagram
    actor Lawyer
    participant GE as Gemini Enterprise
    participant AIDA as AIDA (/api/aida/rpc)
    participant LLM as Vertex AI Gemini Flash
    participant DB as Navigator (Cloud SQL)

    Lawyer->>GE: "@AIDA show me everyone with a neonlaw.com email"
    GE->>AIDA: message/send (free-form text)

    rect rgb(235, 244, 255)
    note over AIDA,LLM: LLM call 1 — pick the tool
    AIDA->>LLM: user text + tool catalog
    LLM-->>AIDA: call aida_show_person { email: "neonlaw.com" }
    end

    AIDA->>DB: run the query
    DB-->>AIDA: matching rows

    rect rgb(235, 255, 240)
    note over AIDA,LLM: LLM call 2 — answer from the result
    AIDA->>LLM: tool result fed back into history
    LLM-->>AIDA: natural-language answer
    end

    AIDA-->>GE: Task completed (answer artifact)
    GE-->>Lawyer: rendered answer

For a request that changes data the first call still picks the tool, but AIDA returns an input-required task and waits for your yes before the tool runs — the confirmation gate described in aida-a2a-interaction.md. The one-time wiring (agent card, OAuth, registration) lives in gemini-enterprise-mcp.md.