# Historis > Historis keeps track of what happened - so you and your AI are never > out of sync. Everything lands in one shared timeline, linked to the > right people. Ask for the brief: what happened, what you should know, > what needs handling. ## MCP Server - Endpoint: https://api.historis.app/mcp - Transport: Streamable HTTP - Auth: OAuth 2.1 with PKCE (automatic) ## Capabilities - Capture, update, delete, and search events (deadline filters included) - Manage persons (clients, suppliers, partners) and their tags - Tag-based organization with auto-classification rules - Daily brief: overdue, due today, upcoming, and stale events in one call - Organization and per-person context briefings for agents - Batch operations (bulk create, batch status update, close loops) ## Tools - get_organization_context: Cold start briefing for an agent: organization, members, teams, frequent tags, active rules digest, dashboard stats, recent activity. - manage_organization: Write org-level context that get_organization_context reads back: set_description; set_team_context; set_member_context. - get_daily_brief: Agent morning brief: a single structured snapshot of what needs attention today, computed over the org's visible events using UTC day boundaries. - get_person_context: Full context for a person: identity, tags, open events, recent closed events, summary stats. - create_event: Capture an event in Historis. - search_events: Search and filter events. - manage_event: Single-event operations via `action`: get; update; delete; add_update; link_events; link_person; link_tag; thread; batch_update_status; close_loop. - bulk_create_events: Batch import up to 50 events from a JSON-encoded array. - search_persons: Discover contacts by full-text search across ALL their descriptive fields and/or by the relationship graph. - search_or_create_person: Find a person by name, optionally email; create if not found. - bulk_create_persons: Batch-create up to 50 contacts from a JSON-encoded array -- the fast way to populate Historis when the user lists several people or pastes a contact list, instead of N search_or_create_person calls. - manage_person: Person operations via `action`: update; delete. - manage_relationship: Contact-to-contact links via `action`: list; create; update; delete. - manage_tags: Tag operations via `action`: list; analyze_duplicates; update; merge; keep_separate. - find_applicable_rules: Search the org's markdown rules relevant to a draft event. - manage_rules: Markdown rule operations via `action`: list; get; search; create; update; toggle; delete. ## Example Ask your AI: "Brief me: what is overdue, what is due today, what needs attention?" - the agent calls get_daily_brief and gets overdue, due-today, upcoming, and stale events in a single response. ## Pages - Home: https://historis.app/ - product overview and pricing (Free, Pro, Business) - Docs: https://historis.app/docs - getting started, connect your AI, MCP tools reference, FAQ - MCP setup guide: https://historis.app/mcp - how to connect Claude, ChatGPT, or Cursor (docs page, not the endpoint - MCP clients connect to https://api.historis.app/mcp) - Security: https://historis.app/security - how Historis secures your data (separation of intelligence and storage, OAuth 2.1, multi-tenant isolation, EU hosting, GDPR) - French versions: https://historis.app/fr and https://historis.app/fr/docs - MCP Registry entry: io.github.SvenLC/historis (https://registry.modelcontextprotocol.io/v0/servers?search=io.github.SvenLC/historis) ## Blog Notes on how Historis works and the choices behind it. Index: https://historis.app/blog (French: https://historis.app/fr/blog). - https://historis.app/blog/track-customers-without-spreadsheet - Why customer spreadsheets go stale and the timeline method that replaces them. - https://historis.app/blog/mcp-crm-setup - Connecting your AI to your client file takes one address and five minutes, no code. - https://historis.app/blog/customer-record - What a shop's customer record should hold: four blocks sized by GDPR data minimisation, the 30-second note after each visit that keeps the record alive, the CNIL rules on free-text comments, and when to move past the spreadsheet. - https://historis.app/blog/gdpr-customer-records - GDPR for a shop's customer file, grounded in real CNIL decisions: legal bases (consent only gates marketing email), the CNIL retention benchmarks (3 years for prospects, relationship plus 3 years for customers, 10 years for invoices), entries that are banned outright, and the register small shops still owe. - https://historis.app/blog/memory-not-points - Why a kept, dated client history out-retains a points card for an independent shop: the real sources behind the famous retention statistics, the loyalty industry's own saturation data, and the six kinds of entries worth writing down. - https://historis.app/blog/todoist-vs-historis - Todoist vs Historis: a task manager tracks what to do but has no concept of a person, so client history never accrues anywhere; Historis tracks people and the events tied to them, and its MCP server lets an AI read and write that history, not just check off tasks. - https://historis.app/blog/one-client-one-record - One client, one record: why the AI resolves people by email first - the address is the identity key (unique per organization at the database), a name match can enrich but never override, and a bare name that resembles an existing contact comes back as a question instead of a blind create. - https://historis.app/blog/events-not-tasks - Events, not tasks: an event-based CRM records what happened, dated and tied to a person, and keeps it - the team and its AI assistants write to one shared timeline that accumulates into the company's memory. - https://historis.app/blog/bring-your-own-ai - Bring your own AI: Historis runs no model server-side; you connect your own assistant over MCP, up to a fully self-hosted open-source model, so client data never reaches a third-party AI for inference (sovereign inference + EU storage; no on-premise). - https://historis.app/blog/mcp-search - How search works over the MCP: Postgres full-text search, visibility-scoped before it runs, immediately consistent, keyset-paginated and relation-aware, returned as compact payloads an agent reads in one call. - https://historis.app/blog/tenant-isolation - How the multi-tenant agent surface stays leak-proof: a token reaches only its own org's data, enforced at the database (SECURITY DEFINER visibility RPCs, session-bound identity, write-side policies) and re-verified by CI on every release. - https://historis.app/blog/deterministic-writes - Why letting an AI write is safe: every write is idempotent, attributable, reversible (delete is destructive but explicit), and bounded - enforced by unique indexes, triggers, policies, and a quota, not by good intentions. - https://historis.app/blog/rules-without-server-ai - Rules with no server-side AI: rules are markdown you write; the server matches and returns them by exact, reproducible logic; your own AI interprets and applies them. - French versions of every post live under https://historis.app/fr/blog/.