Public log

@currents/mcp

Currents MCP server

npm · fingerprint 9003f5b5f157432a471904e7 · repository · RSS

43tools
3recorded versions
46dtracked
changed 2d ago

What changed

Changed 2026-10-15 11:14 UTC

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

+ tool added: currents-add-attachments

--- pinned/currents-cancel-run
+++ observed/currents-cancel-run
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Cancel Run"
    },
    "description": "Cancel a run in progress. This will stop the run and mark it as cancelled. Requires runId.",
    "execution": {
--- pinned/currents-cancel-run-github-ci
+++ observed/currents-cancel-run-github-ci
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Cancel Run by GitHub Workflow"
    },
    "description": "Cancel a run by GitHub Actions workflow run ID and attempt number. Optionally scope by projectId or ciBuildId. Requires githubRunId and githubRunAttempt.",
    "execution": {
--- pinned/currents-create-action
+++ observed/currents-create-action
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Create Action"
    },
    "description": "Create a new action for a project. Actions define rules that automatically skip, quarantine, or tag tests based on conditions like test title, file path, git branch, etc. Requires projectId, name, action array, and matcher object.",
    "execution": {

+ tool added: currents-create-evidence-links

--- pinned/currents-create-jira-issue
+++ observed/currents-create-jira-issue
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Create Jira Issue"
    },
    "description": "Create a Jira issue from a run test using the organization Jira integration. Requires projectId, runId, testId, jiraInstallationId, jiraProjectId, and jiraIssueType. Optional customFields array.",
    "execution": {

+ tool added: currents-create-session

+ tool added: currents-create-share-link

--- pinned/currents-create-webhook
+++ observed/currents-create-webhook
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Create Webhook"
    },
-   "description": "Create a new webhook for a project. Specify the URL to receive POST notifications, optional custom headers (as JSON string), events to trigger on (RUN_FINISH, RUN_START, RUN_TIMEOUT, RUN_CANCELED), and an optional label. Requires projectId and url.",
+   "description": "Create a new webhook for a project. Specify the URL to receive POST notifications, optional custom headers (as JSON string), events to trigger on (RUN_FINISH, RUN_START, RUN_TIMEOUT, RUN_CANCELED), and an optional label. Requires projectId and url. The payload Currents sends and how to verify it are documented at https://docs.currents.dev/resources/integrations/http-webhooks.",
    "execution": {
      "taskSupport": "forbidden"
    },
--- pinned/currents-delete-action
+++ observed/currents-delete-action
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Archive Action"
    },
    "description": "Delete (archive) an action. This is a soft delete - the action will be marked as archived but not permanently removed. The actionId is globally unique.",
    "execution": {
--- pinned/currents-delete-run
+++ observed/currents-delete-run
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Delete Run"
    },
    "description": "Delete a run and all associated data. This is a permanent deletion. Requires runId.",
    "execution": {
--- pinned/currents-delete-webhook
+++ observed/currents-delete-webhook
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Delete Webhook"
    },
    "description": "Delete a webhook. This permanently removes the webhook. The hookId is a UUID.",
    "execution": {
--- pinned/currents-disable-action
+++ observed/currents-disable-action
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Disable Action"
    },
    "description": "Disable an active action. Changes the action status to disabled, temporarily preventing it from applying to tests. The actionId is globally unique.",
    "execution": {
--- pinned/currents-enable-action
+++ observed/currents-enable-action
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Enable Action"
    },
    "description": "Enable a disabled action. Changes the action status from disabled to active, making it apply to matching tests again. The actionId is globally unique.",
    "execution": {
--- pinned/currents-find-run
+++ observed/currents-find-run
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Find Run"
    },
    "description": "Find a run by query parameters. Returns the most recent completed run matching the criteria. Can search by ciBuildId (exact match) or by branch/tags. Supports pwLastRun flag for Playwright last run info. Requires projectId.",
    "execution": {
--- pinned/currents-get-action
+++ observed/currents-get-action
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Action"
    },
    "description": "Get a single action by ID. The actionId is globally unique, so projectId is not required. Returns full action details including matcher conditions and current status.",
    "execution": {
--- pinned/currents-get-action-executions
+++ observed/currents-get-action-executions
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Executions an Action Applied To"
    },
    "description": "Keyed on an action: lists the test executions one rule was applied to, across every test it touched, within a date range. Requires actionId, date_start and date_end; if the actionId is not known, first call 'currents-list-actions'. For the executions of one test, call 'currents-get-affected-test-executions' instead. Uses cursor-based pagination.",
    "execution": {
--- pinned/currents-get-affected-test-executions
+++ observed/currents-get-affected-test-executions
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Executions of an Affected Test"
    },
    "description": "Keyed on a test: lists the executions of one test that an action applied to, within a date range, with the run, branch and commit of each. Requires projectId, signature, date_start and date_end; if the signature is not known, first call 'currents-get-tests-signatures'. For the executions of one rule across every test it touched, call 'currents-get-action-executions' instead. Uses cursor-based pagination.",
    "execution": {
--- pinned/currents-get-context
+++ observed/currents-get-context
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Failure Context to Fix Tests"
    },
