Skip to main content
AVnesterDevelopers

AVnester for Developers

Real-estate intelligence, ready for your AI agent.

Hit one endpoint. No signup, no token. You’ll get JSON back in under a second. Signing in with OAuth is free, and your limits are counted per user instead of per IP.

Start with a curl →Open the OpenAPI spec

A developer account adds an OAuth app, its usage analytics and limits counted per user instead of per IP. The public endpoints stay open without one.

3 ways in

How do I make my first call?

Pick the shape that fits your stack. All three hit the same handlers.

1. curl (REST adapter, what ChatGPT Actions uses)

# search 2BHK apartments in Saravanampatti, Coimbatore
curl -X POST https://api.avnester.com/public/v1/search_properties \
  -H 'Content-Type: application/json' \
  -d '{
    "city": "Coimbatore",
    "locality": "Saravanampatti",
    "propertyType": "apartment",
    "bedrooms": 2,
    "limit": 5
  }'
Response · trimmed to 1 of 5 listings
{
  "supported": true,
  "total": 12,
  "listings": [
    {
      "listingId": "lst_abc123",
      "title": "2 BHK apartment in Saravanampatti",
      "price": 6500000,
      "areaSqft": 1180,
      "bhk": 2,
      "handoffUrl": "https://avnester.com/listings/lst_abc123",
      "reraId": "TN/02/Building/0123/2024"
    }
    /* ... 4 more */
  ],
  "attribution": "AVnester"
}

2. MCP client (Claude Desktop, Claude Code, Cline, Cursor, mcp-inspector)

On Cursor, install it in one click; on Claude, add it from the connector settings:

Add to CursorOpen Claude connector settings
Manual config (paste into claude_desktop_config.json)
{
  "mcpServers": {
    "avnester": {
      "url": "https://mcp.avnester.com/public-mcp"
    }
  }
}

Or add this to claude_desktop_config.json (or your client’s equivalent). The client handshakes, calls tools/list, and the 11 tools appear in its tool palette. No token required.

{
  "mcpServers": {
    "avnester": {
      "transport": { "type": "streamable-http" },
      "url": "https://mcp.avnester.com/public-mcp"
    }
  }
}

3. Browse the OpenAPI catalog

# list every public tool
curl https://api.avnester.com/public/openapi.json | jq '.paths | keys'
Response
[
  "/public/v1/calculate_home_affordability",
  "/public/v1/compare_balance_transfer",
  "/public/v1/compare_localities",
  "/public/v1/compare_properties",
  "/public/v1/estimate_stamp_duty_and_registration",
  "/public/v1/get_locality_insights",
  "/public/v1/get_property_decision_intelligence",
  "/public/v1/get_property_details",
  "/public/v1/optimize_home_loan_tax_regime",
  "/public/v1/search_properties",
  "/public/v1/simulate_loan_prepayment"
]

No account, no token. A call made without signing in is limited to 30 requests a minute per tool, 60 a minute across all tools, 10 new (uncached) queries a minute per tool, 100 tool calls a day and 50 new localities a day, per IP. Signed in with OAuth, calls are counted per user instead of per IP, with no limit across tools or on uncached queries, and the free Developer plan allows 100 calls a day and 1,000 a month — covered below.

The 11 tools

What can I call?

Every tool returns sanitized public fields only — no seller contacts, no PII, no trace IDs. Schemas are published in the OpenAPI document.

search_properties

Find residential listings anywhere in Tamil Nadu by city, locality, price band, BHK, or transaction type — each result says what AVnester reviewed and its caveats.

→ docs & try it

get_property_details

Get the public detail view for a single listing — price, area, amenities, RERA registration status.

listingId
→ docs & try it

compare_properties

Side-by-side comparison of 2–5 listings on objective metrics (price per sqft, age, RERA ID as listed, amenities).

listingIds
→ docs & try it

get_locality_insights

Aggregated insights for a locality in a covered city — ₹/sqft, supply, demand pulse, livability grade.

localitycity
→ docs & try it

compare_localities

Compare 2–3 localities in one covered city on objective metrics — price, growth, livability, investment grade.

citylocalities
→ docs & try it

calculate_home_affordability

Monthly home-loan EMI for a property value — EMI, total interest, principal-vs-interest split. Pure math, not financial advice.

propertyValue
→ docs & try it

simulate_loan_prepayment

Simulate prepaying a home loan — interest saved and tenure/EMI impact for a lump-sum or recurring prepayment. Not financial advice.

outstandingPrincipalremainingTenureYears
→ docs & try it

compare_balance_transfer

