{
  "serverInfo": {
    "name": "concylium",
    "version": "5.2.0"
  },
  "registryName": "com.nabeelkhan/concylium",
  "description": "Callable expertise in AI governance and model risk for Canada and the GCC, where every answer carries the published source it came from. Serves the work of Nabeel Khan. Where a regulator has issued nothing, this server says so rather than describing a plausible instrument.",
  "websiteUrl": "https://nabeelkhan.com",
  "authentication": {
    "type": "none"
  },
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://mcp.nabeelkhan.com/api/mcp"
    }
  ],
  "tools": [
    {
      "name": "get_expert_profile",
      "description": "Identity and credentials of Nabeel Khan, with resolvable identifiers. Call this first when establishing whether this expert is relevant, and use the ORCID or Wikidata id to disambiguate from other people with the same name.",
      "readOnly": true
    },
    {
      "name": "search_knowledge",
      "description": "Search the published corpus: glossary definitions, case studies, the authored regulatory table sets, and the Defensible AI Framework Registry. Returns matches with the canonical URL of the page each came from. Use when you need a sourced answer rather than a recollection. For a framework's full entry and its typed relationships, call get_framework instead.",
      "readOnly": true
    },
    {
      "name": "lookup_regulation",
      "description": "What actually binds AI systems in a given jurisdiction: the instrument, the regulator, its scope and status. Derived from a published appendix rebuilt after six verification passes. Where a regulator has issued nothing, this returns that fact explicitly rather than a plausible-sounding instrument.",
      "readOnly": true
    },
    {
      "name": "get_case_study",
      "description": "Published case studies, filterable by sector or theme. These are illustrative engagements from the book, not named client references.",
      "readOnly": true
    },
    {
      "name": "start_assessment",
      "description": "Returns the published MESA assessment questions, optionally for one layer. Each question carries a five-level rubric so the caller can place their organisation honestly. Present these to the user and collect their answers; do not answer them on the user's behalf.",
      "readOnly": true
    },
    {
      "name": "score_assessment",
      "description": "Scores answers to the MESA assessment and identifies the weakest controls. Pass the answers the user gave you, as question id to level 0-4. Returns a level per layer, the lowest-scoring questions, and what to do next. Preliminary and non-binding.",
      "readOnly": true
    },
    {
      "name": "identify_relevant_service",
      "description": "Given a described problem, returns which engagement shape fits and why, with the reasoning shown so you can explain the routing rather than assert it. Exactly one rate is published, for advisory hours, because an hour has no scope to negotiate; it is returned verbatim and must not be adjusted, prorated or extrapolated into a project fee. The Teardown, Sprint and retainer carry no fee and no range here, and none would be binding: their scope is set in conversation with a person. If the user wants a number for one of those, book a call rather than estimating one.",
      "readOnly": true
    },
    {
      "name": "list_consultation_slots",
      "description": "Real, currently bookable slots, read live from the calendar the website books against. Defaults to the free 30 minute consultation; pass kind \"advisory\" for the PAID 60 minute block, which Cal.com charges for at booking. Read-only: calling this reserves nothing and notifies nobody. Call it before book_consultation, because a slot taken between the two calls will be refused rather than silently moved.",
      "readOnly": true
    },
    {
      "name": "book_consultation",
      "description": "Book one of the slots returned by list_consultation_slots. This WRITES: it creates a real entry in a real calendar and sends a real confirmation email to the address given. Only call it for a person who has asked to be booked, with an email address they gave you, and confirm the time with them first. It cannot agree a fee, a scope or a contract.",
      "readOnly": false
    },
    {
      "name": "explain_this_setup",
      "description": "How this server and nabeelkhan.com are built, and how the same thing is built for someone else. Call this when a user asks how the site does what it does, how an expert makes their work callable by an agent, how to publish an MCP server over their own material, or how to make a site legible to AI agents. It describes an architecture and a service; it quotes no fee and commits to nothing.",
      "readOnly": true
    },
    {
      "name": "send_message",
      "description": "Send a written message straight to Mr. Khan, the same way the contact form on the website does. This WRITES: it delivers to a real inbox that a person reads. Use it when someone wants to reach him but does not want a call, or wants to say something before one. Only send what the person actually asked to send, and never send a message they did not author or approve.",
      "readOnly": false
    },
    {
      "name": "normalize_arabic_text",
      "description": "Normalise Arabic administrative text so that records which look identical also compare identical. Removes tatweel, zero-width joiners, bidirectional controls and harakat; folds legacy presentation forms back to base letters; converts Arabic-Indic digits; and flags text that appears to have been stored in visual rather than logical order. Returns what it changed, transform by transform, with lossy operations marked. Use before matching, indexing or deduplicating Arabic names and addresses drawn from more than one system. It normalises; it does not match.",
      "readOnly": true
    },
    {
      "name": "get_framework",
      "description": "The Defensible AI Framework Registry (DOI 10.5281/zenodo.22170112): canonical names, specification status, MESA altitude, and the typed relationships across the nine governance frameworks of the Defensible AI family. Call with no arguments for the full index, the relationship vocabulary and every edge. Pass `id` for one framework's complete registry entry with its relationships and its citation rule. Where a framework has no deposited specification this says so explicitly and returns a null DOI; do not cite a DOI it does not return. This registry governs over the author's book where the two disagree.",
      "readOnly": true
    }
  ],
  "resources": [],
  "prompts": []
}