RAIA Agent Card

Discovery document published by every RAIA-compliant estate agent at /.well-known/raia-agent.json. Declares identity, jurisdiction coverage, capabilities, and the endpoints that consumers can call. v0.2 adds schema_version, capabilities, verification, and provenance_signing.

Real EstatePropertyLettingsProperty SalesAgentsA2AMCPAgent-NativeAgent RegistryNon-ProfitOpen SourceRAIA ProtocolUnited Kingdom

Properties

Name Type Description
schema_version string Version of the RAIA Protocol schemas this agent implements. v0.2 example: '0.2'.
agent_id string RAIA org identifier. Format: org-{cc}-{slug}. Country code is ISO 3166-1 alpha-2 lower-cased. Slug is the agency's chosen short identifier — 3 to 8 characters is conventional but not enforced.
name string Legal or trading name of the agency. Used as the canonical match key for the registry.
display_name string Public-facing brand name if it differs from name. Optional.
description string Short description of the agency for use in registry listings.
logo_url string Square logo. SVG or PNG, served over HTTPS.
endpoints object Callable endpoints exposed by this agent.
jurisdictions array UN/LOCODE areas the agent operates in. Example: ['GBLON', 'GBMAN']. Country-only coverage is expressed as the capital city locode plus the wildcard convention 'GB***' RESERVED for v1.0 — for v0.2 list
contact object
companies_house_number string Companies House registration number. UK only. Aggregators may verify this against the Companies House public API.
verification object How a third party can verify the agent card was published by the domain operator. Required for registry admission but optional for self-hosted use.
capabilities array Capabilities the agent supports. 'search', 'property' and 'enquire' map to endpoints. 'delegate' indicates the agent can issue scoped tokens (RAIA reference: tbl_agent_delegations). 'verify', 'viewing
provenance_signing object
View JSON Schema on GitHub

JSON Schema

