blipOwner sign-in
For developers

Connect your agent to local businesses.

blip is an MCP server, and speaks PAP and PACT, that lets your agent find a local business, check prices and times, and send a request. The owner confirms by text. blip never holds money.

Connect

MCP server (Streamable HTTP): https://blip.diwas.ai/mcp

MCP versions: 2026-07-28 (stateless: no initialize and no Mcp-Session-Id; every request carries its version, client and capabilities in _meta and the MCP-Protocol-Version, Mcp-Method and Mcp-Name headers), and 2025-03-26 to 2025-11-25 with the initialize handshake. server/discover lists them.

  1. Connecting needs nothing. No sign-in. Searching, prices and open times work straight away.
  2. Acting needs the customer signed in, once. Sign them in with MCP authorization (OAuth) at the same address: they confirm their number on blip's own page, by a texted code or with Google, Apple or Meta, and consent to what you may do. Older clients that keep a session can instead call verify_phone.
  3. The owner has the last word. Each business sets Allow, Ask me or Never for every action. Some actions wait for the owner's reply: poll get_approval.

Signing in

blip follows MCP authorization: a 401 names the protected resource metadata in WWW-Authenticate, the authorization server supports Client ID Metadata Documents (the MCP default) and dynamic client registration, S256 PKCE, the iss parameter on every response (RFC 9207), and tokens bound to the MCP server they're for (RFC 8707). Browsing tools need no sign-in, so the challenge comes only when the customer acts. ChatGPT gets it in the tool result (_meta["mcp/www_authenticate"]) as its Apps SDK expects. No one-time code is ever typed into the chat on 2026-07-28 or on ChatGPT; verify_phone is only offered to older clients that keep an MCP session.

Deposits

blip never takes payments. When a business wants a deposit, pay_deposit texts the customer the business's own payment link. A 2026-07-28 client that declares elicitation.url also gets the link as a URL elicitation (multi round-trip: an input_required result with a signed requestState), so it can open the business's payment page for the customer; the retry completes without paying twice.

For shop owners' agents

The owner's own agent runs the shop at https://blip.diwas.ai/owner-mcp (whats_waiting, answer, connect_booking: the shop's own booking system from a link, with at most one approval tap for the owner), with the same MCP versions. The owner signs in with OAuth on blip's page (issuer https://blip.diwas.ai/owner-oauth, scope owner): by a code texted to the shop's owner number, with the Square account the shop connected, or with a Google account tied to the owner number once. The same token works on the REST API at /api/owner (OpenAPI).

Agent identity

blip's A2A agent cards are signed (A2A 1.0): a detached JWS over the card's RFC 8785 canonical JSON, with the key at /.well-known/jwks.json. Agents that sign their requests with Web Bot Auth (HTTP Message Signatures, RFC 9421, tag="web-bot-auth", keys in the agent's /.well-known/http-message-signatures-directory) are recognized and get their own rate-limit budget instead of sharing one with everyone at the same address.

Limits

Up to 120 MCP or API calls per session every 60 seconds; past that, a 429 with Retry-After. Confirmation codes are limited per number and per IP address. Errors come back as tool results with isError and a sentence saying what to fix.

Testing

Fictional sandbox businesses are available for testing and directory review: search find_businesses with a query that includes sandbox (for example "sandbox haircut" or "sandbox plumber"). Real customers never see them. Their owners are fictional, so nothing is texted to a real business, and every action is allowed straight away. Contact us for a test login.

Discovery

A business with its own agent subdomain also serves these files on its own domain.

Tools

What a search returns

find_businesses returns up to 10 results. Each has on_blip, capabilities (quote, book_visit, book_class, order, pickup_delivery, message) and access: book_here for a business on blip, or contact_directly for a listed business that isn't (with its phone or website and a next_step). Never try to book a listed business that isn't on blip.

Worked example

# MCP 2026-07-28: no handshake and no session. Each request says its version in _meta and in headers.
curl -s https://blip.diwas.ai/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2026-07-28' -H 'Mcp-Method: tools/call' -H 'Mcp-Name: find_businesses' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"find_businesses","arguments":{"query":"plumber","zip":"94110"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientInfo":{"name":"my-agent","version":"1"},"io.modelcontextprotocol/clientCapabilities":{}}}}'

# Older clients (2025-03-26 to 2025-11-25): initialize, then send the Mcp-Session-Id it returns.
curl -s https://blip.diwas.ai/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"my-agent","version":"1"}}}'

Protocols

The same businesses are reachable over the Personal Agent Protocol and PACT. Questions: Support.