Documentation

Everything you need to get started with Historis

Getting started

Create your account and get going in minutes

01

Create an account

Free signup, no credit card required.

02

Create your first event

Describe what happened. Historis organizes the rest.

03

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

Anything that looks like an invoice or a quote → tag it #accounting and link the supplier.
Events tagged #repair → assign to the workshop and set a follow-up in 3 days.
When a contact is a reseller, tag their orders #wholesale and apply the reseller pricing notes.
For any professional contact, always record the company first, then the individual, then the relationship between them.
Anything involving a VIP client → flag it so it surfaces at the top of the daily brief.

Connect your AI

Historis works with any MCP-compatible agent

MCP Server URL

https://api.historis.app/mcp

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.

01

Create an endpoint

In Settings -> Webhooks, click New endpoint (Pro or Business) and give it a name like "Stripe payments".

02

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.

03

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

ToolDescription
get_organization_contextCold-start briefing: organization, members, teams, frequent tags, stats, recent activity
manage_organizationWrite org context via action: set_description (org), set_team_context (team), set_member_context (member, owner only)
get_daily_briefMorning brief: overdue, due today, upcoming, and stale events in one structured snapshot
get_person_contextFull context for a person: identity, tags, open events, recent history, summary stats

Events

ToolDescription
create_eventCapture an event: free-form text, tags, persons, deadlines, idempotent on external source ids
search_eventsSearch and filter events: text, status, tags, person, dates, deadlines (due_before, due_today)
manage_eventSingle-event operations via action: get, update, delete, add_update, link_events, link_person, thread, batch_update_status, close_loop
bulk_create_eventsBatch import up to 50 events from a JSON array, idempotent per (source_type, source_id)

Persons

ToolDescription
search_personsDiscover 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_personFind a person by name (optionally email), create if not found, upsert tags
bulk_create_personsBatch-create up to 50 contacts from a JSON array, skipping duplicates by email
manage_personPerson operations via action: update (name, contact info, notes, tags, visibility), delete
manage_relationshipContact-to-contact links via action: list, create, update (note), delete

Tags

ToolDescription
manage_tagsTag operations via action: list (by usage), analyze_duplicates, merge

Rules

ToolDescription
find_applicable_rulesPreview which active rules would match a draft event before creating it
manage_rulesRule operations via action: list, get, create, update, toggle, delete, test (dry-run), executions

Spotlight — the daily brief

get_daily_brief

The 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.

Example prompt
"What happened, what should I know, what needs handling today?"
Typical response
Two things are overdue: the quote for Martin (due Friday) and the supplier callback. Due today: delivery follow-up for the Dupont order. Coming up this week: the workshop restock. Also, 3 open events have not moved in over a week — want me to list them?

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.