-   "description": "Get test failure context for AI debugging at run, instance, or test level. Supports json or md format, detail level, and pagination for failed tests. Requires run_id for run-level, or instance_id with optional test_id.",
+   "description": "Call this first to find out why tests failed in CI, or to fix them: returns the errors, steps and files of the failed tests of a run, a spec file (instance) or one test — the same content as Fix in the Currents dashboard. Takes the IDs from dashboard links: /run/<runId> is run_id, /instance/<instanceId>/test/<testId> (or /i/<instanceId>/test/<testId>) is instance_id and test_id. Flaky tests are left out of a run unless include_flaky is set. The context of a run lists the attachments of the run itself, by CI machine (`runAttachments`). Supports json or md format, detail level, and pagination for failed tests. Target a run (run_id), a spec file (run_id + instance_id) or a test (instance_id + test_id). The steps for fixing them are at skill://currents/fix-failing-tests/SKILL.md.",
    "execution": {
      "taskSupport": "forbidden"
    },
+       "include_flaky": {
+         "description": "Run-level only. When true, flaky tests are listed after the failed tests, each with the error from its last failed attempt, and limit and page count across both. Defaults to false.",
+         "type": "boolean"
+       },
        "instance_id": {
          "description": "Instance identifier. Required for instance-level and test-level. Omit for run-level (use run_id only).",
          "type": "string"
-   "title": "Get Failure Context"
+   "title": "Get Failure Context to Fix Tests"
  }
--- pinned/currents-get-errors-explorer
+++ observed/currents-get-errors-explorer
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Explore Errors"
    },
    "description": "Get aggregated error metrics for a project within a date range. Supports filtering by error_target, error_message, error_category, error_action, tags, branches, authors, and groups. Supports grouping by target, action, category, or message. Returns error counts, affected tests and branches, with timeline data. Requires projectId, date_start, and date_end.",
    "execution": {
--- pinned/currents-get-project
+++ observed/currents-get-project
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Project"
    },
    "description": "Get a single project by ID. Returns project details including name, creation date, failFast setting, inactivity timeout, and default branch name.",
    "execution": {
--- pinned/currents-get-project-insights
+++ observed/currents-get-project-insights
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Project Insights"
    },
    "description": "Get aggregated run and test metrics for a project within a date range. Returns overall metrics and timeline data with configurable resolution (1h/1d/1w). Supports filtering by tags, branches, groups, and authors. Requires projectId, date_start, and date_end.",
    "execution": {
--- pinned/currents-get-projects
+++ observed/currents-get-projects
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Projects"
    },
    "description": "Retrieves projects available in the Currents platform. Supports cursor-based pagination with limit, starting_after, ending_before parameters, or set fetchAll=true for automatic pagination. This is a prerequisite for using any other tools that require project-specific information.",
    "execution": {
--- pinned/currents-get-run-details
+++ observed/currents-get-run-details
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Run"
    },
-   "description": "Retrieves details of a specific test run. Requires a user-provided runId.",
+   "description": "Retrieves a run: its status, commit, branch, groups and spec files, each with its instanceId, and how many files the run has by level, type and source (`attachmentCounts`). Requires runId, the ID in a /run/<runId> dashboard link. For why the run's tests failed, and for the files attached to the run itself such as Docker logs, call currents-get-context with run_id instead; for its screenshots, videos and traces, currents-get-test-evidence.",
    "execution": {
      "taskSupport": "forbidden"
    },
--- pinned/currents-get-runs
+++ observed/currents-get-runs
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Runs"
    },
    "description": "Retrieves a list of runs for a specific project with optional filtering. Supports filtering by branch, tags (with AND/OR operators), status (PASSED/FAILED/RUNNING/FAILING), completion state, date range, commit author, and free-text search over the run's CI build id, commit message, branch, sha, author, pull request title/number/branches, tags, environments, framework and browser. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
--- pinned/currents-get-spec-files-performance
+++ observed/currents-get-spec-files-performance
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Spec File Performance"
    },
    "description": "Retrieves spec files performance metrics for a specific project within a date range. Supports ordering by avgDuration, failedExecutions, failureRate, flakeRate, flakyExecutions, fullyReported, overallExecutions, suiteSize, timeoutExecutions, or timeoutRate. Supports filtering by tags, branches, groups, and authors. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
--- pinned/currents-get-spec-instance
+++ observed/currents-get-spec-instance
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Spec Execution"
    },
-   "description": "Retrieves debugging data from a specific execution of a test spec file by instanceId.",
+   "description": "Retrieves the raw result of one spec file execution by instanceId: each test's state and attempts, and the artifact URLs. For why its tests failed, currents-get-context with run_id and instance_id returns the errors, steps and trace links ready to read.",
    "execution": {
      "taskSupport": "forbidden"
    },
--- pinned/currents-get-test-evidence
+++ observed/currents-get-test-evidence
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Collect Test Evidence"
    },
