For AI agents

Plug Friendship Tracker into Claude, ChatGPT, Cursor or any agent in one step.

Friendship Tracker ships an MCP server, a Python CLI, REST and GraphQL APIs, drop-in libraries in 15 languages, and signed webhook subscriptions. One token, one host, every surface documented. From €1/month.

Every way to talk to Friendship Tracker

Pick whichever interface your agent already speaks. They all hit the same data and obey the same rules.

Model Context Protocol (MCP)

Native MCP server, one read tool and one write tool per data model. Drops straight into Claude Desktop, Cursor, Cline or any MCP host.

Python CLI

Single-file, stdlib-only Python client. CSV, NDJSON, table output, dry-run, retry, idempotency keys, profile auth - the things shell pipelines actually need.

REST + GraphQL

Plain REST under `/xapi2/data/...` plus an optional GraphQL endpoint with depth + complexity limits. Same auth, same audit log, same rate limits.

15-language client libraries

Single-file, vendorable libraries for Python, TypeScript, JavaScript, Go, Java, Rust, C#, C++, PHP, Ruby, Kotlin, Swift, Dart, Elixir, Clojure. No package manager required.

Signed webhooks

HMAC-signed JSON delivery, exponential backoff, auto-disable after sustained failure, replay-safe via signed timestamps. Subscribe per event type from a single dialog.

Live realtime channel

Same WebSocket the web UI uses. Subscribe to record changes; agents stay in sync without polling. CRUD operations are also available over WS for low-latency loops.

Why agents like building on this

From €1 per month

One honest price. 30-day refund. No usage-based billing surprises, no per-call meter, no separate "AI tier".

Hosted in Germany

Application servers and database in Germany, subject to German law. No US subprocessor in the request path. GDPR-aligned by default.

Ad-free, telemetry-free responses

Responses contain your data and nothing else. No injected ads, no tracker pixels, no third-party calls inside the API path. Agents reason on clean payloads.

Stable APIs by people who use them

Friendship Tracker is built and run by the same engineers who answer the support email. The API your agent depends on is the same API the web UI uses - we cannot break it without breaking ourselves.

Append-only audit log

Every write through any surface (web, MCP, CLI, REST, GraphQL, WS) is recorded with actor, timestamp and diff. Operators can answer 'who did what' even months later.

One token, scoped + revocable

Personal access tokens are scoped per data model and per operation. Revoke from the web UI; agents see a 401 within seconds. No re-auth dance, no service-account sprawl.

Connect in 30 seconds

Two install paths, both single-file Python, both auto-update on every run. Pick MCP for in-chat assistants, the CLI for shells and CI.

Use it from Claude / ChatGPT / Cursor

Install the MCP server, then point your host at it.

bash
curl -fsSL https://friendship-tracker.com/xapi2/mcp/install.sh | sh
claude_desktop_config.jsonjson
{
  "mcpServers": {
    "friendship": {
      "command": "friendship-mcp",
      "args": ["serve"]
    }
  }
}
Full MCP setup in /docs

Use it from a shell or CI

Install the CLI, log in once, then pipe data.

bash
curl -fsSL https://friendship-tracker.com/xapi2/cli/install.sh | sh
bash
# One-time login, then list activity as JSON
friendship login
friendship activity list --format ndjson
Full CLI reference in /docs

Or just use REST or GraphQL

If your agent already speaks HTTP, no install is needed. Same Bearer token, same data, same audit.

RESTbash
# List activity via REST
curl -H "Authorization: Bearer $TOKEN" \
  https://friendship-tracker.com/xapi2/data/activity?limit=20
GraphQLbash
# Same query via GraphQL
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  https://friendship-tracker.com/xapi2/graphql \
  -d '{"query":"{ objects(type: \"activity\", limit: 20) { id data } }"}'

What an agent can read and write in Friendship Tracker

11 data models are exposed end-to-end. Each one supports list, get, filter, create, update and delete via every interface above.

Activities
Contacts
Conversations
Custom fields
Gifts
Journal
Life events
Notes
Pets
Relationships
Reminders

How it stays stable for an agent

Every write accepts an `Idempotency-Key` header so retries never duplicate. Reads are cacheable; writes return the canonical record so an agent never has to re-read after a successful PATCH. Errors come back as a typed envelope ({error, status, hint}) in English and German, so a model can branch on the code without parsing prose.

Rate limits are per-token and surface a `Retry-After` when crossed; the CLI and the SDKs honour it automatically. WebSocket reconnects are tracked per token so an agent that loses its connection picks up from the last delivered event without replaying the journal.

Every change made by an agent lands in the append-only audit log, attributed to the token. Operators can revoke a token in one click and see exactly which records it touched.

Get a token

Sign in to Friendship Tracker, open the Integrations dialog, click New token, scope it to the data models the agent needs, copy the pat_… value. Tokens are listed and revocable forever after. Programmatic sign-up for agents is on the way; until then, a human creates the token once and the agent uses it indefinitely.

Common questions from agent builders

Is Friendship Tracker an MCP server, or does it run one?

Both. Every account gets its own MCP server, generated from the data model the account already uses. The server is a single Python file you install with one curl line; it auto-updates on every run, signs requests with your personal access token, and exposes a read tool and a write tool per data model.

Can I use it without the MCP server?

Yes. Plain REST under https://friendship-tracker.com/xapi2/data/..., GraphQL at https://friendship-tracker.com/xapi2/graphql, signed webhooks for push, a WebSocket for live updates. The 15-language client libraries are single-file drops if you do not want a package manager in the loop.

What does Friendship Tracker cost for an agent workload?

From €1 per month. There is no per-call meter, no separate "AI tier", no usage-based billing surprise. The price covers human users and machine users alike. 30-day refund window if it is not a fit.

Where does my data live, and what are you doing with it?

Application servers and the database run in Germany, on machines we operate ourselves. We do not train models on your data. We do not sell, share, or syndicate it. Backups are encrypted, snapshotted daily, kept 30 days. The full technical detail is at /security.

Is this stable enough to put in production?

Friendship Tracker is built and operated by the engineers who answer the support email. There is no third-party dependency in the request path that we do not also depend on for the web UI. Status, uptime and recent incidents are visible at /status; reach us directly via /contact.