What your agent can do
Ordentus is your one page — your calendars and your health, side by side. The same data is available over a simple HTTP API, so an AI agent or LLM can read it and act on it for you, scoped to your account alone.
- Read today's agenda across every calendar you've merged.
- Create, update, or delete events — a focus block, a moved meeting.
- Add, move, complete, and prioritise todos, goals, and projects — the same ones on your dashboard.
- Manage your calendar subscriptions, share links, reminders, and hidden events.
Nothing is shared beyond your account, and you stay in control — every token is yours to revoke.
Your health and sleep data is opt-in. A normal token can't touch it — health endpoints return 403 — unless you tick Health when creating the token. Leave it off for any agent that doesn't need sleep, bedtime, or workout data.
Create an API token
Sign in to Ordentus and open Account Settings → API Access. Create a token and choose its scope:
| Scope | Allows |
|---|---|
read | All GET requests — see your day, never change it. |
write | All POST, PATCH, PUT, DELETE requests — act on your behalf. |
health | Adds access to sleep, bedtime, cognition & workouts. Off by default — only tick it if the agent needs health data. |
A token can hold any combination. It looks like ordt_abcdefghij… — around 40–50 characters. Copy it once and store it somewhere safe; you won't be shown it again.
Give a read-only agent a read token. Only add write when you're sure the agent should be able to change things.
Point your agent at Ordentus
There's a single reference document written for machines: ordent.us/llms-api.txt. It lists every endpoint, the request shapes, and worked examples.
To set up most AI agents, give them two things — your token, and that URL in their system prompt or knowledge base:
You can manage my calendar and tasks through the Ordentus API.
Reference: https://ordent.us/llms-api.txt
Auth: send header Authorization: Bearer ordt_your_token_here
Only act when I ask; confirm before deleting anything.
The agent reads the reference, learns the endpoints, and authenticates every request with your token.
ChatGPT & custom GPTs
A ChatGPT custom GPT can't run curl — it calls Ordentus through a GPT Action, which needs a machine-readable schema, not prose. Setup takes about two minutes:
- Add the Action. In the GPT editor → Configure → Actions → Create new action, choose Import from URL and paste ordent.us/ordentus-openapi.yaml (or paste that schema in directly).
- Authenticate. Set Authentication → API Key, Auth Type Bearer, and paste your
ordt_token. ChatGPT then sendsAuthorization: Bearer …on every request. - Test. Ask the GPT "check my Ordentus connection" — it calls
whoami(/api/auth/me) and should return your account. Then try "what's on my calendar this week?" or "add a focus block tomorrow at 9am."
The core schema above covers calendar, tasks, feeds and reminders — enough for most people. ChatGPT caps each Action at 30 operations, so the rest are split out: add ordentus-openapi-extras.yaml for share links, settings and hidden events, and — only if your token has the health permission — ordentus-openapi-health.yaml for sleep, bedtime and workouts. Same token, extra Actions.
Giving a custom GPT only this page or a token in its prompt isn't enough — the OpenAPI schema is what makes the endpoints callable. And keep the token in the Authentication panel, never in the URL — query-string keys leak into server logs and history.
Base URL & a sanity check
Everything lives under one origin:
https://ordent.us
Every request carries the token in an Authorization header. Confirm the token works before wiring up anything else:
curl -H "Authorization: Bearer $ORDENTUS_TOKEN" \
https://ordent.us/api/auth/me
A 200 OK with your user record means you're connected. A 401 means the token is missing or wrong.
What your agent can reach
The endpoints an agent uses most. The full list is in /llms-api.txt.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/auth/me | Who the token belongs to. |
| GET | /api/events | List events — params start, end, feed_id. |
| POST | /api/events | Create an event. |
| PATCH | /api/events/{id} | Update an event. |
| GET | /api/feeds | List your calendar subscriptions. |
| GET/PUT | /api/store/{kind} | Todos, goals, projects, objectives. |
| POST | /api/store/{kind}/items | Add one task/goal — title in the body, plus bucket for todos. |
| GET | /api/reminders | List and create reminders. |
Datetimes are ISO 8601, e.g. 2026-06-01T09:00:00+10:00. All-day events use a plain date, 2026-06-01.
Worked examples
Read today's events
TODAY=$(date -u +%Y-%m-%dT00:00:00Z)
TOMORROW=$(date -u -v+1d +%Y-%m-%dT00:00:00Z) # Linux: -d '+1 day'
curl -s -H "Authorization: Bearer $ORDENTUS_TOKEN" \
"https://ordent.us/api/events?start=$TODAY&end=$TOMORROW" | jq '.[].summary'
Add a 30-minute focus block
curl -s -X POST -H "Authorization: Bearer $ORDENTUS_TOKEN" \
-H "Content-Type: application/json" \
https://ordent.us/api/events \
-d '{
"summary": "Deep work",
"dtstart": "2026-06-01T09:00:00+10:00",
"dtend": "2026-06-01T09:30:00+10:00",
"all_day": false
}'
Because the personal store is the same data the dashboard reads, anything your agent writes shows up on your page the next time you open it.
Security & good manners
- Treat tokens like passwords. Never commit them or log them in plain text — use environment variables or a secrets manager.
- Use the narrowest scope you need. A summarising agent should ask for
readonly. - Revocation is immediate. Revoke any token from Account Settings; once revoked it returns
401on every request. - Every action is logged for you. Each API-token request is recorded under Account Settings → API Access → Agent activity — "Created an event", "Added a task" — so you can see exactly what an agent did.
- Don't poll. Your data changes infrequently — fetch on your action, not on a tight loop.
Reference & limits
The canonical, always-current machine reference is ordent.us/llms-api.txt — endpoint shapes may evolve between releases, and that file is updated each release.
Common responses: 401 (bad token), 403 (token lacks the scope for that method), 404 (not yours / doesn't exist), 429 (rate-limited — back off and retry).