-   "description": "Collect evidence artifacts (screenshots, videos, traces, attachments) produced by tests in a CI run, with signed download URLs grouped per test. Use to gather proof or a demo of an implemented feature from CI — e.g. before/after screenshots, text output stored as test attachments, or Playwright videos and traces — instead of running tests locally. Locates the run by runId, or by projectId with ciBuildId or branch (latest run). Supports filtering by spec file, test title, and test status. URLs are signed and time-limited, so download the files promptly.",
+   "description": "Collect evidence artifacts (screenshots, videos, traces, attachments) produced by tests in a CI run, with signed download URLs grouped per test. Read skill://currents/collect-evidence/SKILL.md before the first call. Use to gather proof or a demo of an implemented feature from CI — e.g. before/after screenshots, text output stored as test attachments, or Playwright videos and traces — instead of running tests locally. Locates the run by runId, or by projectId with ciBuildId or branch (latest run). Supports filtering by spec file, test title, and test status. URLs are signed and time-limited, so download the files promptly.",
    "execution": {
      "taskSupport": "forbidden"
    },
--- pinned/currents-get-test-results
+++ observed/currents-get-test-results
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Test History"
    },
    "description": "Retrieves historical test execution results for a specific test signature. Supports filtering by date range, branch, tags, git author, test status (passed/failed/pending/skipped), run group, flaky status, and annotations. Requires the test signature. If the signature is not known, first call 'currents-get-tests-signatures'.",
    "execution": {
--- pinned/currents-get-tests-performance
+++ observed/currents-get-tests-performance
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Test Performance"
    },
    "description": "Retrieves aggregated test metrics for a specific project within a date range. Supports ordering by failures, passes, flakiness, duration, executions, title, and various delta metrics. Supports filtering by spec name, test title, tags, branches, groups, authors, minimum executions, test state, and annotations. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
--- pinned/currents-get-tests-signatures
+++ observed/currents-get-tests-signatures
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Test Signature"
    },
    "description": "Generates a unique test signature based on project, spec file path, and test title. The test title can be a string or array of strings (for nested describe blocks). Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
--- pinned/currents-get-webhook
+++ observed/currents-get-webhook
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "Get Webhook"
    },
    "description": "Get a single webhook by ID. The hookId is a UUID. Returns full webhook details including url, headers, events, label, and timestamps.",
    "execution": {
--- pinned/currents-link-jira-issue
+++ observed/currents-link-jira-issue
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Link Jira Issue"
    },
    "description": "Link an existing Jira issue to a run test using the organization Jira integration. Requires projectId, jiraIssueKey, runId, testId, jiraInstallationId, jiraProjectId, and jiraIssueType. Optional comment and includeContextInComment.",
    "execution": {
--- pinned/currents-list-actions
+++ observed/currents-list-actions
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Actions"
    },
    "description": "List all actions for a project with optional filtering. Actions are rules that automatically modify test behavior (skip, quarantine, tag). Supports filtering by status (active/disabled/archived/expired) and search by name. Requires a projectId.",
    "execution": {
--- pinned/currents-list-affected-tests
+++ observed/currents-list-affected-tests
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Tests Affected by Actions"
    },
    "description": "List tests affected by actions (quarantine, skip, tag) for a project within a date range. Returns aggregated data grouped by test signature. Supports filtering by action types, action ID, status, and search. Requires projectId, date_start, and date_end. Preview endpoint: fields and path may change.",
    "execution": {
--- pinned/currents-list-jira-issue-types
+++ observed/currents-list-jira-issue-types
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Jira Issue Types"
    },
    "description": "List Jira issue types and custom fields for a Jira project. Requires jiraProjectId and jira_installation_id.",
    "execution": {
--- pinned/currents-list-jira-projects
+++ observed/currents-list-jira-projects
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Jira Projects"
    },
    "description": "List Jira projects available for the organization integration. Use returned project IDs as jiraProjectId when creating issues. Requires jira_installation_id.",
    "execution": {
--- pinned/currents-list-project-terms
+++ observed/currents-list-project-terms
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Project Terms"
    },
    "description": "List cursor-paginated project terms for one type (tag, branch, authorName, etc.). Supports search, sort direction, and starting_after or ending_before cursors. Requires projectId and termType.",
    "execution": {
--- pinned/currents-list-pull-requests
+++ observed/currents-list-pull-requests
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Pull Requests"
    },
    "description": "List pull-request cards for a project (runs grouped by meta.pr.id). Run filters (date range, tags, branches, authors, environments, pr_id, search) choose which runs count; status, completion_state and pr_search are checked on each PR's latest run among those runs. Supports order and dir, cursor pagination and the runs_per_pr preview count. Requires projectId.",
    "execution": {
--- pinned/currents-list-webhooks
+++ observed/currents-list-webhooks
  {
    "annotations": {
      "destructiveHint": false,
-     "readOnlyHint": true
+     "readOnlyHint": true,
+     "title": "List Webhooks"
    },
    "description": "List all webhooks for a project. Webhooks allow you to receive HTTP POST notifications when certain events occur in your test runs: RUN_FINISH (run completed), RUN_START (run started), RUN_TIMEOUT (run timed out), RUN_CANCELED (run was cancelled). Requires a projectId.",
    "execution": {
--- pinned/currents-reset-run
+++ observed/currents-reset-run
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Reset Failed Specs in a Run"
    },
    "description": "Reset failed spec files in a run to allow re-execution. Requires runId and machineId array (1-63 machine IDs). Optionally supports batched orchestration.",
    "execution": {
--- pinned/currents-update-action
+++ observed/currents-update-action
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Update Action"
    },
    "description": "Update an existing action. The actionId is globally unique. You can update name, description, action array, matcher, or expiration date. All fields are optional.",
    "execution": {
--- pinned/currents-update-webhook
+++ observed/currents-update-webhook
  {
    "annotations": {
      "destructiveHint": true,
-     "readOnlyHint": false
+     "readOnlyHint": false,
+     "title": "Update Webhook"
    },
-   "description": "Update an existing webhook. You can update the url, headers (as JSON string), hookEvents array, or label. All fields are optional. The hookId is a UUID.",
+   "description": "Update an existing webhook. You can update the url, headers (as JSON string), hookEvents array, or label. All fields are optional. The hookId is a UUID. The payload Currents sends and how to verify it are documented at https://docs.currents.dev/resources/integrations/http-webhooks.",
    "execution": {
      "taskSupport": "forbidden"
    },

Changed 2026-10-05 14:12 UTC

3 descriptions rewritten, 35 schema or annotation changes with the description left byte-identical, 1 tool added, 1 tool removed.

--- pinned/currents-cancel-run
+++ observed/currents-cancel-run
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Cancel a run in progress. This will stop the run and mark it as cancelled. Requires runId.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-cancel-run"
+   "name": "currents-cancel-run",
+   "title": "Cancel Run"
  }
--- pinned/currents-cancel-run-github-ci
+++ observed/currents-cancel-run-github-ci
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Cancel a run by GitHub Actions workflow run ID and attempt number. Optionally scope by projectId or ciBuildId. Requires githubRunId and githubRunAttempt.",
    "execution": {
      "taskSupport": "forbidden"
-   "name": "currents-cancel-run-github-ci"
+   "name": "currents-cancel-run-github-ci",
+   "title": "Cancel Run by GitHub Workflow"
  }
--- pinned/currents-create-action
+++ observed/currents-create-action
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": false,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Create a new action for a project. Actions define rules that automatically skip, quarantine, or tag tests based on conditions like test title, file path, git branch, etc. Requires projectId, name, action array, and matcher object.",
    "execution": {
      "taskSupport": "forbidden"
+                       "minItems": 1,
                        "type": "array"
                      }
                    },
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-create-action"
+   "name": "currents-create-action",
+   "title": "Create Action"
  }
--- pinned/currents-create-jira-issue
+++ observed/currents-create-jira-issue
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
    "description": "Create a Jira issue from a run test using the organization Jira integration. Requires projectId, runId, testId, jiraInstallationId, jiraProjectId, and jiraIssueType. Optional customFields array.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "runId": {
-   "name": "currents-create-jira-issue"
+   "name": "currents-create-jira-issue",
+   "title": "Create Jira Issue"
  }
