Skip to content
Contextely

Start here

Quickstart

Connect one system of record and answer a real question against it. About five minutes, no sales call, and nothing you have to undo afterwards.

  1. 1

    Create a workspace

    Sign up with an email address. The workspace is created on first sign-in and you are its owner, which means you hold every entitlement scope in it.

    Sign up
  2. 2

    Connect a system of record

    Under Sources, connect either a read-only SQL query against a Postgres, Supabase or Neon database, or any MCP server you already run, given its Streamable HTTP URL and the names of a list tool and a fetch tool. Saving lists one record and reads it back, so a source that cannot be refreshed fails here rather than silently three days later.

  3. 3

    Sync it once

    Press Sync. Contextely reads the records, condenses each one into a memory object, and records the entities, topics, freshness contract and entitlement requirement for each. Any record that fails to condense is listed by name with its reason, not summarised as a count.

  4. 4

    Create an API key

    Under API keys. The key speaks as one member, so what an agent holding it can retrieve is exactly what that person can retrieve. Copy it now; it is shown once and stored only as a hash.

5. Ask it something

Four doors, one room. Every one of these runs the same retrieval pipeline, applies the same entitlement scoring and returns the same freshness labels. Pick whichever fits where you are standing.

In the dashboard

A person, checking that it works

The Ask console at /app runs the same retrieval an agent runs, and shows the parts an ordinary search box hides: how many candidates were considered, how many were withheld on entitlement grounds, and what was refreshed. An owner or admin can also ask as another member, to check what that person would actually get.

Over MCP

Claude, Cursor, Zed, your own agent

Add the server to your MCP client config and restart it. The tools appear automatically; no schema to copy.

{
  "mcpServers": {
    "contextely": {
      "url": "https://www.contextely.com/api/mcp",
      "headers": { "Authorization": "Bearer ctx_sk_..." }
    }
  }
}

From the terminal

A person, a script, a cron job

One file, downloaded from this deployment. No package manager, no dependencies, nothing to trust beyond the file you just read. Save the key once and every later call is one line.

curl -fsSL https://www.contextely.com/cli.mjs -o contextely && chmod +x contextely

./contextely config set-key ctx_sk_...
./contextely search "acme renewal"
./contextely related <memory-id>   # walk to what it relates to
./contextely expand <memory-id>    # read the whole record from the source

Over HTTP

A backend service, a RAG pipeline, anything

One POST. The response is the same object the MCP tool returns, so a service and an agent cannot end up looking at different answers.

curl -s https://www.contextely.com/api/v1/search \
  -H "Authorization: Bearer ctx_sk_..." \
  -H "Content-Type: application/json" \
  -d '{"query":"acme renewal","limit":5}'

Reading the answer

Three fields decide whether to trust a result, and they are in every response on every surface.

freshness.state

fresh is inside its TTL. refreshed means it was past its TTL and was just re-read from the source. stale_refresh_failed means it could not be verified, and the attached warning says why. Treat the third as possibly out of date rather than as an answer.

entitlement.withheld_for_entitlement

Above zero means relevant context existed that this asker may not see. An agent that reports that honestly is more useful than one that answers confidently from half a picture.

citation_url

Where the fact came from. If the summary is not enough, call context_expand with the object id and get the full current record back over the same connector.

Where to go next