AgentStack · Schema

KnowledgeConfigPatch

Writable knowledge DNA fields (GET-only metadata excluded). Shared by knowledge + mentor PATCH.

Company

Properties

Name Type Description
support_url object
contacts object
moderator_user_ids object
safety_playbooks object
safety_playbooks_write_mode object How to apply safety_playbooks: replace (full dict, UI default), patch (per-playbook overlay, MCP default), merge (policy-safe fill only).
crisis_playbooks object
min_rag_score object
grounded_first object
safety_fail_mode object
safety_term_allowlist object
retention_days object
llm_primary object
llm_fallback object
plan_history_enabled object
plan_history_max_user_messages object
slo_p95_ms object
max_concurrent_runs object
hyde_enabled object
term_aliases object
gene_pack object
context_map_enabled object
crag_enabled object
use_assistant_pipeline object
collection_ids object
context_lanes object
context_limits object
skill_subscriptions object
entitlement_sources object
getcourse_cache_ttl_sec object
product_id_map object
allowed_link_domains object
onboarding_email_prompt_ru object
require_email_for_paid object
crisis_notify_webhook_url object
default_playground_bot_uuid object
safety_reactions object
moderator_hours_msk object
handoff_sla_minutes object
View JSON Schema on GitHub

JSON Schema