--- pinned/currents-create-webhook
+++ observed/currents-create-webhook
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
    "description": "Create a new webhook for a project. Specify the URL to receive POST notifications, optional custom headers (as JSON string), events to trigger on (RUN_FINISH, RUN_START, RUN_TIMEOUT, RUN_CANCELED), and an optional label. Requires projectId and url.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "url": {
-   "name": "currents-create-webhook"
+   "name": "currents-create-webhook",
+   "title": "Create Webhook"
  }
--- pinned/currents-delete-action
+++ observed/currents-delete-action
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Delete (archive) an action. This is a soft delete - the action will be marked as archived but not permanently removed. The actionId is globally unique.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-delete-action"
+   "name": "currents-delete-action",
+   "title": "Archive Action"
  }
--- pinned/currents-delete-run
+++ observed/currents-delete-run
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Delete a run and all associated data. This is a permanent deletion. Requires runId.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-delete-run"
+   "name": "currents-delete-run",
+   "title": "Delete Run"
  }
--- pinned/currents-delete-webhook
+++ observed/currents-delete-webhook
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Delete a webhook. This permanently removes the webhook. The hookId is a UUID.",
    "execution": {
      "taskSupport": "forbidden"
+         "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
          "type": "string"
        }
      },
-   "name": "currents-delete-webhook"
+   "name": "currents-delete-webhook",
+   "title": "Delete Webhook"
  }
--- pinned/currents-disable-action
+++ observed/currents-disable-action
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Disable an active action. Changes the action status to disabled, temporarily preventing it from applying to tests. The actionId is globally unique.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-disable-action"
+   "name": "currents-disable-action",
+   "title": "Disable Action"
  }
--- pinned/currents-enable-action
+++ observed/currents-enable-action
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Enable a disabled action. Changes the action status from disabled to active, making it apply to matching tests again. The actionId is globally unique.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-enable-action"
+   "name": "currents-enable-action",
+   "title": "Enable Action"
  }
--- pinned/currents-find-run
+++ observed/currents-find-run
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Find a run by query parameters. Returns the most recent completed run matching the criteria. Can search by ciBuildId (exact match) or by branch/tags. Supports pwLastRun flag for Playwright last run info. Requires projectId.",
    "execution": {
      "taskSupport": "forbidden"
-         "description": "Git branch name. Used when ciBuildId is not provided.",
+         "description": "Git branch name. Applies only when ciBuildId is not provided — the API matches on ciBuildId alone when both are given.",
          "type": "string"
        },
        "ciBuildId": {
+         "minLength": 1,
          "type": "string"
        },
        "pwLastRun": {
-   "name": "currents-find-run"
+   "name": "currents-find-run",
+   "title": "Find Run"
  }
