Skip to content

Read-only MCP server · Zoho Inventory

A private Agent Studio-style connector for Zoho Inventory

One-time OAuth, available to every agent the merchant runs, scoped to their organization, read-only by construction, and audited call by call.

Use it from your agent

The public demo server runs against synthetic data for Chai & Co (DEMO).

Terminal
claude mcp add --transport http mb-demo https://merchantbridge-api.vercel.app/mcp/demo

Then ask: “Is CHAI-250 in stock in Bengaluru, and at what price?”

3-minute tour

What a reviewer sees

Everything below runs live against the demo tenant, with no account.

  1. Open the playground

    No login. Pick a scenario card modeled on an Agent Studio launch agent.

  2. Watch a real agent work

    A live LLM agent calls the MCP server; the trace shows each tool, its args, latency, cache hits, governor decisions and budget left.

  3. Break Zoho on purpose

    Flip "Zoho 429 (code 44)" or "Expired token" and see the backoff, the circuit, and a structured RATE_LIMITED result.

  4. Ask it to change data

    The refusal card makes zero tool calls: there are no write tools to call.

  5. Plug it into your own Claude

    Copy one command and the same demo server shows up in Claude Code or as a Claude.ai custom connector.

Agent Studio principles

Principle, then the feature that enforces it

Agent Studio publishes its guardrails; this connector maps each one to something the server does, not something the prompt asks for.

PrincipleHow MerchantBridge enforces it
Review firstRead-only by construction: GET-only client, READ scopes only, no write tools exist.
Verified first-party dataEvery result carries as_of and a zoho_url deep link so a human can check the claim.
Validation layerZod schemas on input and output, scope checks, email and phone masking, free text fenced as untrusted.
Audit trailExactly one usage event per tool call, success or error, with masked arguments.
Data stays putNo mirroring of merchant data; only a short-TTL cache keyed by tenant.

Architecture

One thin door, one governed path to Zoho

MCP is only the door. Every tool runs through the same runtime and every Zoho request goes through the rate governor, so the public demo exercises exactly what a merchant’s agents would.

Merchant agents

Claude Code, Agent SDK, Messages API, Claude.ai

This site

The playground runs a real agent and the explorer calls tools directly, both on the demo tenant
POST /mcp (Bearer mb_live_) · /mcp/demo

MerchantBridge API

MCP server

Stateless Streamable HTTP; 10 read-only tools, no write tools

ToolRuntime

Zod in and out, PII masking, untrusted text, 10K-token cap, one usage event per call

Rate governor

80/min, concurrency leases, daily share, circuit on code 44, short-TTL cache
GET only · ZohoInventory.*.READ

Zoho Inventory

Live tenants, per-DC api_domain, encrypted refresh tokens

FakeZoho

Demo tenant: wire-accurate fake upstream with injectable faults

Tool surface

10 read-only tools

Lists return at most 100 rows with an opaque cursor; every result stays under 10K tokens. Money comes back in minor units so it compares directly with Razorpay amounts.

  • zoho_check_stock

    Stock per location, reorder level and price for several known items at once: up to 25 ids or 5 SKUs.

  • zoho_find_by_payment_reference

    A Razorpay pay_ / order_ / rfnd_ id or UPI UTR to the payment, the invoices it paid and the order shipped.

  • zoho_get_connection_status

    Organization, data center, plan, requested scopes, remaining daily budget and circuit state.

  • zoho_get_invoice

    One invoice: balance, due date, line items and the linked sales order.

  • zoho_get_item

    One item by id or exact SKU: price, stock per location, reorder level.

  • zoho_get_sales_order

    One sales order with line items, packages, tracking and invoices embedded.

  • zoho_list_invoices

    Invoices filtered by status, customer, due date or reference number.

  • zoho_list_sales_orders

    Sales orders filtered by customer, status or date within the first 600 orders Zoho returns (believed newest first).

  • zoho_search_customers

    Customers by name, company, email or phone (contact details masked).

  • zoho_search_items

    Items by text, SKU or name, including low-stock and per-location filters.

See it answer a dispute in one turn

Payment reference to invoice to sales order to tracking number, with the trace open.

Open the playground