Public log

@aikidosec/mcp

Aikido MCP server

npm · fingerprint 093a44af687419bc171acabd · repository · RSS

10tools
4recorded versions
45dtracked
changed 1d ago

What changed

Changed 2026-10-17 10:58 UTC

9 schema or annotation changes with the description left byte-identical.

--- pinned/aikido_full_scan
+++ observed/aikido_full_scan
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "files_to_scan": {
          "items": {
-           "additionalProperties": false,
            "properties": {
              "content": {
                "type": "string"
--- pinned/aikido_ignore_issue
+++ observed/aikido_ignore_issue
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "issue_id": {
          "description": "The ID of the issue to ignore.",
--- pinned/aikido_issues_list
+++ observed/aikido_issues_list
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "cloud_name": {
          "type": "string"
--- pinned/aikido_login
+++ observed/aikido_login
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "force_reauth": {
          "description": "When true, start a new sign-in flow even if the user is already authenticated. Use ONLY when the user explicitly asks to re-authenticate, switch accounts, or sign in again. Do not set this speculatively — it will trigger a browser-based sign-in the user may not want.",
--- pinned/aikido_oss_dependency_scan
+++ observed/aikido_oss_dependency_scan
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "paths": {
          "items": {
--- pinned/aikido_scan_paths
+++ observed/aikido_scan_paths
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "paths": {
          "description": "Files to scan (not directories), absolute or relative to 'root'. Use absolute paths when 'root' is omitted. Paths that are missing or outside 'root' are skipped and listed in 'skipped_paths' in the response.",
--- pinned/aikido_snooze_issue
+++ observed/aikido_snooze_issue
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "duration": {
          "description": "How long the issue should stay snoozed.",
--- pinned/aikido_unignore_issue
+++ observed/aikido_unignore_issue
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "issue_id": {
          "description": "The ID of the issue to unignore.",
--- pinned/aikido_unsnooze_issue
+++ observed/aikido_unsnooze_issue
  {
    "annotations": {
      "destructiveHint": false,
-     "additionalProperties": false,
      "properties": {
        "issue_id": {
          "description": "The ID of the issue to unsnooze.",

Changed 2026-10-06 13:45 UTC

1 description rewritten.

--- pinned/aikido_scan_paths
+++ observed/aikido_scan_paths
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "\nRuns an Aikido SAST, Secrets and IaC scan locally on files that are saved on disk and returns the findings in JSON format.\n\nThis is the preferred Aikido scan tool. Use it whenever the code to scan exists as files on disk: files you just created or edited, files the user points at, or files reported by git status or git diff.\nPass the paths only - the MCP server reads the files itself. Do not read the files first and do not pass their content, that only wastes context.\n\nProvide the paths of the files to scan in \"paths\", absolute or relative to \"root\". Every entry must be a file: directories are rejected, so list the files you want scanned.\nSet \"root\" to the absolute path of the workspace or repository root, so findings are reported with paths relative to it. When \"root\" is omitted it is derived from the given paths.\n\nIf a repository name is provided, it will be used to identify the repository in the Aikido platform.\nOnly pass a repository name if the files are actually coming from a repository - do not provide a repository name for standalone files or files from a local workspace that is not part of a repository.\n\nUse this tool when you need to:\n- scan files on disk for SAST, Secrets and IaC vulnerabilities\n- check that code you just wrote or edited is free of security issues\n- re-scan after applying fixes to verify the findings are resolved\n\nOnly reach for aikido_full_scan instead when the code is not on disk yet.\n",
+   "description": "\nRuns an Aikido SAST, Secrets and IaC scan locally on files that are saved on disk and returns the findings in JSON format.\n\nThis is the preferred Aikido scan tool. Use it whenever the code to scan exists as files on disk: files you just created or edited, files the user points at, or files reported by git status or git diff.\nPass the paths only - the MCP server reads the files itself. Do not read the files first and do not pass their content, that only wastes context.\n\nProvide the paths of the files to scan in \"paths\", absolute or relative to \"root\". Every entry must be a file: directories are rejected, so list the files you want scanned. Every path must be inside \"root\".\nPaths that do not exist or are outside \"root\" are skipped instead of failing the scan, and are listed in \"skipped_paths\" in the response. Check it to confirm everything you wanted was scanned.\nSet \"root\" to the absolute path of the workspace or repository root, so findings are reported with paths relative to it. Omit \"root\" only when scanning files that don't share a workspace; it is then derived from the common parent directory of the paths. Without \"root\", relative paths are resolved against the MCP server's working directory, not your workspace, so use absolute paths.\n\nIf a repository name is provided, it will be used to identify the repository in the Aikido platform.\nOnly pass a repository name if the files are actually coming from a repository - do not provide a repository name for standalone files or files from a local workspace that is not part of a repository.\n\nUse this tool when you need to:\n- scan files on disk for SAST, Secrets and IaC vulnerabilities\n- check that code you just wrote or edited is free of security issues\n- re-scan after applying fixes to verify the findings are resolved\n\nOnly reach for aikido_full_scan instead when the code is not on disk yet.\n",
    "execution": {
      "taskSupport": "forbidden"
    },
+         "description": "Files to scan (not directories), absolute or relative to 'root'. Use absolute paths when 'root' is omitted. Paths that are missing or outside 'root' are skipped and listed in 'skipped_paths' in the response.",
          "items": {
            "type": "string"
          },
+         "description": "Name of the repository the files belong to. Omit for standalone files or a workspace that is not a repository.",
          "type": "string"
        },
        "root": {
+         "description": "Absolute path of the workspace or repository root. Findings are reported relative to it, and every path in 'paths' must be inside it.",
          "type": "string"
        }
      },

Changed 2026-10-05 14:50 UTC

2 descriptions rewritten, 2 schema or annotation changes with the description left byte-identical, 6 tools added.

--- pinned/aikido_full_scan
+++ observed/aikido_full_scan
  {
-   "description": "\nRuns an Aikido SAST and Secrets scan locally on provided code files returns the findings in JSON format.\nFiles should be provided as paths relative to the root of the workspace or repository (Unix-style paths).\nIf this is not possible, just the filename should be given.\n\nThere is a limit of 50 files that can be scanned in a single request. If you need to scan more files, you can do multiple requests.\n\nIf a repository name is provided, it will be used to identify the repository in the Aikido platform. \nOnly pass a repository name if the files are actually coming from a repository - do not provide a repository name for standalone files or files from a local workspace that is not part of a repository.\n\nUse this tool when you need to:\n- scan code files for SAST vulnerabilities\n- scan code files for Secrets vulnerabilities\n",
+   "annotations": {
+     "destructiveHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
+   "description": "\nRuns an Aikido SAST, Secrets and IaC scan locally on code passed in as file content and returns the findings in JSON format.\n\nUse this tool only when the code to scan is not on disk: code you have generated but not written to a file yet, a snippet the user pasted into the conversation, or a change you are proposing but have not applied.\nIf the files exist on disk, use aikido_scan_paths instead. It takes file paths, reads the content itself and keeps that content out of the conversation.\n\nFiles should be provided as paths relative to the root of the workspace or repository (Unix-style paths).\nIf this is not possible, just the filename should be given.\n\nThere is a limit of 50 files that can be scanned in a single request. If you need to scan more files, you can do multiple requests.\n\nIf a repository name is provided, it will be used to identify the repository in the Aikido platform. \nOnly pass a repository name if the files are actually coming from a repository - do not provide a repository name for standalone files or files from a local workspace that is not part of a repository.\n\nUse this tool when you need to:\n- scan generated, pasted or proposed code that has not been saved to disk\n",
    "execution": {
      "taskSupport": "forbidden"
    },
--- pinned/aikido_ignore_issue
+++ observed/aikido_ignore_issue
  {
+   "annotations": {
+     "destructiveHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
    "description": "\nTool to ignore a security issue from Aikido feed.\n\nWHEN TO CALL THIS TOOL\n- The user wants to ignore a security issue from the Aikido feed.\n- The user provides the issue ID and the reason for ignoring the issue.\n",
    "execution": {
      "taskSupport": "forbidden"
--- pinned/aikido_issues_list
+++ observed/aikido_issues_list
  {
-   "description": "\nTool to fetch security issues from Aikido feed.\n\nWHEN TO CALL THIS TOOL\n- The user asks to list, show, count, or summarize Aikido security issues from the aikido feed.\n- The user can scope the issues to a specific cloud name, repo name, vm name, domain name, container name, team name or workspace name.\n- The user can scope the issues of a repository to a specific branch name\n- The user can scope the issues to repositories or images carrying one or more labels.\n- The user can scope the issues to be out of SLA or SLA is due soon. The value of those parameters is a boolean.\n- The user can scope the issues to a specific issue severity.\n- You are about to triage or fix security issues and need the current issue set.\n\nOUTPUT FORMATTING\nUse this exact format for every issue (increment #).\nIssue #1: <issue_title>\n - ID: <issue_id>\n - Issue type: <issue_type>\n - Severity: <issue_severity> (<issue_severity_label>)\n - Remediation: <issue_remediation>\n\nAdd extra response fields as additional bullets when relevant, e.g.:\n - File: <issue_file> (line <issue_start_line>)\n - Location: <location.type> <location.name> (<location.branch_name>)\n - Issue link: <issue_link>\n - SLA due date: <issue_remediate_by_date>\n",
+   "annotations": {
+     "destructiveHint": false,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
+   "description": "\nTool to fetch security issues from Aikido feed.\n\nWHEN TO CALL THIS TOOL\n- The user asks to list, show, count, or summarize Aikido security issues from the aikido feed.\n- The user can scope the issues to a specific cloud name, repo name, vm name, domain name, container name, team name or workspace name.\n- The user can scope the issues of a repository to a specific branch name\n- The user can scope the issues to repositories or images carrying one or more labels.\n- The user can scope the issues to be out of SLA or SLA is due soon. The value of those parameters is a boolean.\n- The user can scope the issues to a specific issue severity.\n- The user can filter by a specific issue_id to retrieve more detailed information about that single issue.\n- If the user asks for \"AI Code Analysis\", \"code audit\", or \"agentic review\" findings, pass issue_types: ['ai_code_analysis'].\n- You are about to triage or fix security issues and need the current issue set.\n\nOUTPUT FORMATTING\nUse this exact format for every issue (increment #).\nIssue #1: <issue_title>\n - ID: <issue_id>\n - Issue type: <issue_type>\n - Severity: <issue_severity> (<issue_severity_label>)\n - Remediation: <issue_remediation>\n\nAdd extra response fields as additional bullets when relevant, e.g.:\n - File: <issue_file> (line <issue_start_line>)\n - Location: <location.type> <location.name> (<location.branch_name>)\n - Issue link: <issue_link>\n - SLA due date: <issue_remediate_by_date>\n",
    "execution": {
      "taskSupport": "forbidden"
    },
+       "issue_id": {
+         "description": "Retrieve detailed issue information for a specific issue ID.",
+         "type": "string"
+       },
        "issue_types": {
          "items": {
            "enum": [
--- pinned/aikido_login
+++ observed/aikido_login
  {
+   "annotations": {
+     "destructiveHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
    "description": "\nStarts the Aikido sign-in flow. Returns a sign-in URL for the user to open in\ntheir browser, OR confirms the user is already signed in.\n\nWHEN TO CALL THIS TOOL\n- The user explicitly asks to sign in, log in, authenticate, or connect to Aikido.\n- The user asks to switch Aikido accounts or re-authenticate. Pass\n  `force_reauth: true` so the sign-in flow starts even if a token is already cached.\n- An earlier Aikido tool returned \"ACTION REQUIRED — Aikido sign-in\" and the user\n  now wants to complete that sign-in.\n- The user pastes a token they copied from the Aikido sign-in modal (a fallback for when\n  browser couldn't deliver the token automatically). Pass the value verbatim as the `token` argument.\n\nNEVER fabricate the `token` value. Only pass it when the user supplies an\nexplicit string they copied from the Aikido UI.\n\nREGION\n- By default, omit `region`. Sign-in automatically redirects the user to their\n  Aikido account's region, so they no longer have to choose one.\n- Only pass `region` (EU / US / ME / AU) when the user explicitly names a region,\n  or when the automatic redirect sent them to the wrong one. To switch the region\n  of an already signed-in user, pass `force_reauth: true` as well.\n\nRESPONSE\n- If a `token` was passed: a short confirmation that the token was stored, or\n  an error if it didn't look like a valid Aikido token.\n- If already signed in and `force_reauth` is not set: a short confirmation\n  message. Continue with whatever the user actually wanted.\n- If sign-in is needed (or `force_reauth` was set): a single sign-in URL plus\n  instructions. The URL contains a one-time `state` token and `redirect_uri`\n  that MUST be passed through verbatim — do not strip query parameters when\n  showing it to the user.\n",
    "execution": {
      "taskSupport": "forbidden"

+ tool added: aikido_oss_dependency_scan

+ tool added: aikido_scan_paths

+ tool added: aikido_snooze_issue

+ tool added: aikido_unignore_issue

+ tool added: aikido_unsnooze_issue

+ tool added: aikido_workspaces_list

Current tools

Show all 10 tool fingerprints
aikido_full_scan
b08ad1dc8f12527b
aikido_ignore_issue
74005dcc51fb116a
aikido_issues_list
16d8517491ca060e
aikido_login
c06b5a01c0b99027
aikido_oss_dependency_scan
42f42d76cdc7e1cc
aikido_scan_paths
910cf51d697c6199
aikido_snooze_issue
56cc2f592a3e756b
aikido_unignore_issue
ee3a6f689e6161ac
aikido_unsnooze_issue
716282817b4d1d73
aikido_workspaces_list
5db01241c75d8c55

Watch this server yourself

If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.

npx -y mcp-pin@0.2.3 -- <your @aikidosec/mcp command>

Or subscribe to this page's RSS feed to be told when it changes.

Badge

mcp-pin status badge for @aikidosec/mcp

The badge states one fact about time and nothing else. It never claims a server is safe.

[![mcp-pin](https://mcp-pin.gautamkhosla.com/badge/04e2b2335497921b.svg)](https://mcp-pin.gautamkhosla.com/servers/04e2b2335497921b.html)