agentstack-tech-knowledge-config-patch-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/agentstack-tech/json-schema/agentstack-tech-knowledge-config-patch-schema.json",
  "title": "KnowledgeConfigPatch",
  "description": "Writable knowledge DNA fields (GET-only metadata excluded). Shared by knowledge + mentor PATCH.",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/agentstack-tech-openapi.json#/components/schemas/KnowledgeConfigPatch",
  "properties": {
    "support_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Support Url"
    },
    "contacts": {
      "anyOf": [
        {
          "$ref": "#/$defs/KnowledgeSupportContacts"
        },
        {
          "type": "null"
        }
      ]
    },
    "moderator_user_ids": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Moderator User Ids"
    },
    "safety_playbooks": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Safety Playbooks"
    },
    "safety_playbooks_write_mode": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "replace",
            "patch",
            "merge"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Safety Playbooks Write Mode",
      "description": "How to apply safety_playbooks: replace (full dict, UI default), patch (per-playbook overlay, MCP default), merge (policy-safe fill only)."
    },
    "crisis_playbooks": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Crisis Playbooks"
    },
    "min_rag_score": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Min Rag Score"
    },
    "grounded_first": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grounded First"
    },
    "safety_fail_mode": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "fail_open",
            "fail_closed_crisis"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Safety Fail Mode"
    },
    "safety_term_allowlist": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Safety Term Allowlist"
    },
    "retention_days": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Retention Days"
    },
    "llm_primary": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Llm Primary"
    },
    "llm_fallback": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Llm Fallback"
    },
    "plan_history_enabled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Plan History Enabled"
    },
    "plan_history_max_user_messages": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 16.0,
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Plan History Max User Messages"
    },
    "slo_p95_ms": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Slo P95 Ms"
    },
    "max_concurrent_runs": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Concurrent Runs"
    },
    "hyde_enabled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hyde Enabled"
    },
    "term_aliases": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Term Aliases"
    },
    "gene_pack": {
      "anyOf": [
        {
          "$ref": "#/$defs/KnowledgeGenePack"
        },
        {
          "type": "null"
        }
      ]
    },
    "context_map_enabled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Context Map Enabled"
    },
    "crag_enabled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Crag Enabled"
    },
    "use_assistant_pipeline": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Use Assistant Pipeline"
    },
    "collection_ids": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Collection Ids"
    },
    "context_lanes": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/ContextLane"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Context Lanes"
    },
    "context_limits": {
      "anyOf": [
        {
          "$ref": "#/$defs/ContextLimits"
        },
        {
          "type": "null"
        }
      ]
    },
    "skill_subscriptions": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/SkillSubscription"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Skill Subscriptions"
    },
    "entitlement_sources": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Entitlement Sources"
    },
    "getcourse_cache_ttl_sec": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Getcourse Cache Ttl Sec"
    },
    "product_id_map": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Product Id Map"
    },
    "allowed_link_domains": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Allowed Link Domains"
    },
    "onboarding_email_prompt_ru": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Onboarding Email Prompt Ru"
    },
    "require_email_for_paid": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Require Email For Paid"
    },
    "crisis_notify_webhook_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Crisis Notify Webhook Url"
    },
    "default_playground_bot_uuid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Default Playground Bot Uuid"
    },
    "safety_reactions": {
      "anyOf": [
        {
          "additionalProperties": {
            "$ref": "#/$defs/SafetyReaction"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Safety Reactions"
    },
    "moderator_hours_msk": {
      "anyOf": [
        {
          "$ref": "#/$defs/MentorHoursMsk"
        },
        {
          "type": "null"
        }
      ]
    },
    "handoff_sla_minutes": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 240.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Handoff Sla Minutes"
    }
  },
  "type": "object",
  "$defs": {
    "ContextLane": {
      "properties": {
        "id": {
          "type": "string",
          "enum": [
            "faq",
            "consult",
            "coding",
            "design",
            "architecture"
          ],
          "title": "Id"
        },
        "collection_ids": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 32,
          "title": "Collection Ids"
        },
        "preamble": {
          "type": "string",
          "maxLength": 4000,
          "title": "Preamble",
          "default": ""
        }
      },
      "type": "object",
      "required": [
        "id"
      ],
      "title": "ContextLane",
      "description": "One retrieval band. Empty collection_ids keep the lane default collection."
    },
    "ContextLimits": {
      "properties": {
        "prompt_tail_chars": {
          "type": "integer",
          "maximum": 8000.0,
          "minimum": 200.0,
          "title": "Prompt Tail Chars",
          "default": 2000
        },
        "lane_preamble_chars": {
          "type": "integer",
          "maximum": 4000.0,
          "minimum": 40.0,
          "title": "Lane Preamble Chars",
          "default": 800
        },
        "builder_snippet_chars": {
          "type": "integer",
          "maximum": 12000.0,
          "minimum": 200.0,
          "title": "Builder Snippet Chars",
          "default": 2000
        },
        "description_chars": {
          "type": "integer",
          "maximum": 32000.0,
          "minimum": 200.0,
          "title": "Description Chars",
          "default": 8000
        },
        "resource_text_chars": {
          "type": "integer",
          "maximum": 48000.0,
          "minimum": 500.0,
          "title": "Resource Text Chars",
          "default": 12000
        },
        "evidence_snippet_chars": {
          "type": "integer",
          "maximum": 8000.0,
          "minimum": 200.0,
          "title": "Evidence Snippet Chars",
          "default": 1200
        },
        "lane_collection_cap": {
          "type": "integer",
          "maximum": 32.0,
          "minimum": 1.0,
          "title": "Lane Collection Cap",
          "default": 8
        }
      },
      "type": "object",
      "title": "ContextLimits",
      "description": "Operating caps on ``config.knowledge``. Agents patch this; hot paths do not hardcode sizes."
    },
    "FaqPhenotype": {
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "title": "Name"
        },
        "all_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "All Of"
        },
        "any_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Any Of"
        },
        "none_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "None Of"
        },
        "retrieve": {
          "type": "string",
          "maxLength": 512,
          "title": "Retrieve",
          "default": ""
        },
        "boost_idents": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Boost Idents"
        },
        "penalize_idents": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Penalize Idents"
        },
        "skip_without_lock": {
          "type": "boolean",
          "title": "Skip Without Lock",
          "default": true
        },
        "penalize_bg_vs": {
          "type": "boolean",
          "title": "Penalize Bg Vs",
          "default": false
        },
        "penalize_noise": {
          "type": "boolean",
          "title": "Penalize Noise",
          "default": true
        },
        "noise_unless_asked": {
          "type": "boolean",
          "title": "Noise Unless Asked",
          "default": false
        },
        "covers_all": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Covers All"
        },
        "covers_any": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Covers Any"
        },
        "heading_needles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Heading Needles"
        },
        "penalize_heading_needles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Penalize Heading Needles"
        },
        "drop_sentence_stems": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Drop Sentence Stems"
        },
        "retrieve_expand": {
          "type": "string",
          "maxLength": 16,
          "title": "Retrieve Expand",
          "default": ""
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "FaqPhenotype",
      "description": "One FAQ routing row: match needles, retrieve lexicon, card identity, skip-Plan covers."
    },
    "FixtureShapeHint": {
      "properties": {
        "phenotype": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "title": "Phenotype"
        },
        "query_any_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Query Any Of"
        },
        "query_all_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Query All Of"
        }
      },
      "type": "object",
      "required": [
        "phenotype"
      ],
      "title": "FixtureShapeHint",
      "description": "Extra fixture phenotype when query needles match (compound / follow-up asks)."
    },
    "GeneLexiconEntry": {
      "properties": {
        "stems": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Stems"
        },
        "idents": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Idents"
        },
        "aliases": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Aliases"
        }
      },
      "type": "object",
      "title": "GeneLexiconEntry",
      "description": "Named program term → stems, FAQ idents, retrieve aliases."
    },
    "KnowledgeGenePack": {
      "properties": {
        "version": {
          "type": "integer",
          "maximum": 16.0,
          "minimum": 1.0,
          "title": "Version",
          "default": 1
        },
        "program_stems": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Program Stems",
          "description": "Term-lock / gene-lock vocabulary (replaces hardcoded PROGRAM_FOCUS_STEMS)."
        },
        "aliases": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "title": "Aliases",
          "description": "Query substring → rewrite (merged with KnowledgeConfig.term_aliases)."
        },
        "lexicon": {
          "additionalProperties": {
            "$ref": "#/$defs/GeneLexiconEntry"
          },
          "type": "object",
          "title": "Lexicon"
        },
        "phenotypes": {
          "items": {
            "$ref": "#/$defs/FaqPhenotype"
          },
          "type": "array",
          "title": "Phenotypes"
        },
        "pinned_shapes": {
          "items": {
            "$ref": "#/$defs/PinnedShapeBinding"
          },
          "type": "array",
          "title": "Pinned Shapes",
          "description": "Phenotype → glossary stem bindings for fixture shape replies."
        },
        "fixture_shape_hints": {
          "items": {
            "$ref": "#/$defs/FixtureShapeHint"
          },
          "type": "array",
          "title": "Fixture Shape Hints",
          "description": "Query-needle hints → extra fixture phenotypes (tenant MCP tuning)."
        },
        "rerank_off_query_guards": {
          "items": {
            "$ref": "#/$defs/RerankOffQueryGuard"
          },
          "type": "array",
          "title": "Rerank Off Query Guards",
          "description": "Rerank/extractive penalties when card matches but query lacks stems."
        },
        "sanitize_drop": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Sanitize Drop",
          "description": "Tenant operator-voice phrases to drop from channel replies."
        },
        "skip_asked_stems": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Skip Asked Stems",
          "description": "If the query names these stems, skip-Plan extractive must contain one. Tenant SoT — not hardcoded in Core retrieve."
        },
        "situational_needles": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Situational Needles",
          "description": "Applied-ask needles (union with fixture query_intent_needles_v1). Tenant SoT — not a Core regex table."
        }
      },
      "type": "object",
      "title": "KnowledgeGenePack",
      "description": "Project genetic dictionary + FAQ phenotypes (8DNA blob)."
    },
    "KnowledgeSupportContacts": {
      "properties": {
        "conversation_url": {
          "type": "string",
          "maxLength": 2048,
          "title": "Conversation Url",
          "default": ""
        },
        "label_ru": {
          "type": "string",
          "maxLength": 80,
          "title": "Label Ru",
          "default": "Написать в поддержку"
        },
        "label_en": {
          "type": "string",
          "maxLength": 80,
          "title": "Label En",
          "default": "Contact support"
        },
        "telegram_url": {
          "type": "string",
          "maxLength": 2048,
          "title": "Telegram Url",
          "default": ""
        },
        "email": {
          "type": "string",
          "maxLength": 256,
          "title": "Email",
          "default": ""
        }
      },
      "type": "object",
      "title": "KnowledgeSupportContacts",
      "description": "Operator-editable help targets. Primary URL is used in channel abstain."
    },
    "MentorHoursMsk": {
      "properties": {
        "start": {
          "type": "integer",
          "maximum": 23.0,
          "minimum": 0.0,
          "title": "Start",
          "default": 10
        },
        "end": {
          "type": "integer",
          "maximum": 23.0,
          "minimum": 0.0,
          "title": "End",
          "default": 18
        },
        "weekdays_only": {
          "type": "boolean",
          "title": "Weekdays Only",
          "default": true
        }
      },
      "type": "object",
      "title": "MentorHoursMsk"
    },
    "PinnedShapeBinding": {
      "properties": {
        "phenotype": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "title": "Phenotype"
        },
        "glossary_stem": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "title": "Glossary Stem"
        },
        "extract_mode": {
          "type": "string",
          "title": "Extract Mode",
          "description": "section | quote | full | lesson_link — fixture extract strategy.",
          "default": "section"
        },
        "section_heading": {
          "type": "string",
          "maxLength": 128,
          "title": "Section Heading",
          "default": ""
        },
        "section_headings": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Section Headings",
          "description": "Ordered ## heading prefixes; overrides single section_heading when set."
        },
        "section_body_needle": {
          "type": "string",
          "maxLength": 128,
          "title": "Section Body Needle",
          "description": "When set, extracted section body must contain this substring.",
          "default": ""
        },
        "append_lesson_link": {
          "type": "boolean",
          "title": "Append Lesson Link",
          "description": "After section/quote/full body, append inline lesson URL from the same card.",
          "default": false
        }
      },
      "type": "object",
      "required": [
        "phenotype",
        "glossary_stem"
      ],
      "title": "PinnedShapeBinding",
      "description": "Phenotype → glossary fixture stem for extractive shape replies."
    },
    "RerankOffQueryGuard": {
      "properties": {
        "snippet_ident_contains": {
          "type": "string",
          "maxLength": 128,
          "title": "Snippet Ident Contains",
          "default": ""
        },
        "heading_any_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Heading Any Of"
        },
        "require_query_any_of": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Require Query Any Of"
        }
      },
      "type": "object",
      "title": "RerankOffQueryGuard",
      "description": "Penalize FAQ snippet/section when match fires but query lacks required stems."
    },
    "SafetyReaction": {
      "properties": {
        "playbook_id": {
          "type": "string",
          "maxLength": 64,
          "title": "Playbook Id",
          "default": ""
        },
        "notify_moderators": {
          "type": "boolean",
          "title": "Notify Moderators",
          "default": true
        },
        "auto_handoff": {
          "type": "boolean",
          "title": "Auto Handoff",
          "default": false
        }
      },
      "type": "object",
      "title": "SafetyReaction",
      "description": "Per-category operator policy (regex rules stay in the safety organelle)."
    },
    "SkillSubscription": {
      "properties": {
        "publisher_project_id": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Publisher Project Id",
          "default": 0
        },
        "skill_id": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "title": "Skill Id"
        },
        "source_doc_id": {
          "type": "string",
          "maxLength": 256,
          "title": "Source Doc Id",
          "default": ""
        }
      },
      "type": "object",
      "required": [
        "skill_id"
      ],
      "title": "SkillSubscription",
      "description": "Consent to read one public skill. publisher_project_id 0 is the ecosystem fixture."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/agentstack-tech-knowledge-config-patch"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.