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- Server card
/.well-known/mcp/server-card.json- Protocol version
2025-11-25- Transport
- Streamable HTTP — JSON or SSE on the same URL, CORS-enabled, batch-aware
- Session header
Mcp-Session-Idissued on first response; pass it back on subsequent requests- Server name
proquiro-land-toolsv1.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.
- Spec URL
/api/openapi.json- Catalog
/.well-known/api-catalog(RFC 9727application/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
Deprecationresponse header, and aSunsetheader (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: trueon 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:
/.well-known/oauth-protected-resource— RFC 9728 protected-resource metadata/.well-known/oauth-authorization-server— RFC 8414 authorization-server metadata, carrying theagent_authprofile block/auth.md— the prose walkthrough an agent reads top to bottom
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 returns
422 IDEMPOTENCY_KEY_REUSEDrather 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 —
proquiroon npm (source) - JavaScript / TypeScript —
proquiro-sdkon npm (source) - Python —
proquiroon 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 proquiroStreaming & 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-streamon POST to receive each JSON-RPC response as an SSEmessageevent with chunked transfer encoding - The server has no server-initiated messages, so a GET with
Accept: text/event-streamreturns405 Method Not Allowedper the Streamable HTTP spec — clients simply use POST request/response - The server is stateless: it issues (or echoes)
Mcp-Session-Idso clients can correlate requests, but no server-side session state is kept. SendMCP-Protocol-Versionon requests afterinitialize; unsupported values get a400
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— thewebsitefield 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; carriesRetry-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.
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.