{ pkgs, config, ... }: {
  home.file = {
    ".pi/agent/extensions/pi-mcp-adapter" = {
      source = pkgs.buildNpmPackage {
        name = "pi-mcp-adapter";
        src = pkgs.npinsed.ai.pi.mcp-adapter;
        patches = [
          ./status-color.patch
          ./package-lock-integrity.patch
        ];
        # npm lockfile v3 delegates to shrinkwrap → duplicate cache keys; writable cache is required.
        makeCacheWritable = true;
        npmDepsHash = "sha256-xIW2WTuVj6SeFGrJPEduzzVCT548i7tzlP5sq3ky/wI=";
        dontNpmBuild = true;
        npmRebuildFlags = [ "--ignore-scripts" ];
      } + /lib/node_modules/pi-mcp-adapter;
    };
  };

  yq-merge.".pi/agent/mcp.json" = {
    generator = builtins.toJSON;
    expr = {
      mcpServers = {
        ddgs = { inherit (config.ai.mcp.ddgs) command args; };
      };
    };
  };
}