Skip to content

For developers & agencies

Set your bot up by talking to your own AI assistant.

Point an assistant you already use — Claude, or anything that speaks MCP — at Scode, hand it one scoped key, and say "here's my business, set it up." It builds the knowledge base, writes the answers, wires the actions, and tests its own work.

What this actually is

Scode exposes an MCP server — a small program your assistant runs — that lets it read and write your bot's configuration through the Scode API. It is a setup tool, not the bot itself.

The bot that answers your customers runs inside Scode on a fast, inexpensive model. This is a separate surface, and the split is the whole idea: the thing that decides support quality is the knowledge and the action descriptions, not the model reading them back. So it is worth pointing a strong assistant at that preparation work, even though a small one serves the result to customers.

Scode does not host the assistant

You bring your own. Scode only provides the key and the tools it calls. Nothing about your setup assistant touches what your customers experience — they never talk to it.

Reads your existing knowledgeWrites Q&A, facts, crawls sitesWires AI ActionsTests in Arabic & dialectShows what customers ask

Getting started

  1. Create a management key

    In the dashboard, open Settings → Management keys (owner only) and create one. Tick only the permissions the job needs — see below. You'll see the key once.

  2. Copy the setup config

    The same dialog gives you a ready-to-paste configuration block with the key already in it. It looks like this:

    {
      "mcpServers": {
        "scode-setup": {
          "command": "npx",
          "args": ["-y", "@scode/mcp-server"],
          "env": {
            "SCODE_MANAGEMENT_KEY": "smk_your_key_from_the_dashboard",
            "SCODE_API_URL": "https://api.ai.scode.iq"
          }
        }
      }
    }

    Paste it into your assistant's MCP configuration. (In Claude Desktop or Claude Code, that is the mcpServers section of its config file.) The npx line fetches and runs the server for you — nothing to install by hand.

  3. Talk to it

    Ask for what you want in plain language. It will check what it's allowed to do first, then get to work.

    # then just talk to your assistant in plain language:
    
    "Here's my furniture shop. Crawl zanhome.iq, add a Q&A
     for our Basra delivery fee, then test it in Iraqi Arabic
     and tell me anything the bot gets wrong."
Testing is free and invisible to customers

The assistant tests its own work by asking the bot questions the way a customer would. Those test conversations are never delivered to anyone, never cached, and never counted in your analytics — there's a free allowance of 200 per billing period. Good setup means testing far more than feels necessary, especially in the Iraqi dialect your customers actually type.

Permissions (scopes)

A key does only what you ticked — nothing more. Each permission is granted on its own, so you can hand an agency the ability to build knowledge without also letting it point your bot at outside systems.

PermissionLets the assistant…
knowledge:readSee your documents, Q&A pairs, business facts, and crawl jobs.
knowledge:writeUpload documents, crawl your website, and create or edit Q&A pairs and business facts.
insights:readSee what real customers asked that the bot couldn't answer — the best guide to what to add next.
testAsk the bot test questions (the free, invisible allowance above).
actions:readSee the actions the bot can perform, and their invocation logs.
actions:writeCreate or edit AI Actions. Granted separately on purpose: an action can make your bot send data to an outside URL, so this is the one permission to hand out deliberately, and only to someone you'd trust with that.
The one to think twice about

actions:write is the powerful one — everything else only shapes what the bot says, but an action changes what it does. The dashboard flags it in bright warning colour for exactly this reason. Leave it unticked unless the job is specifically to build an integration.

What a key can never do

The list above is the entire reach of a management key. Everything else is unreachable — not by a rule someone remembered to add, but because those parts of Scode were never opened to this kind of key at all.

✗ Out of reach, always

  • Billing — can't see a card, change your plan, or spend money.
  • Deleting — there are no delete tools. It can retire a Q&A pair, never destroy your knowledge base.
  • Channels — can't connect or disconnect WhatsApp, Instagram, or Telegram.
  • Other keys — can't create a broader key for itself or outlive your revoking it.
  • Your account — can't change settings, team, or passwords.

✓ In reach, if you granted it

  • Read and build your knowledge base.
  • Crawl your website into the bot.
  • See what customers ask.
  • Wire and edit AI Actions.
  • Test the bot as a customer would.

Is it safe? Will it expose my keys?

No — and the design goes out of its way to make sure of it. Three things worth knowing:

Your own API credentials stay hidden

If an AI Action carries a secret — say an authorization header for your order system — that value is redacted before it ever reaches a management key. The assistant can see which header an action sends (so it can help you wire and test it) but not the secret inside. Your Gemini, Voyage, or provider keys aren't part of this surface at all; they live in the server environment and no key can read them.

A management key is its own kind of credential

It starts with smk_, travels in its own header, and is stored only as a hash — Scode can't show it to you again after creation, and neither can anyone who gets into the database. It is deliberately not the same as your public widget key, so the two can never be confused for one another.

You stay in control

Owner-only
Only the account owner can create or revoke a key. Team members and agents cannot.
Expires
Defaults to 90 days. It stops working on its own even if everyone forgets about it.
Revocable
Revoke it any time and whoever holds it loses access immediately — mid-request.
Scoped
It can only ever do the permissions you ticked, on your account and no one else's.
Handing a key to an agency

Send it through something private — not email or a group chat. Give the narrowest permissions the job needs, set a short expiry, and revoke it when the work is done. If it ever leaks, revoking is instant and creating a fresh one takes seconds.

The tools it has

Sixteen in total — six that read, ten that write, and none that delete. You don't call these yourself; your assistant does, based on what you ask for. They map onto the permissions above.

Reading

get_account_capabilities
The first thing it calls: your plan, what the key may do, allowance left, and anything that would be refused — so it never wastes turns on something that can't work.
list_knowledge_documents
Your documents and crawled pages, with which ones failed to index.
list_qa_pairs
Your exact-match question/answer pairs and how often each is used.
list_business_facts
The short facts injected into every answer — fees, hours, service areas.
list_ai_actions
The actions the bot can take, their endpoints, and which header carries identity.
get_knowledge_gaps
Real questions customers asked that the bot couldn't answer, most frequent first.

Writing

ask_test_question
Asks the bot something as a customer would, and reports how it answered — not just the words, but whether it was grounded or guessing.
add_knowledge_url
Fetch and index one page verbatim.
start_website_crawl
Crawl a whole site into the bot — usually the highest-value single step.
create_qa_pair · update_qa_pair
Add or edit a word-for-word answer for anything that must never be paraphrased.
create_business_fact · update_business_fact
Add or edit a fact injected into every answer — the fix for a bot inventing plausible specifics.
create_ai_action · update_ai_action
Wire or refine an action (needs actions:write).
test_bridge
Checks that a Support Bridge correctly refuses unauthenticated requests, before you point a live action at it.
Going further — acting for a signed-in user

If you want the bot to answer "what's my balance?" or "reschedule my booking" for a logged-in user of your own app, that's the identity hand-off, covered in Connect your platform. The test_bridge tool here is how your assistant checks that integration is safe before it goes live.