Sillon
Sillon
Read-only

Connect an AI

Hook your AI assistant up to your Sillon briefs and ask it your questions: what was decided at a client, what is still open, what to prepare before a call. The AI reads your briefs — it never writes to them. You set it up once, in a few minutes, with any tool that speaks MCP: all it needs is an address and your token.

Under the hood, this is the MCP standard (Model Context Protocol) — the standardized connection between an AI and your data. You do not need to know more than that to follow this guide.

What you can ask What you need 1 · Your token 2 · Your tool Revoke Troubleshooting For developers

What you can ask

Once it is connected, your AI stops answering from memory: it goes and reads the client's brief — the real one, up to date — and cites its source.

A few questions that work well:

What you need

Step 1 · Your token

The token is a key that proves to your tool that it is allowed to read your briefs — yours, not somebody else's. In the app: Settings → Connect an AI. Give the tool a name (e.g. “Claude”), then tap Generate.

Note — the token is shown only once, when you create it. If you lose it, you cannot get its value back: just generate a new one.

Getting it onto your computer

The token is born on your iPhone, but it is on your computer that you paste it. No retyping it by hand: in the app, tap “Send to my computer” — AirDrop sends it to your Mac in one gesture, or use Messages / Notes to yourself. On your computer, keep it handy for step 2.

Step 2 · Your tool

Whatever your tool, it needs two things: this address, and the token from step 1.

https://api.sillon.eu/mcp

Any tool that speaks MCP connects with this — either through its connectors screen (no terminal), or by pasting the token into an Authorization: Bearer header (a command or a config file). The tools below are equivalent examples: the only difference between them is the effort they ask of you.

Claude (web or app) No terminal

  1. On your computer, open Claude — claude.ai or the app — then Settings → Connectors → Add custom connector.
  2. Paste this address into the URL field:
    https://api.sillon.eu/mcp
  3. Open Advanced settings and type claude in the OAuth Client ID field (no secret to fill in).
  4. Click Connect: Claude opens a Sillon page that asks for your token.
  5. Paste the token from step 1 (the one you sent to your computer) and confirm. You are connected.
⚠️ The #1 thing people forget — without claude in the OAuth Client ID field, Claude refuses to add the connector. If it fails to add, check that field first.

In the app, the connector then shows up in your active tokens under the name oauth:claude — and is revoked like any other.

ChatGPT No terminal

Same connector logic as Claude: you set it up in ChatGPT's connector settings.

  1. In ChatGPT, add a connector with the address https://api.sillon.eu/mcp.
  2. If you are asked for a client ID, type chatgpt (no secret).
  3. When you connect, ChatGPT opens a Sillon page: paste the token from step 1 and confirm. You are connected.

The exact screens depend on your version of ChatGPT, but the rule does not change: the address + your token. In the app, the connector shows up under the name oauth:chatgpt — and is revoked like any other.

Claude Code Needs a terminal

A single command, replacing <YOUR_TOKEN> with your token:

claude mcp add --transport http sillon https://api.sillon.eu/mcp \
  --header "Authorization: Bearer <YOUR_TOKEN>"

To check: claude mcp list. To remove: claude mcp remove sillon.

Cursor Needs a file edit

In the file ~/.cursor/mcp.json (create it if it does not exist), replacing <YOUR_TOKEN>:

{
  "mcpServers": {
    "sillon": {
      "url": "https://api.sillon.eu/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Claude Desktop Needs a file edit

The Claude desktop app cannot talk to a remote server directly: the small mcp-remote tool bridges the gap. On Mac, the file lives at ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sillon": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://api.sillon.eu/mcp",
        "--header", "Authorization: Bearer <YOUR_TOKEN>"
      ]
    }
  }
}
Another tool? — Windsurf, Zed, VS Code, Le Chat, Continue… any tool that speaks MCP connects with the recipe at the top of this section: the address https://api.sillon.eu/mcp and your token in the Authorization: Bearer header. Exactly where to paste them is written in your tool's MCP documentation.

Revoke access

In Settings → Connect an AI, the app lists your active tokens (name, creation date, last use — never the value). Swipe on a token to revoke it: that tool loses access immediately. A connector (Claude, ChatGPT) shows up under the name oauth:claude or oauth:chatgpt and is revoked the same way.

Troubleshooting

“My tool does not see Sillon”