--- pinned/currents-get-action
+++ observed/currents-get-action
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Get a single action by ID. The actionId is globally unique, so projectId is not required. Returns full action details including matcher conditions and current status.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-get-action"
+   "name": "currents-get-action",
+   "title": "Get Action"
  }

+ tool added: currents-get-action-executions

--- pinned/currents-get-affected-test-executions
+++ observed/currents-get-affected-test-executions
  {
-   "description": "Get execution details for a specific affected test (by signature) within a date range. Returns individual test execution records with action info. Uses cursor-based pagination. Requires projectId, signature, date_start, and date_end.",
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
+   "description": "Keyed on a test: lists the executions of one test that an action applied to, within a date range, with the run, branch and commit of each. Requires projectId, signature, date_start and date_end; if the signature is not known, first call 'currents-get-tests-signatures'. For the executions of one rule across every test it touched, call 'currents-get-action-executions' instead. Uses cursor-based pagination.",
    "execution": {
      "taskSupport": "forbidden"
    },
+         "minLength": 1,
          "type": "string"
        },
        "search": {
+         "minLength": 1,
          "type": "string"
        },
        "starting_after": {
-   "name": "currents-get-affected-test-executions"
+   "name": "currents-get-affected-test-executions",
+   "title": "Get Executions of an Affected Test"
  }
--- pinned/currents-get-context
+++ observed/currents-get-context
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Get test failure context for AI debugging at run, instance, or test level. Supports json or md format, detail level, and pagination for failed tests. Requires run_id for run-level, or instance_id with optional test_id.",
    "execution": {
      "taskSupport": "forbidden"
-   "name": "currents-get-context"
+   "name": "currents-get-context",
+   "title": "Get Failure Context"
  }
--- pinned/currents-get-errors-explorer
+++ observed/currents-get-errors-explorer
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Get aggregated error metrics for a project within a date range. Supports filtering by error_target, error_message, error_category, error_action, tags, branches, authors, and groups. Supports grouping by target, action, category, or message. Returns error counts, affected tests and branches, with timeline data. Requires projectId, date_start, and date_end.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "tags": {
-   "name": "currents-get-errors-explorer"
+   "name": "currents-get-errors-explorer",
+   "title": "Explore Errors"
  }
--- pinned/currents-get-project
+++ observed/currents-get-project
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Get a single project by ID. Returns project details including name, creation date, failFast setting, inactivity timeout, and default branch name.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-get-project"
+   "name": "currents-get-project",
+   "title": "Get Project"
  }
--- pinned/currents-get-project-insights
+++ observed/currents-get-project-insights
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Get aggregated run and test metrics for a project within a date range. Returns overall metrics and timeline data with configurable resolution (1h/1d/1w). Supports filtering by tags, branches, groups, and authors. Requires projectId, date_start, and date_end.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "resolution": {
-   "name": "currents-get-project-insights"
+   "name": "currents-get-project-insights",
+   "title": "Get Project Insights"
  }
--- pinned/currents-get-projects
+++ observed/currents-get-projects
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Retrieves projects available in the Currents platform. Supports cursor-based pagination with limit, starting_after, ending_before parameters, or set fetchAll=true for automatic pagination. This is a prerequisite for using any other tools that require project-specific information.",
    "execution": {
      "taskSupport": "forbidden"
-         "description": "If true, fetches all projects using automatic pagination. Ignores limit, starting_after, and ending_before.",
+         "description": "If true, walks the pages automatically and returns up to 1000 projects. Starts after starting_after when it is set, so a list that came back marked incomplete can be continued. Ignores limit and ending_before.",
          "type": "boolean"
        },
        "limit": {
-   "name": "currents-get-projects"
+   "name": "currents-get-projects",
+   "title": "List Projects"
  }
--- pinned/currents-get-run-details
+++ observed/currents-get-run-details
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Retrieves details of a specific test run. Requires a user-provided runId.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-get-run-details"
+   "name": "currents-get-run-details",
+   "title": "Get Run"
  }
--- pinned/currents-get-runs
+++ observed/currents-get-runs
  {
-   "description": "Retrieves a list of runs for a specific project with optional filtering. Supports filtering by branch, tags (with AND/OR operators), status (PASSED/FAILED/RUNNING/FAILING), completion state, date range, commit author, and search by ciBuildId or commit message. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
+   "description": "Retrieves a list of runs for a specific project with optional filtering. Supports filtering by branch, tags (with AND/OR operators), status (PASSED/FAILED/RUNNING/FAILING), completion state, date range, commit author, and free-text search over the run's CI build id, commit message, branch, sha, author, pull request title/number/branches, tags, environments, framework and browser. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
      "taskSupport": "forbidden"
    },
+         "minLength": 1,
          "type": "string"
        },
        "search": {
-         "description": "Search runs by ciBuildId or commit message. Case-insensitive.",
+         "description": "Case-insensitive substring search over a run's CI build id, commit message, branch, sha, author name and email, pull request id/title/source/destination, tags, environments, framework and browser.",
          "maxLength": 200,
          "type": "string"
        },
