neruvaBusiness identity for the AI era

Developers

Each business on Neruva is one canonical identity. The pages, the JSON, the schema.org data and the MCP tools are all generated from it, so they never disagree.

Read

GET /api/businesses?q=penetration+testing&category=Cybersecurity&limit=50&offset=0
GET /api/businesses/{id}            the whole identity
GET /api/businesses/{id}/services
GET /api/businesses/{id}/trust      claim and verification state, per-field states
GET /api/businesses/{id}/actions    what you can do with this business
GET /llms-full.txt                  every listed profile, one line each
GET /health                         {"ok": true} when the service is up

Search needs every query word to match (name, category, services, industries, areas, description). If no profile matches all of them, you get profiles that match some, with "match": "partial". Responses carry total, limit, offset and a next link.

Every field comes back as {"value", "state", "source": {"url", "date", "asserted_by"}}.

Treat sourced facts as what the company's website said on that date, not as confirmed. The schema.org data on each profile page carries the same states as additionalProperty entries (neruva:state:<field>) plus isBasedOn and dateModified.

Act

Only claimed businesses that turned on booking list an action. Unclaimed profiles return an empty list: the business hasn't agreed to take requests through Neruva.

GET  /api/businesses/{id}/availability?start=&end=     ISO 8601 with offset, up to 14 days
POST /api/businesses/{id}/consultation-request
{
  "start": "2026-10-06T10:00:00-04:00",
  "customer": {"name": "Pat Buyer", "email": "pat@buyer.example"},
  "company": "Buyer Co",
  "answers": {"Company size?": "120 staff"},
  "customer_confirmed": true,
  "agent": {"name": "your-assistant"}
}

Set customer_confirmed only after the person has said yes to this business and this time. Never invent contact details. Writes are limited to 10 per 10 minutes per client address (429 rate_limited after that). Availability for a business without a bookable action returns 409 not_available. Every error is {"error": {"code", "message"}}.

MCP

The same operations are available as MCP tools at https://neruva.io/mcp (streamable HTTP).