Skip to content
Agent surface

This site is operable, not just readable.

Almost every marketing site in this category is a wall an agent has to screenshot and guess at. This one hands over a typed tool list instead, through WebMCP in the browser, and over JSON-RPC everywhere else. It is the product's own argument, performed by the marketing site.

← Back to the agent directory

Checking

Your browser has not shipped navigator.modelContext yet. Most have not, as of 2026. The same tools are available over JSON-RPC at /api/mcp, which needs no browser support at all.

  • list_bag_modulesread-only

    List every capability module AgentBag ships, each with a published status (live, beta, or bench) and the caveat that goes with it. Optionally filter by status. Use this first to understand what the product actually does.

    example: {"status":"bench"}

  • get_bag_moduleread-only

    Fetch the full published entry for one module: what it does, why it matters, how it works, its status caveat, and its FAQs. Use after list_bag_modules when you need depth on a specific capability.

    example: {"slug":"trustgraph"}

  • search_bagread-only

    Answer a natural-language question strictly from the published capability ledger, returning citations to the modules the answer came from. Declines rather than speculating when the ledger does not cover the question.

    example: {"question":"What stops one agent reading another agent data?"}

  • check_workspace_addressread-only

    Turn a proposed team name into the tenant subdomain it would become, and report whether that label is usable. Does not reveal whether an address is already taken; that is deliberate.

    example: {"name":"Acme Robotics"}

  • answer_faqread-only

    Answer a common question about AgentBag in machine form: a terse declarative answer plus a flat object of primitive-valued facts you can assert against without parsing prose. Prefer this over search_bag for questions about pricing, limits, privacy, tenancy or how to evaluate the product. Call with no arguments to list every question.

    example: {"question":"what is not built yet"}

  • get_pricing_statusread-only

    Report the current pricing position honestly, including the fact that billing is deliberately disarmed and no numbers are published yet.

    example: {}

  • join_waitlistside-effecting

    Submit an email address to the AgentBag waitlist, optionally reserving a workspace address. This sends data on the user behalf; confirm with them before calling it.

    example: {"email":"you@example.com","workspace":"acme"}

    not runnable here
Endpoints

Everything a machine needs.

try it from a terminal

curl -s https://agentbag.ai/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

curl -s https://agentbag.ai/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"list_bag_modules","arguments":{"status":"bench"}}}'
Embed anywhere

One script tag. Your site has an agent.

Drop a single line of JavaScript on any page. A branded launcher appears in the corner, your visitors click it, and they are talking to your published agent inside a sandboxed panel. No iframes to manage, no auth to wire, no build step. The agent reads your page, answers in context, and can even interact with your UI if you opt in.

paste into your site

<script
  src="https://agentbag.ai/embed.js"
  data-agent="<your-agent-folder-id>"
  data-accent="#5f6f3c"
  data-launcher="Chat with us"
  data-voice="on"
  data-page-context="on"
></script>

Shadow DOM isolated

The widget renders inside a Shadow DOM root. Your CSS cannot break it, and it cannot break yours. Zero style collisions on any site.

Sandboxed iframe

The chat panel loads in a strict sandbox. No top navigation, no credential leaks. Guest tokens stay inside the frame. Your host page is never exposed.

Lazy loaded

The iframe is not created until the user clicks the launcher. Zero impact on your page load. No hidden network requests until someone actually wants to talk.

Configuration

  • data-agent"<folder-id>"
    Your published agent folder ID. Required.
  • data-accent"#5f6f3c"
    Brand color for the launcher button and accents.
  • data-launcher"Chat with us"
    Custom text on the launcher pill. Up to 40 characters.
  • data-voice"on"
    Enable voice input. Users can speak instead of type.
  • data-position"left" | "right"
    Which corner the launcher appears in. Default: right.
  • data-theme"light" | "dark" | "auto"
    Color scheme for the chat panel.
  • data-page-context"on"
    Let the agent read visible page content to give contextual answers.
  • data-page-actions"on"
    Let the agent interact with the page: click, scroll, highlight elements.
  • data-context-selector"main"
    CSS selector scoping which content the agent can read. Default: main or article.

How it works under the hood

  1. 1. Loader runs in your page. It creates a Shadow DOM host and paints the launcher button. No iframe yet, no network cost.
  2. 2. User clicks the launcher. The iframe is created with sandbox restrictions and loaded from our origin. The guest session starts.
  3. 3. Page context flows in (opt-in). If data-page-context="on", the loader extracts visible text from your page and sends it to the agent for contextual answers.
  4. 4. Page actions drive your UI (opt-in). If data-page-actions="on", the agent can highlight, scroll to, and click elements on your page to guide users.