-   "name": "currents-get-runs"
+   "name": "currents-get-runs",
+   "title": "List Runs"
  }
--- pinned/currents-get-spec-files-performance
+++ observed/currents-get-spec-files-performance
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Retrieves spec files performance metrics for a specific project within a date range. Supports ordering by avgDuration, failedExecutions, failureRate, flakeRate, flakyExecutions, fullyReported, overallExecutions, suiteSize, timeoutExecutions, or timeoutRate. Supports filtering by tags, branches, groups, and authors. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "specNameFilter": {
-   "name": "currents-get-spec-files-performance"
+   "name": "currents-get-spec-files-performance",
+   "title": "Get Spec File Performance"
  }
--- pinned/currents-get-spec-instance
+++ observed/currents-get-spec-instance
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Retrieves debugging data from a specific execution of a test spec file by instanceId.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-get-spec-instance"
+   "name": "currents-get-spec-instance",
+   "title": "Get Spec Execution"
  }
--- pinned/currents-get-test-evidence
+++ observed/currents-get-test-evidence
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Collect evidence artifacts (screenshots, videos, traces, attachments) produced by tests in a CI run, with signed download URLs grouped per test. Use to gather proof or a demo of an implemented feature from CI — e.g. before/after screenshots, text output stored as test attachments, or Playwright videos and traces — instead of running tests locally. Locates the run by runId, or by projectId with ciBuildId or branch (latest run). Supports filtering by spec file, test title, and test status. URLs are signed and time-limited, so download the files promptly.",
    "execution": {
      "taskSupport": "forbidden"
-   "name": "currents-get-test-evidence"
+   "name": "currents-get-test-evidence",
+   "title": "Collect Test Evidence"
  }
--- pinned/currents-get-test-results
+++ observed/currents-get-test-results
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Retrieves historical test execution results for a specific test signature. Supports filtering by date range, branch, tags, git author, test status (passed/failed/pending/skipped), run group, flaky status, and annotations. Requires the test signature. If the signature is not known, first call 'currents-get-tests-signatures'.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "starting_after": {
-   "name": "currents-get-test-results"
+   "name": "currents-get-test-results",
+   "title": "Get Test History"
  }
--- pinned/currents-get-tests-performance
+++ observed/currents-get-tests-performance
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Retrieves aggregated test metrics for a specific project within a date range. Supports ordering by failures, passes, flakiness, duration, executions, title, and various delta metrics. Supports filtering by spec name, test title, tags, branches, groups, authors, minimum executions, test state, and annotations. Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "spec": {
-   "name": "currents-get-tests-performance"
+   "name": "currents-get-tests-performance",
+   "title": "Get Test Performance"
  }
--- pinned/currents-get-tests-signatures
+++ observed/currents-get-tests-signatures
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Generates a unique test signature based on project, spec file path, and test title. The test title can be a string or array of strings (for nested describe blocks). Requires a projectId. If the projectId is not known, first call 'currents-get-projects' and ask the user to select the project.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "specFilePath": {
-   "name": "currents-get-tests-signatures"
+   "name": "currents-get-tests-signatures",
+   "title": "Get Test Signature"
  }
--- pinned/currents-get-webhook
+++ observed/currents-get-webhook
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "Get a single webhook by ID. The hookId is a UUID. Returns full webhook details including url, headers, events, label, and timestamps.",
    "execution": {
      "taskSupport": "forbidden"
+         "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
          "type": "string"
        }
      },
-   "name": "currents-get-webhook"
+   "name": "currents-get-webhook",
+   "title": "Get Webhook"
  }
--- pinned/currents-link-jira-issue
+++ observed/currents-link-jira-issue
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
    "description": "Link an existing Jira issue to a run test using the organization Jira integration. Requires projectId, jiraIssueKey, runId, testId, jiraInstallationId, jiraProjectId, and jiraIssueType. Optional comment and includeContextInComment.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "runId": {
-   "name": "currents-link-jira-issue"
+   "name": "currents-link-jira-issue",
+   "title": "Link Jira Issue"
  }
--- pinned/currents-list-actions
+++ observed/currents-list-actions
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "List all actions for a project with optional filtering. Actions are rules that automatically modify test behavior (skip, quarantine, tag). Supports filtering by status (active/disabled/archived/expired) and search by name. Requires a projectId.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "search": {
-   "name": "currents-list-actions"
+   "name": "currents-list-actions",
+   "title": "List Actions"
  }
--- pinned/currents-list-affected-tests
+++ observed/currents-list-affected-tests
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "List tests affected by actions (quarantine, skip, tag) for a project within a date range. Returns aggregated data grouped by test signature. Supports filtering by action types, action ID, status, and search. Requires projectId, date_start, and date_end. Preview endpoint: fields and path may change.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "search": {
-   "name": "currents-list-affected-tests"
+   "name": "currents-list-affected-tests",
+   "title": "List Tests Affected by Actions"
  }
--- pinned/currents-list-jira-issue-types
+++ observed/currents-list-jira-issue-types
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": true,
+     "readOnlyHint": true
+   },
    "description": "List Jira issue types and custom fields for a Jira project. Requires jiraProjectId and jira_installation_id.",
    "execution": {
      "taskSupport": "forbidden"
-   "name": "currents-list-jira-issue-types"
+   "name": "currents-list-jira-issue-types",
+   "title": "List Jira Issue Types"
  }
