Oman property intelligence for AI agents: yield, comparables, Al Mouj sales data, x402 pay-per-call.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Rafid provides deterministic property intelligence for autonomous AI agents, starting with OMR calculations for the Oman market. AI agents are the primary consumer of this product, not human SaaS users. MCP and x402 are the primary interfaces; the X-API-Key REST routes are the underlying transport and a compatibility layer for callers that can't do MCP or x402 yet. This MVP does not fetch market data, provide investment recommendations, or (outside x402) collect payments.
The intended flow for an agent is: discover a capability β select the right tool β pay per call over x402 (or authenticate with an API key) β execute β get a structured, machine-readable result. No account, dashboard or subscription is required for either access model, and none is planned β see "Design constraints" below.
An agent (or an agent marketplace/directory crawler) can start from any of the following; all are public, unauthenticated, always present, and contain no secrets (no wallet private keys, no API keys, no usage data for other customers):
| Endpoint | Purpose |
|---|---|
GET /agent.json | The full agent manifest: product identity, every supported protocol (MCP, x402, REST) and its role, x402 terms, and the complete tool catalog with full input/output JSON Schemas. Start here. |
GET /.well-known/ai-plugin.json | Manifest in the legacy OpenAI ChatGPT-plugin convention, for tooling that still discovers services this way. |
GET /.well-known/agent.json | An Agent Card in the Agent2Agent (A2A) protocol's convention, listing each tool as a skill. |
GET /llms.txt | A plain-text briefing for an LLM-based agent: what Rafid does, every tool and how to call it, pricing, the x402 model, and known limitations β no JSON parsing required. |
GET /api/v1/capabilities | The machine-first capability registry: name, description, whenToUse, price, schemas and examples for every tool β optimized for a model to decide what to call, not for a human to read. |
GET /api/v1/mcp/status | Factual MCP status: which transports are live (stdio always, http only when MCP_REMOTE_ENABLED=true), the tool count, and the remote endpoint path if any. |
GET /api/v1/agent | Legacy service-metadata endpoint (kept for backward compatibility); superseded by /agent.json above. |
GET /api/v1/pricing | The full price list (USD, pay-per-call), sourced from one catalog shared by every code path β never duplicated or out of sync. |
GET /api/v1/tools | Legacy tool catalog (kept for backward compatibility); superseded by /api/v1/capabilities above. |
Every one of these is generated from the single capability registry in src/domain/capabilities.ts β see "Capability registry" below β so they can never disagree with each other or with what a call actually does.
Once a tool is chosen, call it with an X-API-Key header, or β when X402_ENABLED=true β call its /api/v1/x402/... twin with no key and pay per call on-chain instead (see "Pay-per-call via x402" below).
A human visiting / in a browser instead gets a short landing page (agent integration examples, tool list, pricing, links to docs); agents and scripts that send Accept: application/json keep getting the original JSON discovery payload β see "Landing page" below.
This product is deliberately agent-native, not a human SaaS dashboard. It does not have, and is not planned to have, user accounts, a dashboard, subscriptions, Stripe billing, or a billing portal. The X-API-Key route family is a compatibility transport for callers that authenticate that way, not an invitation to build account management around it.
PostgreSQL-backed customers, hashed keys, usage tracking and per-customer limits are now available. See activation and administration. Existing env-key development mode remains unchanged; production requires AUTH_MODE=postgres. No payment collection is implemented outside x402 (see below).
The Express entry point exports the app when VERCEL=1 and keeps the normal port listener for local runs. vercel.json pins the function to iad1 near the current US East Neon database and limits requests to 15 seconds. .vercelignore prevents the local .env, caches and generated files from being uploaded.
Production API: https://api.rafidsystem.com
Landing page: https://api.rafidsystem.com/ (browsers) / same URL with Accept: application/json (agents)
Health: https://api.rafidsystem.com/api/v1/health
OpenAPI: https://api.rafidsystem.com/openapi.json
Agent metadata: https://api.rafidsystem.com/api/v1/agent
Connect the repository directory to a Vercel project, attach the Neon Marketplace database, and configure these Production environment variables:
The Neon integration may inject DATABASE_URL; verify that it points to the rotated credential and pooled endpoint. Mark manually added database values as sensitive. Do not upload .env or use the previously exposed password. Deploy with Vercel CLI or a connected Git repository, then verify /api/v1/health, /openapi.json, /api/v1/agent, an authenticated analysis request, and the PostgreSQL usage record. The local stdio MCP process is not deployed by this Express function.
To also accept pay-per-call crypto payments, set X402_ENABLED=true and X402_WALLET_ADDRESS=<a 0x-prefixed EVM address you control> in Production. Leave X402_ENABLED=false (the default) until you are ready to receive real payments; see Configuration and the "Pay-per-call via x402" section below. On Base mainnet (eip155:8453) also set CDP_API_KEY_ID/CDP_API_KEY_SECRET (see Configuration).
Use Node.js 24+ and npm. From the repository root:
Copy the generated key into RAFID_API_KEYS in .env. Keep it private. A blank or short key prevents HTTP startup. Multiple keys are comma-separated. On macOS/Linux use npm and cp .env.example .env.
Development loads .env and watches TypeScript sources. For a compiled run:
npm test first builds and then runs service, live HTTP, agent-marketplace, OpenAPI contract, and compiled MCP stdio tests. npm start loads .env and runs dist/server.js; dependencies are pinned in package-lock.json.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/rafid-property-intelligence)<a href="https://allmcps.com/mcp/rafid-property-intelligence"><img src="https://allmcps.com/api/badge/rafid-property-intelligence?style=directory" alt="Rafid Property Intelligence on AllMCPs" /></a>