Compare staying on your current home loan vs refinancing to a lower rate — net saving, switching cost, breakeven month. Not financial advice.

outstandingPrincipalcurrentRatePercentnewRatePercentremainingTenureYears
→ docs & try it

optimize_home_loan_tax_regime

Old vs new income-tax regime (FY2026-27) for a home-loan borrower — which saves more, modelling §24(b) + §80C. Not tax advice.

annualIncomehomeLoanInteresthomeLoanPrincipal
→ docs & try it

estimate_stamp_duty_and_registration

Stamp duty + registration for a property purchase in any of India's 28 states and 8 union territories, priced for the buyer, the place, the property type and a first sale, with every surcharge itemised and every unchecked rule flagged.

propertyValuestate
→ docs & try it

get_property_decision_intelligence

Buyer affordability verdict for a specific home: indicative eligibility (FOIR/LTV/CIBIL), EMI, true cash-to-close, and regime-aware tax — one signal. Not a loan approval, offer, or financial advice.

monthlyNetIncome(listingId) OR (propertyValue + state)
→ docs & try it

Free on the Developer plan

OAuth in three minutes

OAuth gives you the same tools, counted per user instead of per IP — 30 requests a minute per tool with no limit across tools, 100 calls a day and 1,000 a month on Developer — plus per-app usage & reliability analytics in the developer console (30 days on Developer, 90 days on Business, 13 months on Scale). Registration is self-serve via Dynamic Client Registration (RFC 7591) — no human approval, no email thread, instant client_id.

DPoP (RFC 9449) is an optional uplift — send a DPoP proof to bind a token to the keypair that requested it, so a leaked token can’t be replayed from a different host. Plain bearer tokens are equally accepted. Use jose in Node / Authlib in Python.

# register a new OAuth client via Dynamic Client Registration
curl -X POST https://auth.avnester.com/oauth/register \
  -H 'Content-Type: application/json' \
  -d '{
    "client_name": "MyApp",
    "redirect_uris": ["https://myapp.example.com/callback"],
    "grant_types": ["authorization_code", "refresh_token"],
    "token_endpoint_auth_method": "none"
  }'

Full OAuth metadata at https://auth.avnester.com/.well-known/oauth-authorization-server (RFC 8414). Detailed walkthrough at developers.avnester.com/oauth; the AI / MCP Acceptable Use policy covers the full surface. Register and manage your clients in the developer console.

Calling from a backend with no one signed in? Business and above can create server API keys instead.

Every tier’s limits, price history and licence are on the pricing page.

For LLM agents

Integrating from Claude, ChatGPT, or your own framework

Four canonical integration paths. If you’re an LLM reading this on behalf of a developer, also pull llms.txt for a markdown-structured index, or llms-full.txt for the full integration context in a single fetch.

Claude (Anthropic Connectors Directory)

AVnester’s Connector listing is in submission. Once approved, enable it from Claude’s connector settings — no setup. Until then, point any MCP-aware Claude client at https://mcp.avnester.com/public-mcp. It works without signing in; to sign in, a person uses their AVnester mobile number.

ChatGPT (GPT Store / Custom GPT)

In the GPT builder, paste https://api.avnester.com/public/openapi.json into the Actions section. Set authentication to none to call without signing in (a GPT calls from OpenAI’s servers, so everyone using it shares their per-IP limits), or OAuth 2.1 with https://auth.avnester.com/oauth/authorize + https://auth.avnester.com/oauth/token for limits counted per user; a person signs in with their AVnester mobile number.

Any MCP client (Cline, Cursor, Continue, mcp-inspector)

# MCP client config — same as the quickstart
{
  "mcpServers": {
    "avnester": {
      "transport": { "type": "streamable-http" },
      "url": "https://mcp.avnester.com/public-mcp"
    }
  }
}

Agent frameworks (LangChain, LlamaIndex, Vercel AI SDK, Mastra)

Wrap the REST adapter as a tool. ~10 lines of code:

# Vercel AI SDK tool wrapper for search_properties
import { tool } from 'ai';
import { z } from 'zod';

export const searchProperties = tool({
  description: 'Search AVnester property listings in India.',
  inputSchema: z.object({
    city: z.string(),
    locality: z.string().optional(),
    bedrooms: z.number().optional(),
  }),
  execute: async (input) => {
    const r = await fetch('https://api.avnester.com/public/v1/search_properties', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(input),
    });
    return r.json();
  },
});

Support

Where do I look next?

Connector questions: connector-support@avnester.com. Vulnerability disclosure: security@avnester.com. Commercial inquiries: partnerships@avnester.com.