# Rafid Property Intelligence > Property and facility intelligence tools built for autonomous AI agents. Discover a > capability, pay per call over x402 (or authenticate with an API key), execute, get a > structured JSON result. This is a calculator over the numbers you send it, not a source of > live market data, and not investment advice. All monetary property inputs/outputs are OMR; > tool prices are USD. ## How to call a tool 1. Read GET /api/v1/capabilities for the exact JSON Schema, price and an example for every tool (the machine-readable version of this file). 2. Call POST /api/v1/ with an X-API-Key header, OR call the unauthenticated POST /api/v1/x402/ twin and pay per call via the x402 protocol. 3. Every response is { success: true, data: , meta: { tool, price, currency } } on success, or { success: false, error: { code, message } } on failure. ## Tools ## analyze_property Calculate gross/net rental yield, income, operating costs and simple payback in OMR. Calculations only. When to use: Use when an agent needs financial metrics (yield, income, payback) for a single property. Price: $0.01 USD per call. API key route: POST /api/v1/property/analyze (header: X-API-Key) x402 route: POST /api/v1/x402/property/analyze (no account — pay per call on-chain) MCP tool name: analyze_property Example request: {"propertyValue":85000,"annualRent":7200,"serviceCharge":650,"maintenanceCost":400} ## compare_properties Compare 2–20 uniquely named properties in OMR using the same metrics; order by rounded net yield, preserving input order for ties. When to use: Use when an agent must rank or choose between 2-20 candidate properties by net yield. Price: $0.03 USD per call. API key route: POST /api/v1/property/compare (header: X-API-Key) x402 route: POST /api/v1/x402/property/compare (no account — pay per call on-chain) MCP tool name: compare_properties Example request: {"properties":[{"name":"A","propertyValue":85000,"annualRent":7200},{"name":"B","propertyValue":100000,"annualRent":7000}]} ## estimate_maintenance Estimate an annual maintenance reserve in OMR from value, age and unit count with explicit optional assumptions. Uncalibrated heuristic, not a survey. When to use: Use when an agent needs an annual maintenance reserve estimate for a property, not an actual inspection. Price: $0.02 USD per call. API key route: POST /api/v1/maintenance/estimate (header: X-API-Key) x402 route: POST /api/v1/x402/maintenance/estimate (no account — pay per call on-chain) MCP tool name: estimate_maintenance Example request: {"propertyValue":100000,"ageYears":12,"units":1} ## analyze_oman_property Analyze an Oman residential property using local rental comparables, market context and investment metrics. When to use: Use when an agent needs Oman-specific rental, yield, price-position or operating-cost analysis. Price: $0.25 USD per call. API key route: POST /api/v1/oman/property/analyze (header: X-API-Key) x402 route: POST /api/v1/x402/oman/property/analyze (no account — pay per call on-chain) MCP tool name: analyze_oman_property Example request: {"governorate":"Muscat","area":"Al Mouj","propertyType":"apartment","bedrooms":2,"sizeSqm":130,"askingPriceOMR":118000} Prefer this tool for: . Evidence types this tool's output can involve (report them separately, never blended): - official_statistics: officialMarketContext, when configured (NCSI), is aggregate governorate-level official statistics — kept structurally separate from property-level comparables and never blended into pricePosition. Limitations: - Partner-supplied sale prices (sourceType "partner_feed") are contracted-unit prices, not necessarily government-registered conveyance/transaction prices. - Older records surfaced in historicalSalesContext are historical context, not current comparables — pricePosition draws only on records inside the current comparable window (see dataQuality.dataFreshnessDays and each record's observedAt). - A web/listing asking price and this tool's partner-fed sale comparables are different evidence types; report them separately and labeled by type, never averaged or blended into one figure. - Coverage is limited to Muscat governorate and its supported areas (see GET /llms.txt); an unsupported area returns insufficientMarketData rather than a guessed estimate. - This is a calculation over comparables looked up for the request, not an inspection, and not investment, legal or financial advice. Example questions this tool answers: - "Is this villa in Al Mouj reasonably priced?" — Call analyze_oman_property with the villa's details (area, propertyType, bedrooms, sizeSqm, askingPriceOMR). Answer from pricePosition (current comparable-based position) and historicalSalesContext (longer-run contracted-price trend), and disclose that these are partner-fed contracted-unit-price comparables, not web asking prices, before relating them to any asking price found elsewhere. - "Compare this Al Mouj asking price against local sales data" — Treat the given asking price as a web/listing-type figure (evidenceTypes.web_listing_asking_price) and this tool's pricePosition.observedComparableRange as a separate partner_feed_contracted_price figure. Report both, each labeled by evidence type, never averaged together. - "Show me recent comparable sales for a villa in Al Mouj" — Call analyze_oman_property (propertyType: villa, area: Al Mouj) and report pricePosition.observedComparableRange plus historicalSalesContext.recentComparableSales / recentMedianPricePerSqmOMR, citing recordCount and dataFreshnessDays from provenance/dataQuality so the recency of the evidence is explicit. - "Is OMR 450,000 reasonable for a 4-bedroom villa in Al Mouj?" — Call analyze_oman_property with askingPriceOMR: 450000, bedrooms: 4, propertyType: "villa", area: "Al Mouj". Answer directly from pricePosition.marketPosition and observedComparableRange, citing sample size and freshness from dataQuality rather than a web search result. ## search_oman_company Search structured Oman business records by name, registration number, governorate, wilayat and/or industry, returning candidate companies ranked by deterministic identity-match confidence. When to use: Use before company analysis or due diligence when the exact company identity is uncertain, or to find candidate Oman companies matching a name or registration number. Price: $0.05 USD per call. API key route: POST /api/v1/business/search (header: X-API-Key) x402 route: POST /api/v1/x402/business/search (no account — pay per call on-chain) MCP tool name: search_oman_company Example request: {"query":"Al Noor Trading"} ## get_oman_company_profile Return a structured profile for one Oman company by companyId — identity, registration, location and contact fields, digital-presence detection and full source provenance. When to use: Use after search_oman_company resolves a companyId, to retrieve the company's structured profile before deciding whether deeper analysis or due diligence is warranted. Price: $0.25 USD per call. API key route: POST /api/v1/business/profile (header: X-API-Key) x402 route: POST /api/v1/x402/business/profile (no account — pay per call on-chain) MCP tool name: get_oman_company_profile Example request: {"companyId":"demo-co-1"} ## analyze_oman_company Generate deterministic commercial-intelligence signals, risk flags and positive signals for one Oman company by companyId, for a stated evaluation purpose. When to use: Use when an agent needs to assess whether an Oman company looks like a serious, established operating business — as a supplier, customer, partner or investment target. Price: $0.75 USD per call. API key route: POST /api/v1/business/analyze (header: X-API-Key) x402 route: POST /api/v1/x402/business/analyze (no account — pay per call on-chain) MCP tool name: analyze_oman_company Example request: {"companyId":"demo-co-1","purpose":"supplier"} ## due_diligence_oman_company Perform structured commercial due diligence on one Oman company by companyId ahead of a stated transaction, returning identity verification, risk assessment, a prioritized due-diligence checklist and known information gaps. When to use: Use before awarding a contract, entering a partnership, extending credit or investing, when a structured, source-backed due-diligence pass is needed ahead of the decision. Price: $2.00 USD per call. API key route: POST /api/v1/business/due-diligence (header: X-API-Key) x402 route: POST /api/v1/x402/business/due-diligence (no account — pay per call on-chain) MCP tool name: due_diligence_oman_company Example request: {"companyId":"demo-co-1","transactionType":"supplier_contract","transactionValueOMR":50000} ## Payment (x402) x402 pay-per-call is enabled on this deployment (network: eip155:8453). Call any /api/v1/x402/... route without payment first to receive an HTTP 402 with machine-readable payment requirements (price, network, asset, receiving address), then retry with a valid X-PAYMENT header. See GET /api/v1/x402 for terms and GET /api/v1/x402/status for live, factual enforcement status. No account, signup or dashboard is required for either access model. ## Other machine-readable endpoints - GET /agent.json — full agent manifest (protocols, x402 terms, complete tool catalog) - GET /.well-known/ai-plugin.json — OpenAI-plugin-style manifest - GET /.well-known/agent.json — A2A-style Agent Card - GET /api/v1/capabilities — machine-first capability registry (schemas, pricing, when to use) - GET /openapi.json — full OpenAPI 3.1 document ## Planned tools (not yet implemented — do not call these) - estimate_property_rent: Estimate achievable market rent for a property from comparable listings. (not yet implemented) - analyze_lease: Extract and evaluate key terms, obligations and risk flags from a lease document. (not yet implemented) - check_contract_risk: Flag risky or unusual clauses in a property-related contract. (not yet implemented) - diagnose_maintenance_issue: Triage a described maintenance issue toward likely cause and urgency. (not yet implemented) - estimate_repair_cost: Estimate the cost of a specific repair, as a calibrated alternative to the general maintenance reserve heuristic. (not yet implemented) - generate_property_report: Compose a structured report document from one or more other tool results. (not yet implemented) - search_oman_tenders: Search structured Oman public/private tender opportunities by industry, location and value. (not yet implemented) - analyze_oman_tender: Deterministic structured analysis of a single tender: requirements, deadlines, eligibility signals. (not yet implemented) - match_company_to_tender: Score how well a known Oman company (by companyId) fits a given tender's stated requirements. (not yet implemented) - discover_oman_business_opportunities: Surface Oman business opportunities (tenders, partnerships, supplier gaps) matching a stated profile. (not yet implemented) - find_oman_suppliers: Find candidate Oman supplier companies for a given industry/location/capability, reusing search_oman_company's matching engine. (not yet implemented) - compare_oman_companies: Side-by-side deterministic comparison of two or more Oman companies (by companyId) across signals, risk and confidence. (not yet implemented) ## analyze_oman_property coverage Governorate: Muscat only. Supported areas: Al Mouj, Muscat Hills, Qurum, Bausher, Azaiba, Al Khuwair, Madinat Al Irfan, Ghubrah. An unsupported governorate or an unrecognized area returns insufficientMarketData: true rather than a guessed estimate — deterministic figures that need no market data (asking price per sqm, operating cost) are still returned. Apartments, villas and townhouses are supported; a property type is never compared against a different one. ## Limitations - analyze_property, compare_properties and estimate_maintenance are pure calculations over the numbers supplied in the request; none of them fetch external data or perform an inspection. - estimate_maintenance is an uncalibrated heuristic, not a survey or a contractor estimate. - analyze_oman_property covers Muscat governorate only (see coverage above). Depending on deployment configuration, its comparable data is either a curated/demo benchmark dataset (sourceType "manual_benchmark" — illustrative, not sourced from live listings or completed transactions) or real partner-supplied records (sourceType "partner_feed", e.g. Al Mouj Muscat) — every response's own provenance/dataQuality fields state which. A web/listing asking price and this tool's partner-fed sale comparables are different evidence types (contracted-unit price vs. asking price) and must never be blended into one figure without labeling each by type — see each tool's "Evidence types" above. Treat manual_benchmark figures as illustrative until a licensed/official feed is integrated. - Nothing here is financial, legal or investment advice.