Access is currently by invitation. These steps are for existing members.
Sign in to Index, then open Settings → Connectors in your dashboard.
Choose your tool’s connection guide. For a custom integration, create a connector key with read, write, or read-and-write permission.
Ask the connected AI to save a useful project detail to Index.
In a new conversation, ask it to retrieve that detail from your Boards.
For local MCP clients, follow the MCP setup below. For your own app, use the API reference.
Your connection addresses
The API address comes from this deployment’s configuration. A dashboard override on this browser takes precedence. It may differ from the public website at indexapp.ai.
API base: Loading configuration…
For the curl examples, keep your connector key in INDEX_CONNECTOR_KEY in your shell. Never paste it into a public document.
BEHIND INDEX
Every piece has a place.
Pylons, paper, a little weathered technology. Explore why our visual world looks the way it does, and what it says about people, memory and the tools we work with.
A Board’s pylon grows as its entry count increases. It starts as a small utility tower, then becomes a larger pylon as more context is added. The five shapes below are the ones used in your dashboard.
The size also changes a little within each stage. It reflects the amount of saved context, not its importance or quality. Every Board is useful at its own size.
Developer reference
Connector API reference
Every connector endpoint is auth-scoped by the X-API-Key header. A key carries
read, write, or read_write scope, and accesses Boards through your account’s ownership and membership permissions. The Orchestrator processes every accepted write — classify, dedupe, route, embed.
GET/api/v1/connector/me
Validate the API key and inspect its scope. Returns connector name, scope, accessible board
count, writable board count, and last-used timestamp. Call this once on startup to fail fast on a
missing or revoked key.
GET/api/v1/connector/boards
List every board this key can access. Each board reports id, name, description, role, entry
count, and read/write capability. Pass ?writable_only=true to filter to boards the
key can write into.
GET/api/v1/connector/boards/search
Search boards by topic or keywords. Returns the most relevant accessible boards with a
match_score and match_reason. Useful before a deterministic write when
the AI app needs to choose a board itself. Query: ?q=…, ?limit=,
?writable_only=.
GET/api/v1/connector/context
Read context entries from a specific board. Pass ?board_id= plus an optional
?query= to rank by query relevance. Results combine text and available semantic
matches, with short summaries, a score, and match_reasons explaining
the ranking. Scores are relative ranking signals, not confidence percentages.
GET/api/v1/connector/context-all
Search context across all boards the key can read. Pass ?query= and
an optional ?limit=. Each result includes the source board so a reading AI can tell
which memory came from where. Only accessible, processed entries are returned. Exact repeated
text is collapsed; different details and exceptions remain separate results.
POST/api/v1/connector/capture
Find a destination for a memory without supplying a Board ID. Index ranks writable Boards,
checks relevance, and processes accepted attempts. A suitable destination is not guaranteed.
Optional topic gives the search more context.
curl -X POST $INDEX_API_BASE/connector/capture \
-H "X-API-Key: $INDEX_CONNECTOR_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "London prefers Ableton Live for music production and recently bought a Push 3.",
"topic": "music production"
}'
Check what actually happened
A 201 response means the capture request completed. It can still contain no saved
memory. Read outcome and every item in attempts before confirming a save.
written: attempts were accepted. Check each final_status:
processed is ready for retrieval; merged points to an existing entry
through entry.merged_into_id; conflict needs review.
deduplicated: every accepted attempt matched existing memory. This is not a new fact.
partially_written: some attempts were rejected. Keep the accepted results and retry only the rejected ones.
rejected or no_match: no attempt was accepted. Read
rejection_reason, each attempt’s error, and next_steps.
written_count counts accepted attempts, including duplicates and entries needing
conflict review. It does not count new, retrievable facts. Candidate Board IDs, names, match
scores and reasons in candidate_boards are limited to destinations this connection
can write to. Choosing an explicit Board never bypasses permissions or relevance checks.
classification reports the suggested topic, scoring method and
routing_eligible flag. Its confidence value is a heuristic or
model-reported score, not a measured probability. A weak topic label is diagnostic only;
it is not added as an automatic topic tag or used alone to justify relevance.
POST/api/v1/connector/write
Write a memory entry into a specific board. Use when the AI app already has the board id —
the target is explicit. Board permissions and the relevance gate still apply, and the Orchestrator runs before the write result is returned. Check final_status and the returned entry as described under capture results; a merged or conflicted entry is not a new processed memory.
curl -X POST $INDEX_API_BASE/connector/write \
-H "X-API-Key: $INDEX_CONNECTOR_KEY" \
-H "Content-Type: application/json" \
-d '{
"board_id": "brd_01HX...",
"content": "User finalised the Q2 launch checklist in this conversation."
}'
Authentication
Every connector request needs a key. Send it on the X-API-Key header. Keys carry an
explicit scope (read, write, read_write). Board access follows the account that owns the key, including its shared Board memberships. Keys can be limited to selected Boards. The key’s scope and the user’s current Board role both apply; a viewer cannot write.
To create a key: sign in, open the dashboard, then go to Settings → Connectors.
The raw key is shown once. Treat it like a password — if it appears in a chat log or shell history,
revoke it and generate a new one.
Index ships a stdio MCP server for Claude Desktop, Cursor, and any MCP-capable client. No REST
integration needed — the same boards, keys, and Orchestrator pipeline, exposed as native tool
calls.
Local MCP · an installation on your computer
Requires Python 3.12, an authorized Index source checkout, and a connector key. Run these commands from the checkout’s root. If you do not have the connector files, contact your workspace administrator; the website alone does not install them.
On macOS or Linux, setup prompts for your credentials or connector key, validates the connection, and saves it to ~/.index/mcp.env. Paste the printed JSON into your MCP client’s configuration and restart that client. Keep the local config private. On Windows, use the virtual environment’s Scripts/python.exe executable.
To rebuild client JSON without embedding the key, enter the paths printed by setup below. Local paths are specific to your computer.
Then run BACKEND/.venv/bin/python CONNECTORS/mcp/index_mcp_server.py --doctor to check installation, API reachability, and key validity. A successful connection does not mean a memory has been saved: confirm the tool’s write result and find the entry in its Board.
OpenAPI schema
Import /api/v1/connector/openapi.json into Postman, Insomnia, or any
OpenAPI-compatible client. The schema covers only connector-key-authenticated operations — user
admin routes are excluded.