{
  "source": "https://github.com/indykite/skills",
  "commit": "d6c8ea758e70c9a5e491cc9262e3433145f9ee9f",
  "syncedAt": "2026-08-19",
  "install": {
    "generic": "npx skills add indykite/skills",
    "claudeCode": "/plugin marketplace add indykite/skills && /plugin install indykite-skills",
    "geminiCli": "gemini extensions install https://github.com/indykite/skills",
    "singleSkill": "npx skills add indykite/skills --skill <name> --agent <agent>"
  },
  "usage": "Agents without skill support: fetch links.markdown for a skill and follow it in-context; relative links resolve under links.base.",
  "relatedGuide": "/guides/guide-skills.md",
  "skills": [
    {
      "name": "indykite-agent-gateway",
      "family": "Agent Gateway",
      "description": "Deploy and configure IndyKite Agent Gateway (IAG) in front of agent-to-agent (A2A) workflows or MCP servers. Use when wiring up A2A or MCP policy enforcement, modeling workflows in the IKG, or debugging IAG 401/403 responses.",
      "compatibility": "Requires Docker and Docker Compose for the iag-demo reference deployment, or a Kubernetes cluster for production. Runtime network access to the configured IndyKite Hub, OAuth IdP, AuthZEN, and ContX IQ endpoints is required.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/config-template.yaml",
        "references/architecture.md",
        "references/configuration.md",
        "references/troubleshooting.md"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-agent-gateway/SKILL.md",
        "base": "/agent-skills/indykite-agent-gateway/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-agent-gateway"
      }
    },
    {
      "name": "indykite-authzen-evaluation",
      "family": "AuthZEN / KBAC",
      "description": "Make a single KBAC authorization decision via the IndyKite AuthZEN REST API (`POST /access/v1/evaluation`) - returns a boolean `decision` for one (subject, action, resource) triple, optionally with per-request `context.input_params`. Use for a single yes/no question - \"can ada PROVISION gpu-node-7?\", \"is this user allowed to delete this document?\", \"gate this operation on a live check\", or debugging why one decision is false. Not for many checks at once (use indykite-authzen-evaluations), not for enumerating which actions/resources/subjects are allowed (use indykite-authzen-search-action / -search-resource / -search-subject), and not for authoring the policy behind the decision (use indykite-authzen-kbac-policies). For the same decision over MCP/JSON-RPC see indykite-mcp-server (`authzen_evaluate`).",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/evaluation-provision-server.json",
        "references/evaluation-reference.md",
        "references/troubleshooting.md",
        "scripts/evaluate.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-authzen-evaluation/SKILL.md",
        "base": "/agent-skills/indykite-authzen-evaluation/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-authzen-evaluation"
      }
    },
    {
      "name": "indykite-authzen-evaluations",
      "family": "AuthZEN / KBAC",
      "description": "Run many KBAC authorization decisions in one call via the IndyKite AuthZEN REST API (`POST /access/v1/evaluations`), with top-level subject/action/resource/context as defaults overridden per entry; returns one `decision` per entry, in order. Use when checking a known, fixed set of checks at once - one subject against many resources, one action across many subjects, or any mix of triples - e.g. \"of these servers, which can grace provision?\", \"for each of these users, can they deploy gpu-node-7?\". For a single check use indykite-authzen-evaluation; to enumerate ALL allowed actions/resources/subjects (open-ended, not a fixed list) use indykite-authzen-search-action / -search-resource / -search-subject; to author the policy use indykite-authzen-kbac-policies.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/evaluations-provision-servers.json",
        "references/evaluations-reference.md",
        "scripts/evaluate-batch.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-authzen-evaluations/SKILL.md",
        "base": "/agent-skills/indykite-authzen-evaluations/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-authzen-evaluations"
      }
    },
    {
      "name": "indykite-authzen-kbac-policies",
      "family": "AuthZEN / KBAC",
      "description": "Author and manage an IndyKite KBAC (Knowledge-Based Access Control) authorization policy - a single subject type, an actions list, a single resource type, and a Cypher condition over the IKG - through the Config API (`/configs/v1/authorization-policies` - create / read / list `?type=kbac` / update / delete, ETag-guarded). Covers `2.0-kbac` and `3.0-kbac` (raw Cypher, optional location routing for composite / data-residency IKGs). Use to write, publish, inspect, update, or delete a KBAC policy - e.g. \"write a policy letting a Person PROVISION a Server within budget\", \"author a location-routed policy for our composite IKG\". This authors the rule; it does NOT make decisions - for \"can X do Y on Z?\" use indykite-authzen-evaluation (single) or indykite-authzen-evaluations (batch), and to enumerate allowed actions/resources/subjects use indykite-authzen-search-action / -search-resource / -search-subject. This is KBAC, not ContX IQ - for CIQ read/write data policies use the indykite-ciq-* skills.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/policy-deploy-prod.json",
        "assets/policy-location-routed.json",
        "assets/policy-provision-server.json",
        "references/policy-reference.md",
        "scripts/create-policy.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-authzen-kbac-policies/SKILL.md",
        "base": "/agent-skills/indykite-authzen-kbac-policies/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-authzen-kbac-policies"
      }
    },
    {
      "name": "indykite-authzen-search-action",
      "family": "AuthZEN / KBAC",
      "description": "List the actions a subject is allowed to perform on a resource via the IndyKite AuthZEN REST API (`POST /access/v1/search/action`) - returns the granted action names for one pinned (subject, resource) pair. Use to enumerate permitted operations - \"what can linus do with gpu-node-7?\", \"which actions does this user have on this item?\" (e.g. to render only allowed UI controls). Not for a specific-action yes/no (\"can linus DEPLOY gpu-node-7?\" -> indykite-authzen-evaluation); to enumerate the other axes use indykite-authzen-search-resource (which resources) or indykite-authzen-search-subject (which subjects); to author the policy use indykite-authzen-kbac-policies.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/search-action-request.json",
        "references/search-action-reference.md",
        "scripts/search-action.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-authzen-search-action/SKILL.md",
        "base": "/agent-skills/indykite-authzen-search-action/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-authzen-search-action"
      }
    },
    {
      "name": "indykite-authzen-search-resource",
      "family": "AuthZEN / KBAC",
      "description": "List the resources a subject is allowed to perform a given action on via the IndyKite AuthZEN REST API (`POST /access/v1/search/resource`) - given a subject and an action, returns the matching resource instances of a type. Use to enumerate permitted resources - \"which servers can linus provision?\", \"list the documents this user can read\" (access-filtered feeds). Returns `{type,id}` references, not a yes/no decision and not the resource data itself (for graph data use indykite-ciq-read). For a single-resource yes/no use indykite-authzen-evaluation; to enumerate the other axes use indykite-authzen-search-action (which actions) or indykite-authzen-search-subject (which subjects); to author the policy use indykite-authzen-kbac-policies.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/search-resource-request.json",
        "references/search-resource-reference.md",
        "scripts/search-resource.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-authzen-search-resource/SKILL.md",
        "base": "/agent-skills/indykite-authzen-search-resource/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-authzen-search-resource"
      }
    },
    {
      "name": "indykite-authzen-search-subject",
      "family": "AuthZEN / KBAC",
      "description": "List the subjects allowed to perform a given action on a resource via the IndyKite AuthZEN REST API (`POST /access/v1/search/subject`) - given a resource and an action, returns the matching subject instances of a type. Use to enumerate who has access - \"who can provision gpu-node-7?\", \"list the people allowed to approve this document\" (audit / reviewer views). Not for a specific-subject yes/no (\"can grace provision gpu-node-7?\" -> indykite-authzen-evaluation); to enumerate the other axes use indykite-authzen-search-action (which actions) or indykite-authzen-search-resource (which resources); to author the policy use indykite-authzen-kbac-policies.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/search-subject-request.json",
        "references/search-subject-reference.md",
        "scripts/search-subject.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-authzen-search-subject/SKILL.md",
        "base": "/agent-skills/indykite-authzen-search-subject/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-authzen-search-subject"
      }
    },
    {
      "name": "indykite-capture-delete-node-properties",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch node-property delete (`POST /capture/v1/nodes/properties/delete`) - a `nodes` array (1-250 per request) where each entry names a node (`external_id` + `type`) and the `property_types` (1-250 names) to strip from it; the node itself survives. On composite IKGs an optional per-node `location` routes the delete. Use when the user wants to remove specific properties from entities in the IndyKite Knowledge Graph (IKG) - \"drop the email property from millicent\", \"strip these deprecated fields from all listed devices\", \"prepare a property-delete payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. Not for deleting whole nodes (indykite-capture-delete-nodes), property metadata only (indykite-capture-delete-node-property-metadata), relationship properties (indykite-capture-delete-relationship-properties), or CIQ policy-mediated deletes (indykite-ciq-delete).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/delete-node-properties.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-delete-node-properties/SKILL.md",
        "base": "/agent-skills/indykite-capture-delete-node-properties/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-delete-node-properties"
      }
    },
    {
      "name": "indykite-capture-delete-node-property-metadata",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch property-metadata delete (`POST /capture/v1/nodes/properties/metadata/delete`) - a `nodes` array (1-250 per request) where each entry names a node (`external_id` + `type`), one `property_type`, and the `metadata_fields` (1-250, e.g. source, assurance_level, verified_time, custom_metadata) to remove from that property; the property and its value survive. Use when the user wants to strip provenance metadata in the IndyKite Knowledge Graph (IKG) - \"remove the assurance level from millicent's name property\", \"clear the verified_time metadata on these records\", \"prepare a metadata-delete payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. Not for deleting the property itself (indykite-capture-delete-node-properties), whole nodes (indykite-capture-delete-nodes), or attaching metadata (indykite-capture-upsert-nodes re-upserts it).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/delete-property-metadata.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-delete-node-property-metadata/SKILL.md",
        "base": "/agent-skills/indykite-capture-delete-node-property-metadata/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-delete-node-property-metadata"
      }
    },
    {
      "name": "indykite-capture-delete-nodes",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch node delete (`POST /capture/v1/nodes/delete`) - a `nodes` array (1-250 per request) of `{external_id, type}` references, each removing one whole node from the IndyKite Knowledge Graph (IKG); on composite IKGs an optional per-node `location` routes the delete to the right constituent. Use when the user wants to remove entities - \"delete these test people from the graph\", \"remove the car kitt\", \"prepare a node-delete payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. Not for removing individual properties (indykite-capture-delete-node-properties), property metadata (indykite-capture-delete-node-property-metadata), relationships (indykite-capture-delete-relationships), or CIQ policy-mediated deletes (indykite-ciq-delete).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/delete-nodes.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-delete-nodes/SKILL.md",
        "base": "/agent-skills/indykite-capture-delete-nodes/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-delete-nodes"
      }
    },
    {
      "name": "indykite-capture-delete-relationship-properties",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch relationship-property delete (`POST /capture/v1/relationships/properties/delete`) - a `relationships` array (1-250 per request), each entry identifying a relationship by `source` node, `target` node (each `external_id` + `type`), and relationship `type`, plus the `property_types` (1-250 names) to strip from it; the relationship itself survives. On composite IKGs setting the top-level `use_global_db` field to `true` targets the global constituent. Use when the user wants to remove properties from edges in the IndyKite Knowledge Graph (IKG) - \"drop the status property from millicent's OWNS edge\", \"prepare a relationship-property-delete payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. Not for deleting the relationship (indykite-capture-delete-relationships), node properties (indykite-capture-delete-node-properties), or CIQ policy-mediated deletes (indykite-ciq-delete).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/delete-relationship-properties.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-delete-relationship-properties/SKILL.md",
        "base": "/agent-skills/indykite-capture-delete-relationship-properties/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-delete-relationship-properties"
      }
    },
    {
      "name": "indykite-capture-delete-relationships",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch relationship delete (`POST /capture/v1/relationships/delete`) - a `relationships` array (1-250 per request), each entry identifying a relationship by `source` node, `target` node (each `external_id` + `type`), and relationship `type`; on composite IKGs setting the top-level `use_global_db` field to `true` targets relationships stored in the global constituent. Use when the user wants to disconnect entities in the IndyKite Knowledge Graph (IKG) - \"remove the CAN_DRIVE link between ryan and kitt\", \"unlink these contracts from their vehicles\", \"prepare a relationship-delete payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. The endpoint nodes survive. Not for deleting nodes (indykite-capture-delete-nodes), removing only relationship properties (indykite-capture-delete-relationship-properties), creating relationships (indykite-capture-upsert-relationships), or CIQ policy-mediated deletes (indykite-ciq-delete).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/delete-relationships.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-delete-relationships/SKILL.md",
        "base": "/agent-skills/indykite-capture-delete-relationships/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-delete-relationships"
      }
    },
    {
      "name": "indykite-capture-upsert-nodes",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch node upsert (`POST /capture/v1/nodes`) - a `nodes` array (1-250 per request) of entities, each with `external_id`, `type`, optional `is_identity` / `labels` / `location`, and typed `properties` (values, external-data references, and per-property metadata such as source, assurance level, and verified time). Use when the user wants to ingest or update entities in the IndyKite Knowledge Graph (IKG) - \"add these people and cars to the graph\", \"upsert this customer with verified email metadata\", \"prepare a nodes payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. Not for connecting nodes (indykite-capture-upsert-relationships), removing them (indykite-capture-delete-nodes), or CIQ policy-mediated writes (indykite-ciq-create-node).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/nodes-vehicle-rental.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-upsert-nodes/SKILL.md",
        "base": "/agent-skills/indykite-capture-upsert-nodes/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-upsert-nodes"
      }
    },
    {
      "name": "indykite-capture-upsert-relationships",
      "family": "Capture API",
      "description": "Build the request-body JSON for the IndyKite Capture API batch relationship upsert (`POST /capture/v1/relationships`) - a `relationships` array (1-250 per request), each entry connecting a `source` node to a `target` node (by `external_id` + `type`) with a relationship `type` and optional typed `properties`; on composite IKGs setting `use_global_db` to `true` routes cross-location relationships to the global constituent. Use when the user wants to connect existing entities in the IndyKite Knowledge Graph (IKG) - \"link millicent OWNS kitt\", \"wire these contracts to their vehicles\", \"prepare a relationships payload for the Capture API\". Produces a ready-to-send JSON file; sending it is optional. Not for creating the nodes themselves (indykite-capture-upsert-nodes), removing relationships (indykite-capture-delete-relationships), or CIQ policy-mediated writes (indykite-ciq-create-relationship).",
      "compatibility": "Requires curl, bash 4+, and jq for the bundled helper script; authoring the JSON payload itself needs no tools. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/relationships-vehicle-rental.json",
        "references/capture-reference.md",
        "scripts/capture.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-capture-upsert-relationships/SKILL.md",
        "base": "/agent-skills/indykite-capture-upsert-relationships/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-capture-upsert-relationships"
      }
    },
    {
      "name": "indykite-ciq-add-property",
      "family": "ContX IQ",
      "description": "Author an IndyKite ContX IQ (CIQ) policy plus its Knowledge Query that sets one or more properties on an existing node in the IndyKite Graph (IKG), then run it via `POST /contx-iq/v1/execute`. Use when adding a brand-new property, overwriting an existing one, or attaching property metadata - no node creation, no relationship writes, no deletes.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-update-own-profile.json",
        "assets/policy-update-own-profile.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "references/troubleshooting.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-add-property/SKILL.md",
        "base": "/agent-skills/indykite-ciq-add-property/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-add-property"
      }
    },
    {
      "name": "indykite-ciq-add-relationship-property",
      "family": "ContX IQ",
      "description": "Author an IndyKite ContX IQ (CIQ) policy plus its Knowledge Query that sets one or more properties on an existing relationship in the IndyKite Graph (IKG), then run it via `POST /contx-iq/v1/execute`. Use when adding a brand-new property, overwriting an existing one, or attaching property metadata on a relationship that's already in the IKG - no relationship creation, no node writes, no deletes.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-annotate-played-at.json",
        "assets/policy-annotate-played-at.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "references/troubleshooting.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-add-relationship-property/SKILL.md",
        "base": "/agent-skills/indykite-ciq-add-relationship-property/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-add-relationship-property"
      }
    },
    {
      "name": "indykite-ciq-create-node",
      "family": "ContX IQ",
      "description": "Author an IndyKite ContX IQ (CIQ) policy plus its Knowledge Query that creates a brand-new node in the IndyKite Graph (IKG), then run it via `POST /contx-iq/v1/execute`. Use when ingesting a new entity through CIQ - no relationship creation, no updates to existing nodes, no deletes.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-create-track.json",
        "assets/policy-create-track.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "references/troubleshooting.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-create-node/SKILL.md",
        "base": "/agent-skills/indykite-ciq-create-node/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-create-node"
      }
    },
    {
      "name": "indykite-ciq-create-node-with-link",
      "family": "ContX IQ",
      "description": "Author an IndyKite ContX IQ (CIQ) policy plus its Knowledge Query that creates a brand-new node AND links it to one or more existing nodes via new relationships in a single `POST /contx-iq/v1/execute` call. Use when ingesting a new entity that must be wired into the IKG atomically - combines node creation and relationship creation in one operation.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-create-contract.json",
        "assets/policy-create-contract.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "references/troubleshooting.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-create-node-with-link/SKILL.md",
        "base": "/agent-skills/indykite-ciq-create-node-with-link/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-create-node-with-link"
      }
    },
    {
      "name": "indykite-ciq-create-relationship",
      "family": "ContX IQ",
      "description": "Author an IndyKite ContX IQ (CIQ) policy plus its Knowledge Query that creates a brand-new relationship between two existing nodes in the IndyKite Graph (IKG), then run it via `POST /contx-iq/v1/execute`. Use when wiring two existing entities together through CIQ - no new nodes, no relationship updates, no deletes.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-create-played-at.json",
        "assets/policy-create-played-at.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "references/troubleshooting.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-create-relationship/SKILL.md",
        "base": "/agent-skills/indykite-ciq-create-relationship/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-create-relationship"
      }
    },
    {
      "name": "indykite-ciq-delete",
      "family": "ContX IQ",
      "description": "Author an IndyKite ContX IQ (CIQ) policy plus its Knowledge Query that deletes a node, a relationship, or one or more properties from the IndyKite Graph (IKG), then run it via `POST /contx-iq/v1/execute`. Use when removing data through CIQ - three modes (whole node, whole relationship, individual property) sharing the same policy/KQ shape.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-delete-music-mood.json",
        "assets/policy-delete-music-mood.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "references/troubleshooting.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-delete/SKILL.md",
        "base": "/agent-skills/indykite-ciq-delete/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-delete"
      }
    },
    {
      "name": "indykite-ciq-read",
      "family": "ContX IQ",
      "description": "Author a read-only IndyKite ContX IQ (CIQ) policy plus its Knowledge Query, then run it via `POST /contx-iq/v1/execute`. Use when exposing IKG nodes, relationships, or aggregate values as a parameterized read query - no upserts, no deletes.",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "assets/knowledge-query-read-cars.json",
        "assets/policy-read-cars.json",
        "references/execution-reference.md",
        "references/knowledge-query-reference.md",
        "references/policy-reference.md",
        "scripts/execute.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-ciq-read/SKILL.md",
        "base": "/agent-skills/indykite-ciq-read/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-ciq-read"
      }
    },
    {
      "name": "indykite-data-schema",
      "family": "Other",
      "description": "Read the observed data schema of the IndyKite Knowledge Graph (IKG) via the Data Schema REST API (`GET /data-schema/v1/`) - a JGFv2 document listing every node type with its properties, value-type tallies, and labels, plus every (source, relation, target) relationship combination, with occurrence counts but never the data itself. Use before authoring Cypher for CIQ Knowledge Queries or KBAC policies (exact type and property spellings), to verify a Capture ingest landed, to detect schema drift, or to give an agent the graph's vocabulary - \"what does our IKG look like?\". Not for reading graph data (indykite-ciq-read), writing it (indykite-capture-* / indykite-ciq-*), or authoring policies (indykite-authzen-kbac-policies).",
      "compatibility": "Requires curl, bash 4+, and jq. Network access to the regional IndyKite REST API (eu.api.indykite.com or us.api.indykite.com) is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "references/data-schema-reference.md",
        "scripts/read-schema.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-data-schema/SKILL.md",
        "base": "/agent-skills/indykite-data-schema/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-data-schema"
      }
    },
    {
      "name": "indykite-mcp-server",
      "family": "MCP Server",
      "description": "Make live IndyKite authorization decisions (AuthZEN/KBAC) and run ContX IQ graph queries from an AI agent over the Model Context Protocol - one Bearer-token JSON-RPC session, no bespoke REST wiring. Use when initializing an MCP session, calling its tools (authzen_evaluate, authzen_evaluations, authzen_search_*, ciq_execute), configuring an MCP server, or debugging its single Bearer-token auth.",
      "compatibility": "Requires curl and bash 4+. Network access to eu.mcp.indykite.com or us.mcp.indykite.com, plus the OAuth IdP that issues Bearer tokens, is required at runtime.",
      "license": "Apache-2.0",
      "files": [
        "SKILL.md",
        "references/architecture.md",
        "references/configuration.md",
        "references/tools.md",
        "references/troubleshooting.md",
        "scripts/init-session.sh"
      ],
      "links": {
        "markdown": "/agent-skills/indykite-mcp-server/SKILL.md",
        "base": "/agent-skills/indykite-mcp-server/",
        "github": "https://github.com/indykite/skills/tree/d6c8ea758e70c9a5e491cc9262e3433145f9ee9f/indykite-mcp-server"
      }
    }
  ]
}