--- pinned/currents-list-jira-projects
+++ observed/currents-list-jira-projects
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": true,
+     "readOnlyHint": true
+   },
    "description": "List Jira projects available for the organization integration. Use returned project IDs as jiraProjectId when creating issues. Requires jira_installation_id.",
    "execution": {
      "taskSupport": "forbidden"
-   "name": "currents-list-jira-projects"
+   "name": "currents-list-jira-projects",
+   "title": "List Jira Projects"
  }
--- pinned/currents-list-project-terms
+++ observed/currents-list-project-terms
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "List cursor-paginated project terms for one type (tag, branch, authorName, etc.). Supports search, sort direction, and starting_after or ending_before cursors. Requires projectId and termType.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        },
        "search": {
-   "name": "currents-list-project-terms"
+   "name": "currents-list-project-terms",
+   "title": "List Project Terms"
  }
--- pinned/currents-list-pull-requests
+++ observed/currents-list-pull-requests
  {
-   "description": "List pull-request cards for a project (runs grouped by meta.pr.id). Supports cursor pagination, runs_per_pr preview count, and filters by tags, branches, authors, and latest-run status. Requires projectId.",
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
+   "description": "List pull-request cards for a project (runs grouped by meta.pr.id). Run filters (date range, tags, branches, authors, environments, pr_id, search) choose which runs count; status, completion_state and pr_search are checked on each PR's latest run among those runs. Supports order and dir, cursor pagination and the runs_per_pr preview count. Requires projectId.",
    "execution": {
      "taskSupport": "forbidden"
    },
+       "completion_state": {
+         "description": "Filter PR cards by the completion state of each PR's latest run among the runs the other filters keep (can be specified multiple times). COMPLETE: run finished normally, IN_PROGRESS: run is still executing, CANCELED: run was canceled, TIMEOUT: run timed out.",
+         "items": {
+           "enum": [
+             "COMPLETE",
+             "IN_PROGRESS",
+             "CANCELED",
+             "TIMEOUT"
+           ],
+           "type": "string"
+         },
+         "type": "array"
+       },
+       "date_end": {
+         "description": "Count only runs created before this date (ISO 8601 date or date-time). Must not be before date_start.",
+         "type": "string"
+       },
+       "date_start": {
+         "description": "Count only runs created on or after this date (ISO 8601 date or date-time). Without date_start and date_end, runs of the whole project history count.",
+         "type": "string"
+       },
+       "dir": {
+         "description": "Sort direction (default: desc). Keep order and dir the same across pages: a cursor returned for another order or dir is rejected.",
+         "enum": [
+           "asc",
+           "desc"
+         ],
+         "type": "string"
+       },
        "ending_before": {
          "description": "Cursor for backward pagination.",
          "type": "string"
+       "environments": {
+         "description": "Count only runs from these environments (can be specified multiple times). Printable ASCII without spaces.",
+         "items": {
+           "pattern": "^[!-~]+$",
+           "type": "string"
+         },
+         "type": "array"
+       },
        "limit": {
          "description": "Maximum number of PR cards per page (default: 10, max: 50).",
          "maximum": 50,
+       "order": {
+         "description": "Sort PR cards by last_run (creation time of the latest run, default), first_run (creation time of the oldest run) or run_count (number of runs). Only runs the filters keep count.",
+         "enum": [
+           "last_run",
+           "first_run",
+           "run_count"
+         ],
+         "type": "string"
+       },
+       "pr_id": {
+         "description": "Count only runs of this pull request, by normalized pull request id (meta.pr.id). Printable ASCII only, max 128 characters.",
+         "maxLength": 128,
+         "minLength": 1,
+         "pattern": "^[!-~]+$",
+         "type": "string"
+       },
+       "pr_search": {
+         "description": "Find PRs by title, number or source branch, checked on each PR's latest run among the runs the other filters keep. Matches when the title or source branch contains the text (case-insensitive), or when the text is a PR number (123 or #123). Any characters except control characters; 1-200 characters after trimming.",
+         "type": "string"
+       },
        "projectId": {
          "description": "The project ID to list pull requests for.",
+         "minLength": 1,
          "type": "string"
        },
        "runs_per_pr": {
-         "description": "Number of recent runs to preview per PR card (default: 1, max: 10).",
+         "description": "Number of recent runs to include in each card timelinePreview (default: 1, max: 10). 0 returns an empty timelinePreview; recentRuns (up to 10 latest runs per card) are still returned.",
          "maximum": 10,
-         "minimum": 1,
+         "minimum": 0,
          "type": "integer"
        },
+       "search": {
+         "description": "Count only runs whose ciBuildId or commit message contains the text (case-insensitive). Printable ASCII only; 1-200 characters after trimming.",
+         "type": "string"
+       },
        "starting_after": {
          "description": "Cursor for forward pagination.",
          "type": "string"
-         "description": "Filter PR cards by latest run status (can be specified multiple times).",
+         "description": "Filter PR cards by the status of each PR's latest run among the runs the other filters keep (can be specified multiple times).",
          "items": {
            "enum": [
              "PASSED",
-   "name": "currents-list-pull-requests"
+   "name": "currents-list-pull-requests",
+   "title": "List Pull Requests"
  }
--- pinned/currents-list-webhooks
+++ observed/currents-list-webhooks
  {
+   "annotations": {
+     "destructiveHint": false,
+     "idempotentHint": true,
+     "openWorldHint": false,
+     "readOnlyHint": true
+   },
    "description": "List all webhooks for a project. Webhooks allow you to receive HTTP POST notifications when certain events occur in your test runs: RUN_FINISH (run completed), RUN_START (run started), RUN_TIMEOUT (run timed out), RUN_CANCELED (run was cancelled). Requires a projectId.",
    "execution": {
      "taskSupport": "forbidden"
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-list-webhooks"
+   "name": "currents-list-webhooks",
+   "title": "List Webhooks"
  }
--- pinned/currents-reset-run
+++ observed/currents-reset-run
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": false,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Reset failed spec files in a run to allow re-execution. Requires runId and machineId array (1-63 machine IDs). Optionally supports batched orchestration.",
    "execution": {
      "taskSupport": "forbidden"
+           "minLength": 1,
            "type": "string"
          },
          "maxItems": 63,
+         "minLength": 1,
          "type": "string"
        }
      },
-   "name": "currents-reset-run"
+   "name": "currents-reset-run",
+   "title": "Reset Failed Specs in a Run"
  }
--- pinned/currents-update-action
+++ observed/currents-update-action
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": false,
+     "openWorldHint": false,
+     "readOnlyHint": false
+   },
    "description": "Update an existing action. The actionId is globally unique. You can update name, description, action array, matcher, or expiration date. All fields are optional.",
    "execution": {
      "taskSupport": "forbidden"
+                       "minItems": 1,
                        "type": "array"
                      }
                    },
+         "minLength": 1,
          "type": "string"
        },
        "description": {
-   "name": "currents-update-action"
+   "name": "currents-update-action",
+   "title": "Update Action"
  }
