Skip to content

Proquiro for developers & AI agents

Proquiro Developer Resources

Proquiro publishes a complete agent-ready surface — an MCP server with land-acquisition calculators, an OpenAPI 3.0 spec for the public API, RFC 9727 API Catalog, an Agent Skills index, llms.txt, and markdown content negotiation on every HTML page. Use the sections below to wire Proquiro into agents, copilots, and downstream tooling.

Proquiro MCP Server

The Proquiro MCP server speaks JSON-RPC 2.0 over Streamable HTTP and exposes6 land-acquisition calculator tools that AI agents can call directly. MCP clients (Claude Desktop, Cursor, custom agents) can discover the server through its server card and stream tool calls without screen-scraping. SendAccept: application/json, text/event-stream on the handshake to opt into SSE responses.

Endpoint
POST https://proquiro.com/mcp
Protocol version
2025-11-25
Transport
Streamable HTTP — JSON or SSE on the same URL, CORS-enabled, batch-aware
Session header
Mcp-Session-Id issued on first response; pass it back on subsequent requests
Server name
proquiro-land-tools v1.0.0
Methods
initialize, ping, tools/list,tools/call

Tools exposed by the Proquiro MCP server

  • land_area_convert — Convert a land area value between Indian land measurement units (sqft, sqm, sqyd, acre, hectare, cent, ground, guntha, biswa, bigha, kanal, marla, katha, dismil, ankanam).
  • price_per_sqft — Calculate price per square foot, square meter, and price per the supplied unit for a land parcel.
  • land_roi — Calculate land investment return: total profit, total ROI, and annualized ROI.
  • guideline_value_check — Compare government guideline value (circle rate / jantri / ready reckoner) against market rate. Returns market premium percentage.
  • land_acquisition_cost — Calculate full land acquisition cost including stamp duty, registration, brokerage, legal fees, and other costs.
  • proquiro_roi — Estimate annual ROI of replacing manual land acquisition coordination with Proquiro.

Quick test from the command line

curl -sS https://proquiro.com/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Proquiro Docs MCP Server

A second MCP server at https://proquiro.com/mcp/docs, over the documentation rather than the product. The server above lets an agentcompute things; this one lets it answer them — what a Patta is, how an EC search works, what the stamp-duty rates are — across the help centre, the land-terminology glossary, and the long-form guides.

  • search_docs — natural-language or keyword search. Returns ranked matches, each with a citable excerpt and the public page URL.
  • get_doc — full text of one document by the id search returned.
  • list_docs — every id, title, and URL, optionally filtered by kind.

Same transport, protocol negotiation, and CORS as the product server, and equally credential-free. Two servers rather than nine tools on one, because the audiences differ: an agent wiring up calculators does not want the glossary in its tool list.

Proquiro Public API

The Proquiro Public API is intentionally narrow — it covers form-handler and health endpoints for the marketing site. It is not a general-purpose data API for the hosted Proquiro app. All endpoints are rate-limited per IP, honeypot-protected, and reject disposable email domains.

  • POST /api/v1/demo-request — submit a demo request (5 req/IP/hr)
  • GET /api/v1/health — service health (returns { status })

The unversioned aliases /api/demo-request and /api/healthremain permanently supported — seeAPI versioning & deprecation. Markdown reference: /api/docs.

Proquiro OpenAPI Spec

The full OpenAPI 3.0 specification for the Proquiro Public API is published as a static, CORS-enabled JSON document with the canonicalapplication/openapi+json media type so SDK generators and AI tooling can consume it directly.

Catalog
/.well-known/api-catalog (RFC 9727 application/linkset+json)

API versioning & deprecation policy

