Developers

Connect Askance to your agent

Askance is a standard remote MCP server. There is nothing to install — one entry in your client's MCP config connects it, and a short instruction file tells your agent when to reach for it. Pick your environment below.

MCP endpointhttps://mcp.askance.app/mcp

Project-scoped MCP config, plus a Skill so the agent reaches for Askance on its own.

  1. Fastest: paste this to your agent

    Your agent can do the whole setup itself — and unlike a copied snippet it can see which OS and client it is in, so it picks a place for the key that actually survives a restart. Paste this, with your key from Settings, and let it work. The manual steps below are the fallback.

    Set up Askance in this project.
    
    Fetch https://www.askance.app/install.md and follow it exactly, for whichever
    client and OS you are running in.
    
    My key is: <paste your key here>
    
    Keep the connection specific to THIS project, and check for an existing Askance
    connection first — if there is already one (for a different Askance project), name
    this one after the project rather than reusing "Askance".
    
    Store the key where it persists across restarts, and never in a file that gets
    committed — check .gitignore before writing anything, and do not echo the key
    back to me.
  2. Or add it yourself: one command, no environment variable

    Defaults to --scope local: recorded against THIS project directory and private to you, so the key persists across restarts with no environment variable to set and nothing secret can be committed. Run `claude mcp list` first — if an Askance connection already exists for a different Askance project, name this one after the project (Askance-YourProject) so calls and errors say which one they came from. Renaming changes the tool ids to mcp__Askance_YourProject__*, so only do it when there is genuinely more than one.

    claude mcp add --transport http Askance https://mcp.askance.app/mcp   --header "Authorization: Bearer ask_..."
  3. Only if your TEAM shares the config: .mcp.json

    Commit this at the root of your repo. Every teammate who opens the project gets the same connection, and the key stays in their environment rather than in the file. Name the server after the project when it is shared like this — a teammate seeing a bare "askance" cannot tell which Askance project it reaches, and anyone who works on two of your repos ends up with two connections answering to the same name.

    .mcp.json
    {
      "mcpServers": {
        "askance": {
          "type": "http",
          "url": "https://mcp.askance.app/mcp",
          "headers": {
            "Authorization": "Bearer ${ASKANCE_KEY}"
          }
        }
      }
    }
  4. Add a Skill so the agent knows when to ask

    Connecting the server gives Claude Code tools it can call, but nothing that prompts it to. A Skill is model-invoked — Claude reads the description and reaches for it when the situation matches — which is what turns Askance from an available tool into one that actually gets used.

    .claude/skills/askance/SKILL.md
    ---
    name: askance
    description: Ask a human subject-matter expert when a question cannot be answered from the codebase — business rules, product decisions, integration details. Use whenever you would otherwise guess or stall.
    ---
    
    When you hit a question you cannot answer from the codebase,
    the docs, or the conversation — a business rule, a product decision, an
    integration detail, anything held by a person rather than written down —
    do NOT guess and do NOT stop and wait for the user.
    
    1. Call Askance's `search_records` first. It may already be answered.
    2. If not, call `ask_question` with the full context, the options you can
       see, and the one you recommend.
    3. Carry on with other work immediately — do not sit and wait for the answer.
       Answers can take hours or days. If the question genuinely gates everything
       else, say so in the question so a human knows it is urgent.
    4. Call `check_questions` at the start of a session and between tasks to
       pick up answers that have landed.
  5. Set your key so it persists

    Your key comes from Settings once you have signed in. Set it so it SURVIVES A RESTART — a bare `export` in a terminal lasts only for that terminal, and an editor you launched from a Start menu or Dock never sees it at all. That is the single most common reason a connection works once and is gone the next day.

    # macOS / Linux — append to ~/.zshrc (or ~/.bashrc), then open a NEW terminal
    echo 'export ASKANCE_KEY="ask_..."' >> ~/.zshrc
    
    # Windows PowerShell — persists for your user account
    [Environment]::SetEnvironmentVariable('ASKANCE_KEY', 'ask_...', 'User')
    
    # Then FULLY restart the app (not just the window) and check it resolved:
    #   macOS/Linux:  printenv ASKANCE_KEY
    #   PowerShell:   $env:ASKANCE_KEY
    
    # in Claude Code, after restarting:
    /mcp          # askance should be listed as connected, not failed

Why the instruction file matters

Connecting the MCP server gives your agent tools it can call. It does not give it a reason to. Askance ships a standing-instruction MCP prompt (askance_workflow), but MCP prompts are user-invoked by design — your client surfaces them for a human to run, they are not injected automatically. The Skill, rule or AGENTS.md entry above is what makes your agent reach for Askance on its own, instead of guessing or stopping to ask you.

Do I need to install anything?

No. Askance is a remote MCP server reached over HTTPS with a bearer key — there is no SDK, no package and no local process to run. If your client speaks MCP over streamable HTTP, it can connect.

Next: invite whoever knows

Askance does nothing until someone can answer

Connecting the server is your half. The other half is one person who holds the answers your agent keeps guessing at — a founder, an ops lead, the colleague who knows how the pricing actually works. There is a page written for them rather than for you, with no setup and no jargon in it.