--- pinned/currents-update-webhook
+++ observed/currents-update-webhook
  {
+   "annotations": {
+     "destructiveHint": true,
+     "idempotentHint": false,
+     "openWorldHint": true,
+     "readOnlyHint": false
+   },
    "description": "Update an existing webhook. You can update the url, headers (as JSON string), hookEvents array, or label. All fields are optional. The hookId is a UUID.",
    "execution": {
      "taskSupport": "forbidden"
+         "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
          "type": "string"
        },
        "label": {
-   "name": "currents-update-webhook"
+   "name": "currents-update-webhook",
+   "title": "Update Webhook"
  }

tool removed: currents-get-affected-executions

Current tools

Show all 43 tool fingerprints
currents-add-attachments
03796f3660c88d27
currents-cancel-run
088f3750ed6b62bd
currents-cancel-run-github-ci
9968b169dafdcb13
currents-create-action
9724bff45f18f953
currents-create-evidence-links
51446814ca973057
currents-create-jira-issue
32d532ce03c520b0
currents-create-session
126d1f2aae4e9631
currents-create-share-link
d5c22954615f91ef
currents-create-webhook
fae8531028e8d11e
currents-delete-action
af1927eeac6b09a0
currents-delete-run
ff4470f1c2ff368d
currents-delete-webhook
b8d4b9426337136b
currents-disable-action
8ce5586162f13ff6
currents-enable-action
58dcb0f71e7e5ce0
currents-find-run
6f857a96df72dc4e
currents-get-action
ffac4593d3147412
currents-get-action-executions
1cd8da18a3ff9824
currents-get-affected-test-executions
2b9cccb7f288ad66
currents-get-context
a5512928ca40d097
currents-get-errors-explorer
170e80c60071ab45
currents-get-project
db85e6f08c100211
currents-get-project-insights
60c5ca9d5ec33b64
currents-get-projects
48c26d937dcac2a5
currents-get-run-details
a9d19ae9d9234ce1
currents-get-runs
019ca24f944d2ffb
currents-get-spec-files-performance
6b8454d0405dcdf2
currents-get-spec-instance
bb6304992bef16b2
currents-get-test-evidence
fbefb0133b39ea26
currents-get-test-results
3eaf478df31d9eac
currents-get-tests-performance
185fe291a5c76fbe
currents-get-tests-signatures
fd2afc4c59f3550d
currents-get-webhook
9fc2c7187a288fc2
currents-link-jira-issue
0d4847b20d6f5e78
currents-list-actions
3c6776384a808e11
currents-list-affected-tests
7809a4e2ad280773
currents-list-jira-issue-types
69e08148c145f4cb
currents-list-jira-projects
19931088ddfce3ae
currents-list-project-terms
d29feb66d6e9e77d
currents-list-pull-requests
34986817b8d7d13e
currents-list-webhooks
33150bbf151d6224
currents-reset-run
fa1735a719e1c748
currents-update-action
881a02cab98b3d0a
currents-update-webhook
351e4edf21bd6313

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 @currents/mcp command>

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

Badge

mcp-pin status badge for @currents/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/3a4463759a3d1629.svg)](https://mcp-pin.gautamkhosla.com/servers/3a4463759a3d1629.html)