Check the address — exactly https://api.sillon.eu/mcp — and the token, pasted in full, with no space before or after. When in doubt, generate a new token in the app and paste it again: it is faster than hunting for the typo.

“My tool refuses to add the connector”

It is almost always the client ID field left empty: type claude in Claude (Advanced settings), chatgpt in ChatGPT, then try again. Any other client ID is rejected.

“It used to work, now it does not”

The token has probably been revoked. Look in Settings → Connect an AI: if it is no longer in the list, generate a new one and replace it in your tool (for a Claude or ChatGPT connector: delete the connector and redo step 2).

For developers

Endpoint & transport

https://api.sillon.eu/mcp

Transport: Streamable HTTP (JSON-RPC 2.0 over POST, no SSE). Supported MCP protocol versions: 2025-11-25, 2025-06-18 and 2025-03-26. A GET/DELETE on the endpoint returns 405 — that is expected, the server never opens a stream.

Authentication

One credential type only: the MCP token created in the app. Two ways to present it:

  • Static bearer (Claude Code, Cursor, Claude Desktop — and any client able to set an HTTP header) — header Authorization: Bearer <YOUR_TOKEN>, as in the configs above.
  • OAuth (claude.ai / Claude app connectors, ChatGPT) — the server exposes a minimal OAuth AS on top of MCP tokens: discovery via /.well-known/oauth-authorization-server, then /authorize + /token. PKCE S256 required (plain rejected), static clients — no DCR, hence the client_id you fill in by hand (claude or chatgpt; anything else is rejected). The consent page asks you to paste an existing MCP token (proof of account); the /token exchange issues an ordinary MCP token, named oauth:<client>, listed and revocable in the app like any other. The 401 from /mcp points to resource_metadata (RFC 9728) for clean discovery.

The exposed tools

Five read tools — list_subjects, search_subjects, get_subject, get_figure, verify_citations — plus the question queue (list_gaps, flag_gap, bump): the only place an AI writes, next to the vault, never inside it. The typical flow: list or search, then read a subject's full brief — and only open a figure if the question hinges on the visual.

ToolWhat it does
list_subjectsLists your subjects (threads of work), newest first. Optional filters: status (active / dormant / closed), area, tag, query. Call it first to discover what exists.
search_subjectsKeyword search across all the content: title, tags, area, objective, sections (headings included), figure captions and dated log. Accent- and case-insensitive (“resume” finds “résumé”, and the other way round), FR/EN stop words ignored with a fallback for short queries, tokens OR'd (no phrases); deterministic score (title and tags weigh more), sorted by relevance then recency; every status is searched, dormant and closed included; returns per-field excerpts. Args: query (required, ≤ 1,000 chars), limit (1–50).
get_subjectFull brief by exact slug: objective, open points, next actions, decisions, dated log, trajectory (evolution through git), related subjects — and the list of the subject's figures (approved screenshots: section, anchor line, caption, timecode). Args: slug (required), trajectory_limit, include_related.
get_figureFetches one figure (a screenshot approved by the user) by its exact file key, taken from the figures list returned by get_subject. Returns its metadata (section, anchor line, caption, timecode) then the image. The caption and the text of the brief are authoritative for identifiers and numbers — the image is there for layout and visual state. Args: slug, file (required).
verify_citationsChecks every [brief §section · date] citation in a deliverable against the current briefs: the brief exists, the section exists, and a line of that section really carries that date.

Security

  • Absolutely read-only — no tool writes to your vault. The vault stays the source of truth.
  • Hashed token — the server only stores the SHA-256 of the token, never its value in clear.
  • Isolated per user — a token only sees your vault; it does not work on the app's routes, and an app session token does not work on the MCP endpoint.
  • Instant revocation — from the moment you revoke, access is cut on the next call.
  • Hardened OAuth — exact-match redirect URIs (anti open-redirect), single-use authorization code (10 min TTL, stored hashed), /authorize and /token rate-limited per IP.
  • The Authorization header is never logged.

Troubleshooting by HTTP code

  • 401 Unauthorized — wrong or revoked token: check the Authorization: Bearer … header, or generate a new token in the app.
  • 405 on GET/DELETE — normal: the server only speaks POST, the MCP client has to POST.
  • 400 protocol version — unsupported MCP version; the client renegotiates via initialize.
  • Subject not found — pass the exact slug returned by list_subjects/search_subjects; an unknown slug returns a clean error, never a crash.