Documentation
Everything you need to get started with Historis
Getting started
Create your account and get going in minutes
Create an account
Free signup, no credit card required.
Create your first event
Describe what happened. Historis organizes the rest.
Connect your AI
Let Claude, ChatGPT, or Cursor handle the tracking for you.
Key concepts
The building blocks of Historis
Events
The basic unit. An event contains free-form text, a status (open, in progress, closed), a due date, and a follow-up date. It's your working memory.
Persons
Your contacts: clients, suppliers, partners. Each person has a name, phone, email, and notes. Link them to events to build a history.
Tags
Classify your events and persons with tags. Counters update automatically. Filter by tag to find what matters.
Statuses
Lifecycle: Open → In Progress → Closed. Add a resolution when closing. Filter by status to see what's left to do.
Teams
Organize your members into teams. Teams are the foundation for visibility control — restrict who can see specific events and contacts. The Free plan includes one team; paid plans are unlimited.
Visibility
Control who sees what. Each event and contact has a visibility level: Organization (everyone), Teams (only assigned teams), or Private (only you). Set visibility when creating or editing.
Rules
Plain-language instructions saved for your whole organization. Historis indexes them; your connected AI finds the relevant rule and applies it, marked ◆ — never executed server-side.
Rules
Reusable instructions your AI follows
A rule is a short instruction written in plain language and saved once for your whole organization. Historis stores and indexes your rules but never runs them itself — when your AI works on something that matches, it finds the relevant rule and applies it, marking what it did with ◆. Because rules live with your organization, every teammate's AI follows the same playbook.
How it works
- Each rule is indexed by keywords and the people it mentions, so your AI surfaces it exactly when it is relevant — not on every event.
- Rules are saved at the organization level, so they apply across your whole team. Write a convention once and everyone's AI follows it.
- Your AI reads the rule and acts on it — tagging, linking, routing, setting a follow-up. Every change it makes is marked ◆ so you can tell its work from yours.
- Historis never executes a rule on its own. Nothing happens server-side and no event is changed behind your back; rules only guide the AI you connect.
Teach your AI — and let it improve
- Just tell your AI in chat: "From now on, file anything from a supplier under #wholesale." Ask it to save that as a rule and it becomes part of the playbook.
- Caught it mis-tagging or routing something to the wrong place? Tell it what was wrong and ask it to record the rule. The next time — for you or any teammate — it gets it right.
- You can also write rules yourself in plain markdown from the Rules page. No special syntax, no conditions to configure — a clear sentence is enough.
Example rules
Connect your AI
Historis works with any MCP-compatible agent
MCP Server URL
Claude Desktop
Add this block to your claude_desktop_config.json:
{
"mcpServers": {
"historis": {
"url": "https://api.historis.app/mcp"
}
}
}ChatGPT
In ChatGPT Settings → MCP Servers → Add Server. Paste the URL above and authorize via OAuth.
Cursor
In Settings → MCP → Add server. Same JSON config as Claude Desktop.
Incoming webhooks
Let your other apps push events into Historis automatically.
An incoming webhook is a URL you can POST to. Whenever something happens in another tool — a payment, a form submission, a closed deal — that tool sends a small JSON payload to your webhook URL and Historis turns it into an event. No code required on the Historis side.
Create an endpoint
In Settings -> Webhooks, click New endpoint (Pro or Business) and give it a name like "Stripe payments".
Copy the URL and token
Historis shows the endpoint URL and a secret token once. Store the token securely — it is shown only at creation.
Send your events
Point your app (or Zapier / Make / n8n) at the URL with the token in the Authorization header. Each request creates an event.
Example request
curl -X POST https://api.historis.app/api/webhooks/ingest/YOUR_ENDPOINT_ID \
-H "Authorization: Bearer whk_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pi_3abc123" \
-d '{
"content": "Payment received — 450 EUR",
"status": "open",
"tags": ["payment"],
"person": { "name": "Pierre Dupont", "email": "pierre@example.com" },
"metadata": { "external_id": "pi_3abc123", "source": "stripe" }
}'- Only content is required. status, tags, person (name, email) and metadata are optional — a person is matched by email, or created automatically.
- Idempotency: send an Idempotency-Key header (or metadata.external_id) so a retried delivery is de-duplicated instead of creating a second event.
- The token is a secret: send it over HTTPS in the Authorization header, never in the URL. Revoke an endpoint anytime to cut it off instantly.
- Works with anything that can POST JSON — Zapier, Make, n8n, or your own backend.
MCP Tools Reference
All tools available to your agent
Context & briefing
| Tool | Description |
|---|---|
| get_organization_context | Cold-start briefing: organization, members, teams, frequent tags, stats, recent activity |
| manage_organization | Write org context via action: set_description (org), set_team_context (team), set_member_context (member, owner only) |
| get_daily_brief | Morning brief: overdue, due today, upcoming, and stale events in one structured snapshot |
| get_person_context | Full context for a person: identity, tags, open events, recent history, summary stats |
Events
| Tool | Description |
|---|---|
| create_event | Capture an event: free-form text, tags, persons, deadlines, idempotent on external source ids |
| search_events | Search and filter events: text, status, tags, person, dates, deadlines (due_before, due_today) |
| manage_event | Single-event operations via action: get, update, delete, add_update, link_events, link_person, thread, batch_update_status, close_loop |
| bulk_create_events | Batch import up to 50 events from a JSON array, idempotent per (source_type, source_id) |
Persons
| Tool | Description |
|---|---|
| search_persons | Discover contacts by full-text search across all their fields (accent-insensitive) and by the relationship graph: filter by kind and by a role on linked contacts (with_role / without_role) |
| search_or_create_person | Find a person by name (optionally email), create if not found, upsert tags |
| bulk_create_persons | Batch-create up to 50 contacts from a JSON array, skipping duplicates by email |
| manage_person | Person operations via action: update (name, contact info, notes, tags, visibility), delete |
| manage_relationship | Contact-to-contact links via action: list, create, update (note), delete |
Tags
| Tool | Description |
|---|---|
| manage_tags | Tag operations via action: list (by usage), analyze_duplicates, merge |
Rules
| Tool | Description |
|---|---|
| find_applicable_rules | Preview which active rules would match a draft event before creating it |
| manage_rules | Rule operations via action: list, get, create, update, toggle, delete, test (dry-run), executions |
Spotlight — the daily brief
get_daily_briefThe most differentiating tool. One call returns a structured snapshot of everything that needs attention: overdue work, deadlines due today, what is coming up, and stale open events. Your agent turns it into a morning briefing.
Authentication
How access works
OAuth 2.1
OAuth 2.1 with PKCE — the standard flow for MCP agents. Authorization is automatic: your agent will ask you to approve access the first time.
API Tokens
For direct integrations, create a token in Settings → API Tokens. The token is shown only once.
FAQ
How do I create an event from my AI?
Just tell your AI: "Create an event in Historis: meeting with John about the website quote". The agent uses the create_event tool automatically.
My AI isn't applying a rule
Rules aren't run by Historis — your AI applies one when it finds a relevant match. Check that the rule is active and that its keywords (or linked people) match what you're working on, then ask your AI to look for applicable rules.
How do I find overdue events?
Ask your AI: "What needs handling today?". It will use get_daily_brief, which buckets overdue, due-today, upcoming, and stale events. For a targeted search, search_events supports deadline filters like due_before and due_today.
MCP authentication is failing
The OAuth token may have expired. Disconnect and reconnect the MCP server in your AI's settings.
Resources
Every Historis documentation link, product and legal, in one place.