Included with Enterprise

API and MCP

Read your portfolio programmatically: properties, units, tenants, leases and receivables. The same data your team sees in the app, scoped exactly the same way.

Read only, deliberately

Keys permit GET requests only; anything that writes is refused with a 403. A leaked key must not be able to alter a rent ledger.

1. Create a key

Inside the app: Settings → Developers → New key. The key is shown once, at creation. We store its hash, never the key itself, so if it is lost you create another and revoke the old one.

One organisation
A key resolves to your organisation alone. It cannot reach any other.
Read only
GET only. Writes are refused at the authentication layer.
Revocable
Revocation is immediate, and the audit trail keeps what the key did.
Key format
jbr_live_1a2b3c4d_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

2. REST

Base URL: https://api.jabriya.app · Authenticate with an Authorization header.

curl
curl https://api.jabriya.app/buildings \
  -H "Authorization: Bearer jbr_live_…"
EndpointReturns
GET/buildingsProperties, with area, classification and status.
GET/buildings/:idOne property in full, including its floors and units.
GET/units?status=VACANTUnits, filterable by status, type or search term.
GET/tenantsTenants, paginated.
GET/contracts?status=ACTIVELeases, paginated and filterable.
GET/receivables?tenantId=…Rent dues for a tenant, contract or unit.
GET/dashboard/summaryThe headline figures behind the dashboard.

Amounts are in KWD to three decimals. Dates are ISO 8601. Paginated lists accept page and limit and return { items, total }.

3. MCP

The MCP endpoint lets an AI assistant read your portfolio in plain language: how many units are vacant, who is behind on rent, which leases expire this quarter. It works with any MCP client that speaks streamable HTTP, using the same key.

Endpoint
POST https://api.jabriya.app/mcp
Authorization: Bearer jbr_live_…
Configure in Claude
claude_desktop_config.json
{
  "mcpServers": {
    "jabriya": {
      "type": "http",
      "url": "https://api.jabriya.app/mcp",
      "headers": { "Authorization": "Bearer jbr_live_…" }
    }
  }
}
Available tools
portfolio_summary
Properties, units, occupancy, active tenants and contracts, outstanding receivables.
list_properties
The organisation’s properties.
list_overdue
Receivables past due and unpaid, oldest first.
list_expiring_contracts
Leases ending soon, for renewal chasing.
list_vacant_units
What is available to let, with asking rent.
Direct call
curl -X POST https://api.jabriya.app/mcp \
  -H "Authorization: Bearer jbr_live_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"portfolio_summary","arguments":{}}}'

4. Errors

401The key is unknown or revoked.
403 API_KEY_READ_ONLYA write attempted with a key. Keys read only.
403 FEATURE_NOT_IN_PLANThe current plan does not include programmatic access.
404The record does not exist, or is not in your organisation.

We do not distinguish between a record that does not exist and one belonging to another organisation. Both are 404, because telling them apart would reveal the existence of data that is not yours.

Need a key?

Programmatic access is part of the Enterprise plan. Talk to us to turn it on.

[email protected]