movehome-org-raia-agent-card.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://estateaigents.org/schemas/agent-card.json",
  "title": "RAIA Agent Card",
  "description": "Discovery document published by every RAIA-compliant estate agent at /.well-known/raia-agent.json. Declares identity, jurisdiction coverage, capabilities, and the endpoints that consumers can call. v0.2 adds schema_version, capabilities, verification, and provenance_signing.",
  "type": "object",

  "$defs": {
    "contact_block": {
      "type": "object",
      "description": "Public contact details for the agency. PII relating to individual staff should not appear here — use endpoints.enquire instead.",
      "properties": {
        "email": {
          "type": "string",
          "format": "email",
          "description": "General enquiries email."
        },
        "phone": {
          "type": "string",
          "description": "Public switchboard number in E.164 format (e.g. '+442071234567')."
        },
        "address": {
          "type": "string",
          "description": "Registered or trading address of the agency."
        }
      },
      "additionalProperties": false
    },

    "endpoints_block": {
      "type": "object",
      "description": "URLs the consumer can call. property is a URL template containing the literal string '{raia_id}', which the consumer substitutes before fetching.",
      "required": ["search", "property"],
      "properties": {
        "search": {
          "type": "string",
          "format": "uri",
          "description": "GET endpoint returning a paginated list of listings conforming to listing.json."
        },
        "property": {
          "type": "string",
          "description": "URL template with '{raia_id}' placeholder. Example: 'https://app.estateaigents.com/api/raia/property/{raia_id}'.",
          "pattern": "\\{raia_id\\}"
        },
        "enquire": {
          "type": "string",
          "format": "uri",
          "description": "POST endpoint accepting an enquiry conforming to enquiry.json."
        }
      },
      "additionalProperties": false
    },

    "verification_block": {
      "type": "object",
      "description": "How a third party can verify that this agent card was published by the legitimate operator of the domain.",
      "required": ["method"],
      "properties": {
        "method": {
          "type": "string",
          "enum": ["domain_dns_txt", "meta_tag", "manual"],
          "description": "Verification method. domain_dns_txt = a TXT record at _raia.{host} contains the token. meta_tag = a <meta name=\"raia-verification\" content=\"{token}\"> tag at the homepage. manual = registry-side review."
        },
        "token": {
          "type": "string",
          "description": "Opaque verification token. Required for domain_dns_txt and meta_tag; not used for manual."
        }
      },
      "additionalProperties": false
    },

    "provenance_signing_block": {
      "type": "object",
      "description": "Public-key material for verifying signed listings. Reserved for v1.0 — for v0.2 only the public_key_url field is defined.",
      "properties": {
        "public_key_url": {
          "type": "string",
          "format": "uri",
          "description": "URL of the agent's public key (PEM or JWK). Used by aggregators to verify provenance.signature_hash on incoming listings."
        }
      },
      "additionalProperties": false
    }
  },

  "required": ["schema_version", "agent_id", "name", "endpoints"],

  "properties": {
    "schema_version": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?$",
      "description": "Version of the RAIA Protocol schemas this agent implements. v0.2 example: '0.2'.",
      "examples": ["0.2", "1.0"]
    },
    "agent_id": {
      "type": "string",
      "pattern": "^org-[a-z]{2}-[a-z0-9-]{2,32}$",
      "description": "RAIA org identifier. Format: org-{cc}-{slug}. Country code is ISO 3166-1 alpha-2 lower-cased. Slug is the agency's chosen short identifier — 3 to 8 characters is conventional but not enforced.",
      "examples": ["org-gb-rlf", "org-th-rbc", "org-gb-small-london-lettings"]
    },
    "name": {
      "type": "string",
      "description": "Legal or trading name of the agency. Used as the canonical match key for the registry."
    },
    "display_name": {
      "type": "string",
      "description": "Public-facing brand name if it differs from name. Optional."
    },
    "description": {
      "type": "string",
      "description": "Short description of the agency for use in registry listings."
    },
    "logo_url": {
      "type": "string",
      "format": "uri",
      "description": "Square logo. SVG or PNG, served over HTTPS."
    },

    "endpoints": {
      "$ref": "#/$defs/endpoints_block",
      "description": "Callable endpoints exposed by this agent."
    },

    "jurisdictions": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z]{2}[A-Z0-9]{3}$"
      },
      "description": "UN/LOCODE areas the agent operates in. Example: ['GBLON', 'GBMAN']. Country-only coverage is expressed as the capital city locode plus the wildcard convention 'GB***' RESERVED for v1.0 — for v0.2 list each city explicitly."
    },

    "contact": {
      "$ref": "#/$defs/contact_block"
    },

    "companies_house_number": {
      "type": "string",
      "pattern": "^[A-Z0-9]{6,10}$",
      "description": "Companies House registration number. UK only. Aggregators may verify this against the Companies House public API."
    },

    "verification": {
      "$ref": "#/$defs/verification_block",
      "description": "How a third party can verify the agent card was published by the domain operator. Required for registry admission but optional for self-hosted use."
    },

    "capabilities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": ["search", "property", "enquire", "delegate", "verify", "viewing_request", "offer"]
      },
      "description": "Capabilities the agent supports. 'search', 'property' and 'enquire' map to endpoints. 'delegate' indicates the agent can issue scoped tokens (RAIA reference: tbl_agent_delegations). 'verify', 'viewing_request' and 'offer' map to MCP tools defined in SPEC.md section 8."
    },

    "provenance_signing": {
      "$ref": "#/$defs/provenance_signing_block"
    }
  },

  "additionalProperties": false,

  "examples": [
    {
      "schema_version": "0.2",
      "agent_id": "org-gb-small-london-lettings",
      "name": "Small London Lettings Ltd",
      "display_name": "Small London Lettings",
      "description": "Independent lettings agency covering Hampstead, Belsize Park and Primrose Hill.",
      "logo_url": "https://smalllondonlettings.co.uk/logo.svg",
      "endpoints": {
        "search": "https://smalllondonlettings.co.uk/api/raia/search",
        "property": "https://smalllondonlettings.co.uk/api/raia/property/{raia_id}",
        "enquire": "https://smalllondonlettings.co.uk/api/raia/enquire"
      },
      "jurisdictions": ["GBLON"],
      "contact": {
        "email": "hello@smalllondonlettings.co.uk",
        "phone": "+442074311234",
        "address": "12 Heath Street, Hampstead, London NW3 6TE"
      },
      "companies_house_number": "12345678",
      "verification": {
        "method": "domain_dns_txt",
        "token": "raia-verify-9f7b2c1e4a8d"
      },
      "capabilities": ["search", "property", "enquire"]
    }
  ],

  "x-raia-notes": {
    "discovery": "Agent cards are discovered via a fetch of /.well-known/raia-agent.json on the agent's primary domain. CORS MUST be open (Access-Control-Allow-Origin: *) — anonymous consumer agents need to read this from any origin.",
    "url_template": "endpoints.property is a URL template, not a regular URL. The literal substring '{raia_id}' is replaced by the consumer prior to fetch. This pattern follows RFC 6570 Level 1.",
    "registry": "The reference registry at estateaigents.org/registry verifies agent cards using the verification block, then publishes the verified set. Self-hosted agents may operate without registry admission but cannot use the RAIA-Verified™ trust signal."
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/movehome-org-raia-agent-card"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.