canonical: https://jentic.com/apis/qmlm.work/qmlm

# Qmlm Work Jiadi Property API

The Jiadi Property API tracks a person's assets and net worth: it records accounts with a type, category, and currency, updates each account's balance in a workspace that totals net worth, and logs asset records with an amount, description, and occurredAt date. It captures point-in-time snapshots of all balances, compares two snapshots to show what changed, and returns a net worth history for charting. It is the backend for the Jiadi personal asset management app.

## For AI agents

Record account balances and asset transactions in Jiadi, take net worth snapshots, compare them over time, and read net worth history.

## Scope

Does not connect to banks, execute trades, or file taxes. Use for manually tracked asset balances, records, and net worth snapshots in Jiadi only.

## Capabilities

- Create asset accounts with a name, type, category, and currency, and update or retire them
- Update an account's balance in the workspace and read the workspace net worth
- Log asset records with amount, description, and occurredAt, and list them between start and end dates
- Take a snapshot of all balances with a note and amend the latest one
- Compare two snapshots with the from and to parameters to see what changed
- Read the net worth history series for charting
- Set the user's mainCurrency and monthlySnapshotDay preferences

## Use cases

### Agent-maintained net worth tracker through Jentic

A personal finance agent keeps Jiadi current: after the user reports new balances, it updates each account in the workspace and takes a snapshot. Through Jentic the JWT is injected by the developer's own Jentic One instance, and a rule can keep the agent away from account deletion and password changes.

Example prompt: POST `/api/workspace/balance/{id}` with balance 12500 for the savings account, then POST `/api/snapshots` with note 'November close'

### Month-over-month change report

Seeing how wealth moved is the point of snapshots. GET `/api/snapshots` lists the history, and GET `/api/snapshots/diff` takes a required from snapshot and an optional to snapshot to return the difference, which an agent can turn into a plain-language summary of gains and losses.

Example prompt: GET `/api/snapshots`, pick the two most recent ids, call GET `/api/snapshots/diff` with from and to, and summarise the change per account

### Asset transaction logging

Individual movements such as dividends, purchases, or transfers are stored as asset records. POST `/api/records` requires amount, description, and occurredAt, and GET `/api/records` filters by start and end so the agent can review a period.

Example prompt: POST `/api/records` with amount 300, description 'ETF dividend', occurredAt '2026-11-11', then GET `/api/records` with start '2026-11-01'

### Net worth charting

For dashboards, GET `/api/reports/net-worth-history` returns the series used to chart net worth over time, and GET `/api/workspace` gives the current balances and total, so an agent can answer trend questions or feed a chart.

Example prompt: GET `/api/reports/net-worth-history` and GET `/api/workspace`, then report the current net worth and its trend

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/workspace` | Get balances and net worth |
| POST | `/api/workspace/balance/{id}` | Update an account balance |
| POST | `/api/snapshots` | Create a snapshot |
| GET | `/api/snapshots/diff` | Compare two snapshots |
| POST | `/api/records` | Create an asset record |
| GET | `/api/records` | List asset records |
| GET | `/api/reports/net-worth-history` | Net worth history |
| POST | `/api/accounts` | Create an account |

## Key resources

- **Accounts** — Asset accounts with name, type, category, and currency
- **Workspace** — Current balances per account and total net worth
- **Snapshots** — Point-in-time balance captures, amend, details, and diff
- **Records** — Asset transactions with amount, description, and occurredAt
- **Reports** — Net worth history for charting
- **User** — Registration, login, password, and currency and snapshot-day settings

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 43 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 99 / 100
  - Developer Experience & Jentic Compatibility: 57 / 100
  - AI-Readiness & Agent Experience: 19 / 100
  - Agent Usability: 94 / 100
  - Security: 75 / 100
  - AI Discoverability: 60 / 100
- **View full report:** https://jentic.com/apis/qmlm.work/qmlm/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Jiadi by hand means logging in with a username and password to get a JWT, then attaching that bearer token to every account, snapshot, and record call yourself. Through Jentic you install once, import the Jiadi Property API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Jiadi puts account, snapshot, and record ids in the URL path (`/api/workspace/balance/{id}`, `/api/records/{id}`), so a rule can limit your agent to one account's balance. You choose the operations it may call, so destructive ones like account deletion or snapshot deletion are not included unless you add them.
- **Credential handling:** Your Jiadi JWT is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'take a net worth snapshot' or 'compare two snapshots', and Jentic returns the matching Jiadi operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **YNAB API** — Budgeting app API for accounts, categories, and transactions
- **Plaid API** — Bank account aggregation for balances and transactions
- **Open Exchange Rates API** — Currency exchange rates

## FAQ

### What authentication does the Jiadi Property API use?

The Jiadi Property API declares an HTTP bearer scheme (BearerAuth) with a JWT format in its OpenAPI spec. You obtain the token from POST `/api/login` with a username and password; register, login, and the ping health check need no credential. Through Jentic, the token is stored encrypted by your own Jentic One instance and injected at execution time.

### Can I compare two net worth snapshots with the Jiadi Property API?

Yes. GET `/api/snapshots/diff` takes a required from snapshot and an optional to snapshot and returns the difference between them. Use GET `/api/snapshots` to find the snapshot ids, and GET `/api/snapshots/{id}` for one snapshot's account balances.

### What are the rate limits for the Jiadi Property API?

The OpenAPI spec does not specify rate limits, and no public documentation for limits is linked from it. Treat the API as a personal app backend and keep agent polling light.

### How do I update an account balance in Jiadi through Jentic?

Install Jentic One, import the Jiadi Property API from the Jentic API Directory, and store your JWT. Your agent searches for 'update an account balance', Jentic returns POST `/api/workspace/balance/{id}` with its schema, and the agent calls it with the account id and the new balance. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there a Jiadi Property MCP server?

You don't need an MCP server to give your agent the Jiadi Property API. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it, discovering operations on demand rather than loading every tool definition into its context.

### Can I limit what my agent is allowed to do with the Jiadi Property API?

Yes. Write a rule that allows GET `/api/workspace`, GET `/api/snapshots`, GET `/api/snapshots/diff`, and GET `/api/reports/net-worth-history`, so the agent can report net worth and changes but cannot edit balances, delete snapshots, or change your password. Every call it makes is logged.