The Proquiro Public API is versioned in the URL path. The current version is v1: /api/v1/demo-request and/api/v1/health are the canonical paths documented in the OpenAPI spec. The unversioned /api/* paths are permanently supported aliases ofv1 and will never change behavior.

  • Breaking changes only ship in a new path version (/api/v2/*). Existing versions keep their contract — request shape, response shape, and error codes are additive-only within a version.
  • Deprecations are announced at least 6 months in advance. A deprecated endpoint starts returning a Deprecation response header, and a Sunset header (RFC 8594) with the retirement date once one is scheduled.
  • Deprecations and new versions are also announced on theproduct updates changelog and in theOpenAPI spec (deprecated: true on the affected operations).

Agents can rely on this surface: nothing under /api/v1/* or its unversioned aliases will break without a versioned replacement and a 6-monthSunset window. Canonical policy page:/developers/deprecation-policy — Proquiro API Deprecation Policy.

Rate limits

Every /api/* endpoint response carries the standard IETF draft rate-limit headers so agents can self-throttle in real time (the publicly cached discovery documents /api/docs and /api/openapi.json are rate-limited but carry no per-IP counters): RateLimit, RateLimit-Limit,RateLimit-Remaining, RateLimit-Reset (seconds until the window resets), and the combined RateLimit /RateLimit-Policy fields. A 429 additionally carriesRetry-After and the structured JSON errorwith error.code = "RATE_LIMITED".

  • Global ceiling: 300 requests per minute per IP across all/api/* endpoints (RateLimit-Policy: 300;w=60)
  • Demo requests: 5 requests per IP per hour on/api/v1/demo-request (RateLimit-Policy: 5;w=3600) — the endpoint's own headers reflect this stricter window

On a 429, wait Retry-After seconds before retrying; whenRateLimit-Remaining reaches 0, back off untilRateLimit-Reset elapses. Need sustained higher volume? Seeagent authentication for partner access.

Agent authentication

The Proquiro public API and MCP server are callable without a credential. Authentication is entirely optional: it exists so an agent can present a stable identity and hold a credential it can revoke — it unlocks no extra data and raises no rate limit.

Discovery follows the standard two-hop path:

Only the anonymous identity type is offered. There is no claim ceremony and no agent-provider trust list, because this domain has no user accounts to bind a registration to — so those endpoints are deliberately absent from the metadata rather than advertised and broken. Register, exchange, use, revoke:

# 1. Register (returns a short-lived identity_assertion)
curl -sS https://proquiro.com/agent/identity \
  -H 'content-type: application/json' \
  -d '{"type":"anonymous","client":{"name":"AcmeAgent","version":"1.0"}}'

# 2. Exchange it for an access token (RFC 7523 JWT-bearer)
curl -sS https://proquiro.com/oauth2/token \
  -d grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer \
  -d assertion=<identity_assertion>

# 3. Present it. /api/v1/health echoes an `agent` block back.
curl -sS https://proquiro.com/api/v1/health -H 'authorization: Bearer <access_token>'

# 4. Revoke it (RFC 7009, idempotent)
curl -sS https://proquiro.com/oauth2/revoke -d token=<access_token>

An invalid bearer token returns 401 withWWW-Authenticate: Bearer resource_metadata="…" so an agent can bootstrap discovery from the failure. Omitting the header entirely still returns200. Background and partner access:/developers/auth — Proquiro Agent Authentication Guide.

Idempotent writes

Every write operation accepts an optional Idempotency-Key request header (draft-ietf-httpapi-idempotency-key-header). Agents retry on network failures; without a key, a retry of a submission that already succeeded comes back as 409 DUPLICATE_REQUEST — indistinguishable from a genuine duplicate.

  • Resending the identical body with the same key replays the original status and body, marked Idempotency-Replayed: true
  • Reusing a key with a different body returns422 IDEMPOTENCY_KEY_REUSED rather than silently returning someone else's response
  • Keys are scoped per operation, remembered for 24 hours, and should be UUIDs
  • Transient failures (429, 5xx) are never cached, so they stay retryable
curl -sS https://proquiro.com/api/v1/demo-request \
  -H 'content-type: application/json' \
  -H 'idempotency-key: 5f9d0a1c-6a1e-4f2d-9f3b-7c2a8e1d4b60' \
  -d '{"name":"Jane Doe","email":"jane@company.com","phone":"+91 99000 00000"}'

Sandbox environment

https://site-staging.proquiro.com is a dedicated staging environment for integration testing. It runs the same code as production on separate Worker infrastructure, exposes the same endpoints, needs no credentials, and supports the same agent-auth flow. It is declared as the second entry in servers in the OpenAPI spec, so generated clients can switch by changing the base URL and nothing else.

  • MCP server: https://site-staging.proquiro.com/mcp
  • Agent registration: https://site-staging.proquiro.com/agent/identity
  • Health: https://site-staging.proquiro.com/api/v1/health

Two caveats. It carries no uptime commitment and may be running changes that have not shipped to production yet, so treat a difference between the two as staging being ahead rather than production being broken. And it is noindex, so do not link to it from public content.

CLI & SDKs

Official clients wrap the whole surface — REST endpoints, MCP tools, and the optional agent-auth flow — so agents and developers can script Proquiro without building an integration first. All are zero-dependency and open source inthe site repository.

  • CLI — proquiro on npm (source)
  • JavaScript / TypeScript — proquiro-sdk on npm (source)
  • Python — proquiro on PyPI (source)
# CLI — no install needed
npx proquiro tools
npx proquiro call land_area_convert --value 2 --fromUnit acre --toUnit cent
npx proquiro auth register

# JavaScript
npm install proquiro-sdk

# Python
pip install proquiro

Streaming & SSE

Long-running and progress-bearing operations stream overServer-Sent Events (SSE) using HTTP chunked transfer. The Proquiro MCP server implements the MCP Streamable HTTP transport: clients negotiate streaming with the Accept header on the same /mcp URL — no separate SSE endpoint, no WebSocket.

  • Send Accept: text/event-stream on POST to receive each JSON-RPC response as an SSE message event with chunked transfer encoding
  • The server has no server-initiated messages, so a GET withAccept: text/event-stream returns 405 Method Not Allowedper the Streamable HTTP spec — clients simply use POST request/response
  • The server is stateless: it issues (or echoes) Mcp-Session-Id so clients can correlate requests, but no server-side session state is kept. SendMCP-Protocol-Version on requests after initialize; unsupported values get a 400

SSE handshake example:

curl -sSN https://proquiro.com/mcp \
  -H 'accept: application/json, text/event-stream' \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",
       "params":{"protocolVersion":"2025-11-25","capabilities":{},
                 "clientInfo":{"name":"AcmeAgent","version":"1.0"}}}'

For non-MCP endpoints, all current Proquiro public APIs are short-lived and return a single JSON document — streaming isn't required. New endpoints that introduce long-running operations (batch document verification, multi-step pricing walkthroughs) will be added under /api/stream/* and documented here.

JSON error schema

Every Proquiro public API endpoint returns a structured JSON error on failure — never an HTML error page. Agents can branch on a stable error.codewithout parsing prose. All error responses setContent-Type: application/json and CORS headers.

{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Too many requests from this network. Please try again later.",
    "hint": "Limit: 5 requests per IP per hour.",
    "docs": "https://proquiro.com/developers#proquiro-public-api"
  }
}

Stable error codes:

  • INVALID_PAYLOAD — request body wasn't valid JSON (HTTP 400)
  • MISSING_FIELDS — a required field was empty (HTTP 400)
  • INVALID_EMAIL — email failed format validation (HTTP 400)
  • DISPOSABLE_EMAIL — email belongs to a known disposable provider (HTTP 400)
  • HONEYPOT_TRIGGERED — the website field was non-empty (HTTP 400)
  • RATE_LIMITED — IP exceeded the per-hour limit. HonorRetry-After (HTTP 429)
  • DUPLICATE_REQUEST — the (email, tool) tuple was already submitted (HTTP 409)
  • NOT_FOUND — no API endpoint matches the requested path (HTTP 404)
  • METHOD_NOT_ALLOWED — the endpoint exists but not for this HTTP method (HTTP 405)
  • DB_NOT_CONFIGURED, DB_NOT_INITIALIZED,INTERNAL_ERROR — server-side issues. Retry with exponential backoff (HTTP 500)
  • DB_UNAVAILABLE — the store was briefly unreachable, so the request could not be served. Retryable; carries Retry-After (HTTP 503)

This holds for unknown API paths too: any /api/* request that would otherwise render an HTML error page is rewritten to this JSON envelope witherror.code = "NOT_FOUND" or "METHOD_NOT_ALLOWED".

MCP errors are returned as standard JSON-RPC 2.0 error objects with codes-32700 (Parse error), -32600 (Invalid Request),-32601 (Method not found), and -32602 (Invalid params).

Proquiro Agent Skills Index

The Agent Skills index is a machine-readable catalogue of every agent-callable resource Proquiro publishes — calculators, checklists, the MCP server, and reference data — each with a SHA-256 digest so agents can detect changes.

/.well-known/agent-skills/index.json

Free agent-callable land tools (also in the index): Land Area Unit Converter, Price Per Sq Ft Calculator, Land ROI Calculator, Guideline Value Checker, Land Acquisition Cost Calculator, plus due-diligence, site visit, document-readiness, and title-risk checklists under/tools.

Proquiro llms.txt

llms.txt is the canonical entry point for AI crawlers. It links every public Proquiro surface — product pages, free tools, the blog, glossary, MCP server, OpenAPI spec, and discovery endpoints — in a deterministic order.

/llms.txt

Crawl rules and content signals are declared in/robots.txt. The XML sitemap index lives at/sitemap-index.xml.

Markdown content negotiation

Every HTML page on proquiro.com can be requested as Markdown by sending anAccept: text/markdown header. The response usesContent-Type: text/markdown with an X-Markdown-Tokens token-count hint so agents can budget context windows.

curl -sS https://proquiro.com/blog \
  -H 'accept: text/markdown'

Blog posts also support a static .md suffix (e.g. /blog/encumbrance-certificate-verification-india.md) for cache-friendly fetches.

Questions or partner integrations

For integration questions, higher-volume API access, or co-development on agent workflows, write to info@proquiro.com or use thecontact form. AI-governance and policy questions go toai@proquiro.com; see also the Proquiro AI Policy.