原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"mcp-server",
"modelcontextprotocol"
],
"is_fork": false,
"size_kb": 1013,
"has_wiki": true,
"homepage": null,
"languages": {
"Dockerfile": 1646,
"JavaScript": 10731,
"TypeScript": 387997
},
"pushed_at": "2026-07-19T18:12:49Z",
"created_at": "2025-03-26T18:31:55Z",
"owner_type": "Organization",
"updated_at": "2026-07-19T18:12:53Z",
"description": "A specialized server implementation for the Model Context Protocol (MCP) designed to integrate with CircleCI's development workflow. This project serves as a bridge between CircleCI's infrastructure and the Model Context Protocol, enabling enhanced AI-powered development experiences.",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": "NOASSERTION",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": "https://circleci.com",
"name": "CircleCI Public",
"type": "Organization",
"login": "CircleCI-Public",
"company": null,
"location": null,
"followers": 230,
"avatar_url": "https://avatars.githubusercontent.com/u/26607840?v=4",
"created_at": "2017-03-22T18:45:45Z",
"is_verified": null,
"public_repos": 251,
"account_age_days": 3411
},
"license": {
"state": "custom",
"spdx_id": null,
"raw_spdx": "NOASSERTION",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [],
"recent_commits": [
{
"oid": "8787136b6c8bf72752ebcffad1520c2a847b5276",
"body": "…d-tools\n\nRemove deprecated Prompt Workbench and Analyze Diff tools (0.19.0)",
"is_bot": false,
"headline": "Merge pull request #181 from CircleCI-Public/webster/remove-deprecate…",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-07-19T18:12:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c452302046528554fd25faab37b4ef9c00694c7",
"body": "The Prompt Workbench feature (create_prompt_template, recommend_prompt_template_tests,\nrun_evaluation_tests) has been shut down. The analyze_diff tool depended on the Circlet\nbackend which has also been decommissioned. Removes all associated source, tests, client\ncode, and schema definitions.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove deprecated Prompt Workbench and Analyze Diff tools (0.19.0)",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-19T17:42:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a4d7b3ebf16ca94b051f7b54581d680f99a59d05",
"body": "Use a more recent npm version.",
"is_bot": false,
"headline": "Merge pull request #180 from CircleCI-Public/webster/use-11.18.0",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-07-17T17:49:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "783ea4a346d14731c85f9edbc3c5662c00ac5371",
"body": null,
"is_bot": false,
"headline": "Apply suggestion from @meeech",
"author_name": "mitchell amihod",
"author_login": "meeech",
"committed_at": "2026-07-17T17:47:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "709003c579f705140814db0e1c8a8a4b79246806",
"body": null,
"is_bot": false,
"headline": "Use a more recent npm version.",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-17T17:41:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f90b130ee73dc952ef0886196deac62be4f1b26b",
"body": "Bump to 0.18.0",
"is_bot": false,
"headline": "Merge pull request #179 from CircleCI-Public/webster/bump-version",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-07-17T17:32:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78687eb42431e08a41a4867d923723fe4fab536b",
"body": null,
"is_bot": false,
"headline": "Bump to 0.18.0",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-17T17:31:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "790859bd9a418c9642b3822f9e68ecee03485faf",
"body": "pin to 11.5.1 for npm to unblock publishing.",
"is_bot": false,
"headline": "Merge pull request #178 from CircleCI-Public/webster/fix-npm-version",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-07-17T17:25:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97c010a92a2fb91e766cdc73bb3f1d6beee344ca",
"body": null,
"is_bot": false,
"headline": "pin to 11.5.1 for npm to unblock publishing.",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-17T17:22:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c99cbdc771af1de4a30dda6268ab7c31e0941cd9",
"body": "docs: add deprecation notice pointing to CLI",
"is_bot": false,
"headline": "Merge pull request #177 from CircleCI-Public/deprecation-notice",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-07-11T18:42:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aee7cbfa68b8b8926fb40c248f5c933f3e8b6121",
"body": null,
"is_bot": false,
"headline": "docs: add deprecation notice pointing to CLI",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-11T00:49:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "394581e2443c6d74a313027e0c0448d743b7273d",
"body": "Mark MCP tools as \"destructive\" to force user confirmation before files are written or pipelines are triggered.",
"is_bot": false,
"headline": "Add destructive hints for some MCP tools",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-07-10T21:53:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "758e80f739a5ac6698df8174f9fea696a41fbb41",
"body": null,
"is_bot": false,
"headline": "Fix type hint errors for getFlakyTests.",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-10T21:30:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a01260b0a2046d9d4427fb3f57f08c36fda4bcb",
"body": "Adds `annotations: { destructiveHint: true }` to all 8 tools that\ntrigger live CI/CD actions or write files to disk, so MCP clients\nprompt for user confirmation before execution.\n\nFixes AITEAM-830.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "security: add destructiveHint annotations to action and file-write tools",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-07-10T21:29:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e10e4a8b823b044281c1dee599d9634f7f41ed2d",
"body": "…171)\n\nValidate Host and Origin headers on all /mcp routes. Loopback is\nalways allowed; public deployments must set MCP_ALLOWED_HOSTS.\nAdds MCP_ALLOWED_HOSTS, MCP_ALLOWED_ORIGINS, and MCP_BIND_HOST env vars.\n\nBumps to 0.17.0.",
"is_bot": false,
"headline": "security: fix DNS-rebinding vulnerability in remote HTTP transport (#…",
"author_name": "Samba siva Tiyyagura",
"author_login": "stiyyagura0901",
"committed_at": "2026-06-26T14:31:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ceb4b70a4ec691267f3b6436271c694457c1381",
"body": "ci: use npm trusted publishing (OIDC) for releases",
"is_bot": false,
"headline": "Merge pull request #170 from CircleCI-Public/npm-tp-publish",
"author_name": "mitchell amihod",
"author_login": "meeech",
"committed_at": "2026-06-16T17:07:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d98483432721d5da9f949d81dea7299200353792",
"body": null,
"is_bot": false,
"headline": "chore: release 0.16.2",
"author_name": "meeech",
"author_login": "meeech",
"committed_at": "2026-06-16T17:04:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4011513ddcd59ea1f58d9284a28121091d7ba123",
"body": "pnpm 10 delegates 'pnpm publish' to the npm CLI on PATH, so the OIDC\ntoken exchange happens in npm (>= 11.5.1, installed in the job). No\npnpm version bump needed; keeps the publish flow on pnpm.",
"is_bot": false,
"headline": "ci: publish via pnpm delegating to upgraded npm for OIDC",
"author_name": "meeech",
"author_login": "meeech",
"committed_at": "2026-06-16T16:52:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "777b2852603df33a0ec75cdd57f7ee2fe875c92e",
"body": "Replace static NPM_ACCESS_TOKEN auth with OIDC-based trusted publishing.\nThe publish job now exchanges a CircleCI OIDC token for a short-lived\nnpm publish token via NPM_ID_TOKEN, and publishes with the npm CLI.\n\n- Drop the login command and NPM_ACCESS_TOKEN .npmrc write\n- Upgrade npm to >=11.5.1 in the publish job (cimg/node:22.14 ships 10.x)\n- Publish with 'npm publish --access public' instead of 'pnpm publish'",
"is_bot": false,
"headline": "ci: use npm trusted publishing (OIDC) for releases",
"author_name": "meeech",
"author_login": "meeech",
"committed_at": "2026-06-16T16:17:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a06e26c09f1c77a72f38f3a97aeaa20fa26ef8c3",
"body": "…tests-command-injection\n\nfix(security): prevent command injection in run_evaluation_tests",
"is_bot": false,
"headline": "Merge pull request #169 from CircleCI-Public/security/run-evaluation-…",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2026-06-10T16:04:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d85520a8253e6fab0c1c55c961c403c4dce24975",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(changelog): add 0.16.1 security + breaking-change entry",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2026-06-09T20:45:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8bd95c821cc2e0d003270e7dd651b3d0d7a2b478",
"body": "The run_evaluation_tests tool interpolated the caller-supplied\npromptFiles[].fileName (an unconstrained z.string()) unquoted into shell\ncommands inside a generated CircleCI config that is then executed by the\npipeline. A fileName such as `x.yml; <shell>; #` escaped into arbitrary\ncommand execution i\n[…]\n required. Verified end-to-end against the built server\nover stdio (malicious fileName rejected pre-handler; clean name proceeds).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(security): prevent command injection in run_evaluation_tests",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2026-06-09T20:37:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c25965d71078b69701a022a8dda0645d110aaf8b",
"body": "chore: release 0.16.0",
"is_bot": false,
"headline": "Merge pull request #168 from CircleCI-Public/chore/release-0.16.0",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2026-06-09T12:50:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b375473a4d8e03ca1c0d3cf033ce21da8949893d",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: release 0.16.0",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2026-06-09T11:49:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e06b3ef90c8b97d8bec2e7791553377e7a912478",
"body": "Remote servers can accept each developer's CircleCI PAT via Authorization\nheader, with optional REQUIRE_REQUEST_TOKEN and shared-token fallback.",
"is_bot": false,
"headline": "Add per-request token auth for remote MCP deployments. (#165)",
"author_name": "Samba siva Tiyyagura",
"author_login": "stiyyagura0901",
"committed_at": "2026-06-08T16:17:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a27722d9682759eda890ee80efdc7c0ca016763e",
"body": "…-to-file\n\nfeat(get_build_failure_logs): add optional outputDir to write full logs to file",
"is_bot": false,
"headline": "Merge pull request #162 from CircleCI-Public/webster/write-large-logs…",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-04-27T13:23:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e703456a5e0ab87c37172288fed677f7fe6a282",
"body": "…gs to file\n\nWhen outputDir is provided, the full build logs are written to a file on\ndisk and the file path is returned instead of truncating inline. When\noutputDir is omitted, the existing truncation behavior is preserved.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(get_build_failure_logs): add optional outputDir to write full lo…",
"author_name": "webster",
"author_login": null,
"committed_at": "2026-04-24T22:10:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b14903752d1976fb6e47b34b438ceee733d6ee56",
"body": "…-parsing-bug-5f4f\n\nfix(schemas): fix labels field schema to use object format (DR-413)",
"is_bot": false,
"headline": "Merge pull request #160 from CircleCI-Public/cursor/fix-labels-schema…",
"author_name": "Alessandro Valcepina",
"author_login": "avalcepina",
"committed_at": "2026-04-21T11:57:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ab2dca7bfd646cd790ccc7208042699d0109b02",
"body": "Made-with: Cursor",
"is_bot": false,
"headline": "chore: release 0.15.1",
"author_name": "avalcepina",
"author_login": "avalcepina",
"committed_at": "2026-04-21T08:28:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "388b2e3e6a3493f7a5b5f56640e36e794eae586a",
"body": "The CircleCI API v2 returns labels as an array of objects with key/value\nproperties (e.g. [{\"key\": \"env\", \"value\": \"prod\"}]), but the Zod schemas\nwere defining labels as z.array(z.string()), causing safeParse() to fail\nin the list_component_versions tool when resolving environments or components.\n\nC\n[…]\nt mocks to use the correct object labels format\n- Add schema-level regression tests in src/clients/__tests__/schemas.test.ts\n\nCo-authored-by: Alessandro Valcepina <avalcepina@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(schemas): fix labels field schema to use object format",
"author_name": "Cursor Agent",
"author_login": "cursoragent",
"committed_at": "2026-04-16T14:09:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "05d81149e1b947ae15f2320fdbcc54edb8813526",
"body": "fix: download all usage export CSV parts instead of only the first",
"is_bot": false,
"headline": "Merge pull request #158 from CircleCI-Public/ka.usageApiFix",
"author_name": "kurtassad",
"author_login": "kurtassad",
"committed_at": "2026-04-13T00:01:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a18f97b6a1748f54bd7c0a702611be6535fd3c16",
"body": "…rt parts",
"is_bot": false,
"headline": "Updated findUnderusedResourceClasses to work with multiple usage repo…",
"author_name": "kurtassad",
"author_login": "kurtassad",
"committed_at": "2026-04-10T04:59:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49a442c68bc555a4e8cb45a353acb6a2129178ec",
"body": null,
"is_bot": false,
"headline": "added tests for multiple URL downloads",
"author_name": "kurtassad",
"author_login": "kurtassad",
"committed_at": "2026-04-10T04:59:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb6befde230853aeee392e03d77759f649b515aa",
"body": null,
"is_bot": false,
"headline": "fix: download all usage export CSV parts instead of only the first",
"author_name": "kurtassad",
"author_login": "kurtassad",
"committed_at": "2026-04-10T04:59:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca0482d0178d4463d4c02b57014ac07707ea2bfa",
"body": "* feat: add OpenTelemetry metrics for tool usage tracking\n\n- Add OTEL dependencies (@opentelemetry/api, sdk-metrics, exporter-metrics-otlp-http, resources, semantic-conventions)\n- Create telemetry module with config, metrics, and handler wrapper\n- Track tool invocations, duration (ms), and errors wi\n[…]\n\nMetrics exported:\n- circleci.mcp.tool.invocations (counter): tool_name, status\n- circleci.mcp.tool.duration_ms (counter): tool_name, status\n- circleci.mcp.tool.errors (counter): tool_name, error_type",
"is_bot": false,
"headline": "feat: tool usage metrics (#156)",
"author_name": "Samba siva Tiyyagura",
"author_login": "stiyyagura0901",
"committed_at": "2026-04-08T11:28:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6dd662b00508c06e04711f0749ce128eb097f61b",
"body": "…ing-to-readme\n\ndocs: sort tools alphabetically and add missing tools to README",
"is_bot": false,
"headline": "Merge pull request #150 from CircleCI-Public/docs/sort-tools-add-miss…",
"author_name": "mitchell amihod",
"author_login": "meeech",
"committed_at": "2026-03-26T18:02:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "692a1bd88012b40db637a6b0ce8ac0ae29bb0214",
"body": "Sort the tools table and Tool Details sections alphabetically.\nAdd missing list_artifacts and run_evaluation_tests tools.",
"is_bot": false,
"headline": "docs: sort tools alphabetically and add missing tools to README",
"author_name": "meeech",
"author_login": "meeech",
"committed_at": "2026-03-26T17:06:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7fd09ae833abce628f48223d6f51e73303083d2c",
"body": "chore: release 0.15.0",
"is_bot": false,
"headline": "Merge pull request #148 from CircleCI-Public/release/0.15.0",
"author_name": "mitchell amihod",
"author_login": "meeech",
"committed_at": "2026-03-26T13:54:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7bbf02b1b4cdf94b19608db2c496111c710925eb",
"body": null,
"is_bot": false,
"headline": "docs: credit community contributors in changelog",
"author_name": "meeech",
"author_login": "meeech",
"committed_at": "2026-03-25T14:31:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3c354b1330b65e46334ea56ce912a4520e1a43e",
"body": "- Bump version to 0.15.0\n- Add changelog entry for listArtifacts tool and tools.list capability fix\n- Add release process documentation to CONTRIBUTING.md",
"is_bot": false,
"headline": "chore: release 0.15.0",
"author_name": "meeech",
"author_login": "meeech",
"committed_at": "2026-03-25T14:29:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b30d8816dac5f9b066cb443bba8cb950732e78a0",
"body": "Added listArtifacts tool",
"is_bot": false,
"headline": "Merge pull request #147 from nadav-dav/main",
"author_name": "Petr Malik",
"author_login": "petmal",
"committed_at": "2026-03-23T20:41:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba8cf5a6c09b3384aace061b3f7bf9f71d5f2291",
"body": null,
"is_bot": false,
"headline": "updated test",
"author_name": "Nadav Leshem",
"author_login": "nadav-dav",
"committed_at": "2026-03-16T16:17:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8e569b88caf8764b0be515d712fc40ab8c2016c",
"body": null,
"is_bot": false,
"headline": "Added listArtifacts tool",
"author_name": "Nadav Leshem",
"author_login": "nadav-dav",
"committed_at": "2026-03-16T15:28:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed4ec7edefcdb668bc7b7d079d882e8770f0af3b",
"body": "…bility\n\nRemove non-spec `tools.list` capability advertisement",
"is_bot": false,
"headline": "Merge pull request #143 from stig/fix/remove-non-spec-tools-list-capa…",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-03-03T14:58:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91415f33ee54ad6064e5ba0dc529381dacfdfe71",
"body": "The `initialize` response was including `\"tools\": { \"list\": true }` in\n`ServerCapabilities`, which is not part of the MCP spec. Strict clients\n(e.g. those using the Java `io.modelcontextprotocol` SDK) reject unknown\nfields and fail to initialise entirely.\n\nPer the spec, `ServerCapabilities.tools` on\n[…]\nr was already constructed with `{ capabilities: { tools: {} } }`,\nwhich is the correct way to advertise basic tool support. The extra\n`registerCapabilities` call was redundant and harmful.\n\nFixes #142",
"is_bot": false,
"headline": "Remove non-spec `tools.list` capability advertisement",
"author_name": "Stig Brautaset",
"author_login": "stig",
"committed_at": "2026-03-03T12:38:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2444a5e9044d3daf0c064c74fd015f6a88100d46",
"body": "fix(download_usage_api_data): improve date parameter handling",
"is_bot": false,
"headline": "Merge pull request #141 from CircleCI-Public/aiteam-140",
"author_name": "NicDiazCCI",
"author_login": "NicDiazCCI",
"committed_at": "2026-02-20T19:00:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "395b1b6fa5c3807ff7f291969e86e5c5e9b26c5b",
"body": "- add capEndDate function with tests\n- enhance inputSchema: clarify startDate & endDate descriptions with added examples\n- update handler.test\n- update change log\n- update read me\n- bump package.json to 0.14.2",
"is_bot": false,
"headline": "fix(download_usage_api_data): improve date handling",
"author_name": "Nic Diaz",
"author_login": "NicDiazCCI",
"committed_at": "2026-02-20T17:31:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1028955ff05e97136ece4ad5fe0d15ddee88ce48",
"body": "Refactor the README to reduce length while preserving all content,\nmaking it easier for users to find what they need quickly.\n\nChanges:\n- Add a tools summary table near the top so visitors immediately see\n what the MCP server can do, with links to detailed descriptions\n- Wrap each IDE/client instal\n[…]\natic Apache 2.0 badge\n to ensure correct display regardless of GitHub's license detection\n- Add @latest tag to all NPX installation commands\n- Update all notes and warnings to use GitHub alert syntax",
"is_bot": false,
"headline": "docs: restructure README for improved navigation and completeness (#140)",
"author_name": "Jim Crowley",
"author_login": "james-crowley",
"committed_at": "2026-02-19T14:40:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08cee58188dff7683b1a896ca4d910cfa8be4fd5",
"body": "feat: make MAX_LENGTH configurable via MAX_MCP_OUTPUT_LENGTH env var",
"is_bot": false,
"headline": "Merge pull request #138 from liubrandon/feat/configurable-max-mcp-output",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2026-02-11T17:13:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "548d8896acad3401854a8f33703120881fe9da70",
"body": "Allow users to configure the maximum output length for MCP responses\nvia the MAX_MCP_OUTPUT_LENGTH environment variable, defaulting to 50000.\nThis enables users to adjust truncation behavior based on their needs.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: make MAX_LENGTH configurable via MAX_MCP_OUTPUT_LENGTH env var",
"author_name": "Brandon Liu",
"author_login": null,
"committed_at": "2026-02-06T16:01:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ff4765a88dd3e929c2962b54b1a57b14cf14b56e",
"body": null,
"is_bot": false,
"headline": "Merge pull request #128 from CircleCI-Public/issues-126-potential-fix",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-10-01T15:32:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c52bb717d871b6f535fb6fc738abd317f811b8d",
"body": "Good call @loderunner. 👍\nhttps://github.com/CircleCI-Public/mcp-server-circleci/pull/128#discussion_r2391883770",
"is_bot": false,
"headline": "refactor: use nullish coalescing operator `??` instead",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-09-30T14:58:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ae0fa966e5f6506c05093f923d7610a68a11e50",
"body": "https://github.com/CircleCI-Public/mcp-server-circleci/issues/126\n\n# Issue\n\nThe issue appears to be in how the MCP server registers tools in `/src/index.ts`:\n\n`{ params: tool.inputSchema.optional() }`\n\nThis makes the entire `params` object optional, so when clients call tools without parameters, `args.params` becomes `undefined`.\n\n# Solution\n\n`const { someDestructuredVal } = args.params || {};`",
"is_bot": false,
"headline": "fix: potential fix for #126 `= args.params || {};`",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-09-25T19:53:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e6be9a103fc77ef87f52314ea2e261825b9b7d8",
"body": "fix: prevent non-MCP output on stdout",
"is_bot": false,
"headline": "Merge pull request #127 from CircleCI-Public/prevent-console-log",
"author_name": "Charles Francoise",
"author_login": "loderunner",
"committed_at": "2025-09-17T07:49:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45af9620633057c11f87b473c6d2f49993d4e7b4",
"body": null,
"is_bot": false,
"headline": "bump version",
"author_name": "Charles Francoise",
"author_login": "loderunner",
"committed_at": "2025-09-17T07:44:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9f7463e40f542a54967ecb00a0d6252008b2244",
"body": null,
"is_bot": false,
"headline": "fix: prevent non-MCP output on stdout",
"author_name": "Charles Francoise",
"author_login": "loderunner",
"committed_at": "2025-09-17T06:49:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50142f764e10aea900c3a0a03fb91a623267e1bd",
"body": "Add Troubleshooting section to README.md",
"is_bot": false,
"headline": "Merge pull request #124 from kevin-adoboe/patch-3",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-09-11T21:15:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "734cee0881d135123e70294a77b9dae71174d458",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into patch-3",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-09-11T21:15:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "54665b36dd988347501988600b7ae6c1aaaa10f8",
"body": "Update README.md",
"is_bot": false,
"headline": "Merge pull request #123 from kevin-adoboe/patch-1",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-09-11T21:14:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6de77a830ed561dd53c88462b7b1e64cebb317b7",
"body": null,
"is_bot": false,
"headline": "Trigger Build",
"author_name": "Ryan E. Hamilton",
"author_login": "ryan-circleci",
"committed_at": "2025-09-11T21:07:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "607a2bd6544537271b8c174dcbe3064dcb0aa66d",
"body": "Co-authored-by: Ryan E. Hamilton <104376313+ryan-circleci@users.noreply.github.com>",
"is_bot": false,
"headline": "Update README.md",
"author_name": "kevin-adoboe",
"author_login": "kevin-adoboe",
"committed_at": "2025-08-27T16:20:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "999028fd7efaa316e266acc97eef359dc6037588",
"body": "Co-authored-by: Ryan E. Hamilton <104376313+ryan-circleci@users.noreply.github.com>",
"is_bot": false,
"headline": "Update README.md",
"author_name": "kevin-adoboe",
"author_login": "kevin-adoboe",
"committed_at": "2025-08-27T16:19:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "926db9deeb48ce547770893cef0feb407eca2c1e",
"body": "Co-authored-by: Ryan E. Hamilton <104376313+ryan-circleci@users.noreply.github.com>",
"is_bot": false,
"headline": "Update README.md",
"author_name": "kevin-adoboe",
"author_login": "kevin-adoboe",
"committed_at": "2025-08-27T16:19:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f50587c418cff042db0b6432fbe64a0f9d0be2e6",
"body": null,
"is_bot": false,
"headline": "Add Troubleshooting section to README.md",
"author_name": "kevin-adoboe",
"author_login": "kevin-adoboe",
"committed_at": "2025-08-25T17:57:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d66a5ce06357705bdbf1631c4641f9f6a36d268",
"body": "Add @latest tag to all NPX installation commands across Cursor, VS Code, Claude Desktop, Claude Code, Windsurf, and Amazon Q Developer sections to ensure users always install the most recent version of @circleci/mcp-server-circleci package.",
"is_bot": false,
"headline": "Update README.md",
"author_name": "kevin-adoboe",
"author_login": "kevin-adoboe",
"committed_at": "2025-08-20T22:01:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "070d7e708c40ae18308a1719b623b2dfdc6535dd",
"body": "update version to 0.14.0",
"is_bot": false,
"headline": "Merge pull request #120 from CircleCI-Public/update-version-v14",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2025-08-12T14:29:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79fd08258a080a7867ee9be4df9b98f55d7ad9cd",
"body": null,
"is_bot": false,
"headline": "update version to 0.14.0",
"author_name": "Brandon Niu",
"author_login": "niubrandon",
"committed_at": "2025-08-12T13:56:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "668cce3231d3abf57f5df26b0a1516dab61df31f",
"body": "feat: Add Usage API Downloader and Underused Resource Class Identifier",
"is_bot": false,
"headline": "Merge pull request #119 from felixshiftellecon/add-usage-api-downloader",
"author_name": "Nick Smith",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-12T13:17:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44a71e687aa0d5eadaf320a0e15a68a62fccbf69",
"body": null,
"is_bot": false,
"headline": "fix spacing in REAMDME",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-11T17:51:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2e1d644af413b9669f285d3319a59494308a1f9",
"body": null,
"is_bot": false,
"headline": "trigger ci",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-11T17:44:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b584f3cf048ead692d20e443bbe178afdf535b6",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into add-usage-api-downloader",
"author_name": "Nick Smith",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-11T17:41:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f35030288b8efacee9fd34231e5447d545ac345",
"body": "…tool\n\n[REL-4165] Splitting part of the rollback tool logic into a new list component versions tool",
"is_bot": false,
"headline": "Merge pull request #117 from CircleCI-Public/REL-4165_split_rollback_…",
"author_name": "Alessandro Valcepina",
"author_login": "avalcepina",
"committed_at": "2025-08-11T13:45:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6920b951e4f9e352fa102535c9bb6768084a8aea",
"body": "…ersions tool\n\nThe purpiose of these changes is to simplify the logic in the rollback tool and make the interactions with it more flexible.",
"is_bot": false,
"headline": "Splitting part of the rollback tool logic into a new list component v…",
"author_name": "avalcepina",
"author_login": "avalcepina",
"committed_at": "2025-08-11T05:59:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72950645704a2e3393023513c70b1b86121c6586",
"body": "…bump version, update changelog",
"is_bot": false,
"headline": "fix nits, remove fallbacks, update test param struct, modify readme, …",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-08T18:45:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33e58cdd3b0fe8cf12b039dcf5ca98788bb6a0f7",
"body": null,
"is_bot": false,
"headline": "add param descriptions for both tools",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T21:44:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e26de0d0c425cd3cb0de7811e6a25f31eaec1d4",
"body": null,
"is_bot": false,
"headline": "reduce date range error",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T20:27:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af44a9078be7421c11e9b8579dc9a04c82ce2800",
"body": null,
"is_bot": false,
"headline": "remove optional from threshold",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T20:26:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94ece4df8bd97206400824cfe7ee04f99be3f37e",
"body": null,
"is_bot": false,
"headline": "add error for non-cloud base URLs",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T19:45:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec1f2ec36213072f465613f72a61e78070d15c46",
"body": null,
"is_bot": false,
"headline": "chore: trigger CI",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T18:42:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64b0e7aa87e931a71221c6c2c709d67f0f46c06e",
"body": null,
"is_bot": false,
"headline": "add schema and validate response data",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T18:38:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c138996eb57465ff8f37fe9a976b8718ddfcd4ea",
"body": null,
"is_bot": false,
"headline": "add JSDocs",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T17:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f49f9a32e9512cf302c03962b2536a4a57e4fe2c",
"body": null,
"is_bot": false,
"headline": "relax parser to handle edge case naming conventions",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-06T17:25:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f615484c1669ce8bf12bbaea20a09e2be2df4a09",
"body": null,
"is_bot": false,
"headline": "fix merge conflicts, upgrade mcp sdk version for new APIs",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-05T19:10:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa50e24cb4e7521e57894edd1a252bcfb9399858",
"body": null,
"is_bot": false,
"headline": "stop calculating helpers in loop",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-05T18:48:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5507fc58885c6740d4cad43c9da0d0e09779175e",
"body": "generalize datetime parser",
"is_bot": false,
"headline": "refactor, add tests,",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-08-05T18:41:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc3dff8fc2c73e2487f93e56d80e87382c7a9832",
"body": "…un_workflow\n\n[REL-4162] Updating the rollback tool so that it supports rolling back by workflow rerun",
"is_bot": false,
"headline": "Merge pull request #116 from CircleCI-Public/REL-4162_rollback_by_rer…",
"author_name": "Alessandro Valcepina",
"author_login": "avalcepina",
"committed_at": "2025-08-04T13:49:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74a1d1534887043de7f5254ecee66b22538a0112",
"body": "…ow rerun\n\nWhen the selected project has no rollback pipeline definition configured, we are going to ask the user if they want to rerun a workflow. The rest of the flow will be the same as the normal rollback flow, but, at the end, we will trigger a workflow rerun based on the workflow id associated with the selected version.",
"is_bot": false,
"headline": "Updating the rollback tool so that it supports rolling back by workfl…",
"author_name": "avalcepina",
"author_login": "avalcepina",
"committed_at": "2025-08-04T07:41:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cda8122320527ab21a7f0b56f46f27847c62688a",
"body": "fix: prevent runRollbackPipeline tool from suggesting other projects",
"is_bot": false,
"headline": "Merge pull request #114 from CircleCI-Public/do-not-select-other-project",
"author_name": "Gabriel Circleci",
"author_login": "gcirclest",
"committed_at": "2025-08-01T07:00:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24cd1d8749361d2274be209f2a0df6e1464cdef8",
"body": null,
"is_bot": false,
"headline": "fix: prevent runRollbackPipeline tool from suggesting other projects",
"author_name": "G Circlest",
"author_login": "gcirclest",
"committed_at": "2025-07-30T08:32:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6611f2b622de2edf76f8fc2a953ec774af9b2b6f",
"body": null,
"is_bot": false,
"headline": "update runrollback tool",
"author_name": "G Circlest",
"author_login": "gcirclest",
"committed_at": "2025-07-30T08:27:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "120e291579667d9dafc71667ebb9cf6c81c43d4c",
"body": "feat: add runRollbackPipeline tool",
"is_bot": false,
"headline": "Merge pull request #113 from CircleCI-Public/add-rollback-tool",
"author_name": "gcirclest",
"author_login": "gcirclest",
"committed_at": "2025-07-30T06:54:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "895dc8e5920eeca3d24340b715145d92bf3ce866",
"body": null,
"is_bot": false,
"headline": "feat: add runRollbackPipeline tool",
"author_name": "G Circlest",
"author_login": "gcirclest",
"committed_at": "2025-07-29T19:35:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aced1f8c8f97e6d7f725d6184bd61fdd79c1371a",
"body": "Remove the tool/ prefix from tool names in the list endpoint.",
"is_bot": false,
"headline": "Merge pull request #112 from CircleCI-Public/webster/remove-tools-prefix",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2025-07-28T14:55:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "091c1597dbe963159ade7be63b6d8ba1fb1c5ebe",
"body": null,
"is_bot": false,
"headline": "Remove the tool/ prefix from tool names in the list endpoint.",
"author_name": "webster",
"author_login": null,
"committed_at": "2025-07-28T14:45:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e9daad3137189413c252eb010ea7c174d9c73e6",
"body": "Update diff reviewer to accept other IDE rule systems.\n\nWe were previously only looking for cursor rules when reviewing diffs. Make the instructions more generic to use other IDE rule systems. We still assume it's a directory/file based system.",
"is_bot": false,
"headline": "Merge pull request #108 from CircleCI-Public/remove-ide-specifics",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2025-07-24T21:54:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d64e0724824b26f46f50e57edc988f994b1d378a",
"body": null,
"is_bot": false,
"headline": "Update version and changelog.",
"author_name": "webster",
"author_login": null,
"committed_at": "2025-07-24T21:52:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5721096bb5785d15518b2d761d0bf7b9cddb6d72",
"body": null,
"is_bot": false,
"headline": "Remove cursor specific rule settings to be IDE agnostic.",
"author_name": "webster",
"author_login": null,
"committed_at": "2025-07-24T21:39:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdc49937260dacbd4dc82d102ca3ce60f7492f1c",
"body": null,
"is_bot": false,
"headline": "Update tool.ts",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2025-07-24T21:35:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b677c66053e933df89d96de8ea5676b3b1121084",
"body": null,
"is_bot": false,
"headline": "run ci",
"author_name": "felixshiftellecon",
"author_login": "felixshiftellecon",
"committed_at": "2025-07-16T11:46:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0d1351af6866cbdd988a92db3cd9721d1cb6ae0",
"body": "Apply some fixes for failures that ran on the internal CI pipeline.",
"is_bot": false,
"headline": "Merge pull request #106 from CircleCI-Public/webster/lint-fixes",
"author_name": "michael-webster",
"author_login": "michael-webster",
"committed_at": "2025-07-14T14:55:15Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 0,
"commits_last_year": 94,
"latest_release_at": null,
"latest_release_tag": null,
"releases_from_tags": false,
"days_since_last_push": 5,
"active_weeks_last_year": 26,
"days_since_latest_release": null,
"mean_days_between_releases": null
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "@circleci/mcp-server-circleci",
"exists": true,
"license": "Apache-2.0",
"keywords": [],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@circleci/mcp-server-circleci",
"is_deprecated": false,
"latest_version": "0.19.0",
"repository_url": "https://github.com/CircleCI-Public/mcp-server-circleci",
"versions_count": 50,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 3,
"monthly_downloads": 142254,
"first_published_at": "2025-04-04T16:41:05.981000Z",
"latest_published_at": "2026-07-19T18:15:30.165000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 62,
"stars": 86,
"watchers": 11,
"fork_history": {
"days": [
{
"date": "2025-04-04",
"count": 1
},
{
"date": "2025-04-05",
"count": 1
},
{
"date": "2025-04-14",
"count": 1
},
{
"date": "2025-04-19",
"count": 2
},
{
"date": "2025-04-21",
"count": 1
},
{
"date": "2025-04-27",
"count": 1
},
{
"date": "2025-04-29",
"count": 1
},
{
"date": "2025-05-05",
"count": 1
},
{
"date": "2025-05-11",
"count": 1
},
{
"date": "2025-05-12",
"count": 1
},
{
"date": "2025-05-13",
"count": 2
},
{
"date": "2025-05-28",
"count": 1
},
{
"date": "2025-06-06",
"count": 2
},
{
"date": "2025-06-13",
"count": 1
},
{
"date": "2025-06-17",
"count": 1
},
{
"date": "2025-06-18",
"count": 1
},
{
"date": "2025-06-26",
"count": 1
},
{
"date": "2025-07-04",
"count": 1
},
{
"date": "2025-07-05",
"count": 1
},
{
"date": "2025-07-07",
"count": 1
},
{
"date": "2025-07-10",
"count": 1
},
{
"date": "2025-07-12",
"count": 1
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-08-12",
"count": 2
},
{
"date": "2025-08-15",
"count": 1
},
{
"date": "2025-08-20",
"count": 2
},
{
"date": "2025-08-21",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-09-26",
"count": 1
},
{
"date": "2025-09-30",
"count": 1
},
{
"date": "2025-10-24",
"count": 1
},
{
"date": "2025-11-13",
"count": 1
},
{
"date": "2025-12-07",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2026-01-12",
"count": 1
},
{
"date": "2026-01-21",
"count": 1
},
{
"date": "2026-01-22",
"count": 1
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-07",
"count": 1
},
{
"date": "2026-02-18",
"count": 1
},
{
"date": "2026-02-27",
"count": 1
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-10",
"count": 2
},
{
"date": "2026-03-15",
"count": 1
},
{
"date": "2026-03-16",
"count": 1
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-04-02",
"count": 1
},
{
"date": "2026-04-03",
"count": 1
},
{
"date": "2026-04-13",
"count": 1
},
{
"date": "2026-04-17",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-06-09",
"count": 1
},
{
"date": "2026-06-15",
"count": 1
},
{
"date": "2026-07-02",
"count": 1
},
{
"date": "2026-07-07",
"count": 1
}
],
"complete": true,
"collected": 61,
"total_forks": 62
},
"star_history": null,
"open_issues_and_prs": 9
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 23314,
"source_files_sampled": 122,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [
{
"name": "@hono/node-server",
"direct": false,
"version": "1.19.15",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.9,
"advisory_ids": [
"GHSA-frvp-7c67-39w9"
],
"fixed_version": "2.0.5",
"advisory_count": 1,
"oldest_advisory_days": 3
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"moderate": 1
},
"advisory_count": 1,
"affected_count": 1,
"assessed_count": 127,
"malicious_count": 0,
"assessed_package": "npm:@circleci/mcp-server-circleci@0.19.0",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@modelcontextprotocol/sdk",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.15.1"
},
{
"name": "chrono-node",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "2.8.3"
},
{
"name": "csv-parse",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "6.0.0"
},
{
"name": "date-fns",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "4.1.0"
},
{
"name": "express",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^4.19.2"
},
{
"name": "parse-github-url",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.3"
},
{
"name": "zod",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^3.24.2"
},
{
"name": "zod-to-json-schema",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^3.24.3"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@modelcontextprotocol/sdk",
"direct": true,
"version": "1.17.1",
"ecosystem": "npm"
},
{
"name": "chrono-node",
"direct": true,
"version": "2.8.3",
"ecosystem": "npm"
},
{
"name": "csv-parse",
"direct": true,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "date-fns",
"direct": true,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "express",
"direct": true,
"version": "4.21.2",
"ecosystem": "npm"
},
{
"name": "express",
"direct": true,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "parse-github-url",
"direct": true,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "zod",
"direct": true,
"version": "3.24.2",
"ecosystem": "npm"
},
{
"name": "zod-to-json-schema",
"direct": true,
"version": "3.24.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/aix-ppc64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.5.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.1",
"ecosystem": "npm"
},
{
"name": "@eslint/config-array",
"direct": false,
"version": "0.19.2",
"ecosystem": "npm"
},
{
"name": "@eslint/config-helpers",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "@eslint/core",
"direct": false,
"version": "0.12.0",
"ecosystem": "npm"
},
{
"name": "@eslint/core",
"direct": false,
"version": "0.13.0",
"ecosystem": "npm"
},
{
"name": "@eslint/eslintrc",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "9.23.0",
"ecosystem": "npm"
},
{
"name": "@eslint/object-schema",
"direct": false,
"version": "2.1.6",
"ecosystem": "npm"
},
{
"name": "@eslint/plugin-kit",
"direct": false,
"version": "0.2.8",
"ecosystem": "npm"
},
{
"name": "@humanfs/core",
"direct": false,
"version": "0.19.1",
"ecosystem": "npm"
},
{
"name": "@humanfs/node",
"direct": false,
"version": "0.16.6",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/retry",
"direct": false,
"version": "0.3.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/retry",
"direct": false,
"version": "0.4.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.scandir",
"direct": false,
"version": "2.1.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.stat",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.walk",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@pkgr/core",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm-eabi",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm64",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-arm64",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-x64",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-arm64",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-x64",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-gnueabihf",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-musleabihf",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-gnu",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-musl",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loongarch64-gnu",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-powerpc64le-gnu",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-gnu",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-musl",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-s390x-gnu",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-gnu",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-musl",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-arm64-msvc",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-ia32-msvc",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-msvc",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "@types/body-parser",
"direct": false,
"version": "1.19.6",
"ecosystem": "npm"
},
{
"name": "@types/connect",
"direct": false,
"version": "3.4.38",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "@types/express",
"direct": false,
"version": "5.0.3",
"ecosystem": "npm"
},
{
"name": "@types/express-serve-static-core",
"direct": false,
"version": "5.0.6",
"ecosystem": "npm"
},
{
"name": "@types/http-errors",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/mime",
"direct": false,
"version": "1.3.5",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "22.13.13",
"ecosystem": "npm"
},
{
"name": "@types/parse-github-url",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@types/qs",
"direct": false,
"version": "6.14.0",
"ecosystem": "npm"
},
{
"name": "@types/range-parser",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "@types/send",
"direct": false,
"version": "0.17.5",
"ecosystem": "npm"
},
{
"name": "@types/serve-static",
"direct": false,
"version": "1.15.8",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/eslint-plugin",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/parser",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/type-utils",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/utils",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "@vitest/expect",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@vitest/mocker",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@vitest/pretty-format",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@vitest/runner",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@vitest/snapshot",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@vitest/spy",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@vitest/utils",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "accepts",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "accepts",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.14.1",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "anymatch",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "array-flatten",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "assertion-error",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "binary-extensions",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.3",
"ecosystem": "npm"
},
{
"name": "body-parser",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "bytes",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "cac",
"direct": false,
"version": "6.7.14",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "chai",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "check-error",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "0.5.4",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "content-type",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": false,
"version": "0.7.1",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": false,
"version": "0.7.2",
"ecosystem": "npm"
},
{
"name": "cookie-signature",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "cookie-signature",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "cors",
"direct": false,
"version": "2.8.5",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "6.0.6",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "dayjs",
"direct": false,
"version": "1.11.13",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "2.6.9",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "deep-eql",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "destroy",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "ee-first",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "end-of-stream",
"direct": false,
"version": "1.4.4",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.25.1",
"ecosystem": "npm"
},
{
"name": "escape-html",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "9.23.0",
"ecosystem": "npm"
},
{
"name": "eslint-config-prettier",
"direct": false,
"version": "10.1.1",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-prettier",
"direct": false,
"version": "5.2.5",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "10.3.0",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "etag",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "eventsource",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "eventsource-parser",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "execa",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "expect-type",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "express-rate-limit",
"direct": false,
"version": "7.5.1",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-diff",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "fast-glob",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.19.1",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "finalhandler",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "finalhandler",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "forwarded",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "fresh",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "fresh",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "get-stream",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "get-tsconfig",
"direct": false,
"version": "4.10.0",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "14.0.0",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graphemer",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.4.24",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ignore-by-default",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "interpret",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "ipaddr.js",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "is-binary-path",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-promise",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash.merge",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "loupe",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.17",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "media-typer",
"direct": false,
"version": "0.3.0",
"ecosystem": "npm"
},
{
"name": "media-typer",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "merge-descriptors",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "merge-descriptors",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "methods",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mime",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.54.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.11",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "nice-try",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "nodemon",
"direct": false,
"version": "3.1.9",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "npm-run-path",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "on-finished",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "p-finally",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "parent-module",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "parseurl",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "0.1.12",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "8.2.0",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "pathval",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pkce-challenge",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.3",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.5.3",
"ecosystem": "npm"
},
{
"name": "prettier-linter-helpers",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "proxy-addr",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "pstree.remy",
"direct": false,
"version": "1.1.8",
"ecosystem": "npm"
},
{
"name": "pump",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.13.0",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.14.0",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "range-parser",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "raw-body",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "raw-body",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "rechoir",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.10",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-pkg-maps",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "4.38.0",
"ecosystem": "npm"
},
{
"name": "router",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "5.7.2",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.1",
"ecosystem": "npm"
},
{
"name": "send",
"direct": false,
"version": "0.19.0",
"ecosystem": "npm"
},
{
"name": "send",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "serve-static",
"direct": false,
"version": "1.16.2",
"ecosystem": "npm"
},
{
"name": "serve-static",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "shelljs",
"direct": false,
"version": "0.9.2",
"ecosystem": "npm"
},
{
"name": "shx",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "siginfo",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "simple-update-notifier",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "stackback",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "std-env",
"direct": false,
"version": "3.8.1",
"ecosystem": "npm"
},
{
"name": "strip-eof",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "synckit",
"direct": false,
"version": "0.10.3",
"ecosystem": "npm"
},
{
"name": "tinybench",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "tinypool",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "tinyrainbow",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "tinyspy",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "toidentifier",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "touch",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsx",
"direct": false,
"version": "4.19.3",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "type-is",
"direct": false,
"version": "1.6.18",
"ecosystem": "npm"
},
{
"name": "type-is",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.8.2",
"ecosystem": "npm"
},
{
"name": "typescript-eslint",
"direct": false,
"version": "8.29.0",
"ecosystem": "npm"
},
{
"name": "undefsafe",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.20.0",
"ecosystem": "npm"
},
{
"name": "unpipe",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "utils-merge",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "vary",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "6.2.4",
"ecosystem": "npm"
},
{
"name": "vite-node",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "vitest",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "why-is-node-running",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 373,
"direct_count": 9,
"indirect_count": 364
}
},
"maintainership": {
"issues": {
"open_prs": 9,
"merged_prs": 113,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 28
},
"bus_factor": 4,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "ryan-circleci",
"commits": 72,
"avatar_url": "https://avatars.githubusercontent.com/u/104376313?v=4"
},
{
"type": "User",
"login": "niubrandon",
"commits": 36,
"avatar_url": "https://avatars.githubusercontent.com/u/140449556?v=4"
},
{
"type": "User",
"login": "joel-thompson",
"commits": 34,
"avatar_url": "https://avatars.githubusercontent.com/u/17709309?v=4"
},
{
"type": "User",
"login": "stiyyagura0901",
"commits": 26,
"avatar_url": "https://avatars.githubusercontent.com/u/40207674?v=4"
},
{
"type": "User",
"login": "felixshiftellecon",
"commits": 26,
"avatar_url": "https://avatars.githubusercontent.com/u/57482070?v=4"
},
{
"type": "User",
"login": "EnoshAnwar",
"commits": 20,
"avatar_url": "https://avatars.githubusercontent.com/u/22925321?v=4"
},
{
"type": "User",
"login": "michael-webster",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/2797814?v=4"
},
{
"type": "User",
"login": "NicDiazCCI",
"commits": 15,
"avatar_url": "https://avatars.githubusercontent.com/u/114943819?v=4"
},
{
"type": "User",
"login": "jvincent42",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/6151820?v=4"
},
{
"type": "User",
"login": "meeech",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/4623?v=4"
}
],
"contributors_sampled": 24,
"top_contributor_share": 0.228
},
"quality_signals": {
"has_ci": false,
"has_tests": true,
"ci_workflows": [],
"has_docs_dir": false,
"linter_configs": [
"eslint.config.js"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 5,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 10,
"reason": "all changesets reviewed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 5 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 9,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "26 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "42 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "8787136b6c8bf72752ebcffad1520c2a847b5276",
"ran_at": "2026-07-25T17:10:12Z",
"aggregate_score": 5.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-19T18:12:50Z",
"oldest_open_prs": [
{
"number": 115,
"created_at": "2025-07-31T04:12:55Z",
"last_comment_at": "2026-03-20T20:07:43Z",
"last_comment_author": "tibbon"
},
{
"number": 129,
"created_at": "2025-09-30T03:38:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 133,
"created_at": "2025-11-14T12:47:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 137,
"created_at": "2026-01-12T20:45:13Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 146,
"created_at": "2026-03-10T09:14:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 151,
"created_at": "2026-03-27T08:18:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 161,
"created_at": "2026-04-22T06:59:14Z",
"last_comment_at": "2026-04-22T06:59:16Z",
"last_comment_author": "linear"
},
{
"number": 163,
"created_at": "2026-05-18T05:35:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 175,
"created_at": "2026-07-02T13:31:00Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-19T18:12:49Z",
"ci_last_conclusion": null,
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/CircleCI-Public/mcp-server-circleci",
"host": "github.com",
"name": "mcp-server-circleci",
"owner": "CircleCI-Public"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"security": 62,
"vitality": 50,
"community": 70,
"governance": 85,
"engineering": 60
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 50,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"commits_last_year": 94,
"human_commit_share": 1,
"days_since_last_push": 5,
"active_weeks_last_year": 26
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "26/52 weeks with commits",
"points": 18,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 26
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "94 commits in the last year",
"points": 17.8,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 94
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "26 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "critical",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 1,
"inputs": {
"releases_count": 0
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "no releases published",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_releases_published",
"params": {}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "no releases",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_releases",
"params": {}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "no releases",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_releases",
"params": {}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 5,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 5 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 5
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 70,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 52,
"inputs": {
"forks": 62,
"stars": 86,
"watchers": 11,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "86 stars",
"points": 31.3,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 86
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "62 forks",
"points": 14.9,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 62
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "11 watchers",
"points": 5.6,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 11
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "license file present, not a recognized license",
"points": 16.9,
"status": "partial",
"details": [
{
"code": "license_custom",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 86,
"inputs": {
"packages": [
"@circleci/mcp-server-circleci"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 142254
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "142,254 downloads/month across npm",
"points": 68.7,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 142254,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "excellent",
"name": "Sustainability & Governance",
"value": 85,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"bus_factor": 4,
"contributors_sampled": 24,
"top_contributor_share": 0.228
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "4 contributor(s) cover half of all commits",
"points": 43.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 4
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 23% of commits",
"points": 17.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 23
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "24 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 24
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 86,
"inputs": {
"merged_prs": 113,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 28
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "113/141 decided PRs merged",
"points": 30.7,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 113,
"decided": 141
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "all changesets reviewed",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"followers": 230,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "CircleCI-Public",
"public_repos": 251,
"account_age_days": 3411
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "230 followers of CircleCI-Public",
"points": 17,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 230,
"login": "CircleCI-Public"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "251 public repos, account ~9 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 251
}
},
{
"code": "account_age_years",
"params": {
"years": 9
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"@circleci/mcp-server-circleci"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "50 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 50
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 60,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"has_ci": false,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "eslint.config.js",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"topics": [
"mcp-server",
"modelcontextprotocol"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "2 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 2
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 62,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 55,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 14,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 4,
"scorecard_aggregate": 5.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "all changesets reviewed",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "26 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "42 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Matched the npm:@circleci/mcp-server-circleci@0.19.0 runtime dependency closure — what installing the published package pulls in — 127 packages. Reachability is not analyzed.",
"notes": [
{
"code": "advisories_scope_published",
"params": {
"package": "npm:@circleci/mcp-server-circleci@0.19.0",
"assessed": 127
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 88,
"inputs": {
"source": "osv",
"advisories": 1,
"affected_packages": 1,
"assessed_packages": 127,
"unassessed_packages": 0,
"affected_by_severity": "moderate 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
"points": 13.2,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "@hono/node-server 1.19.15 (moderate 5.9)"
}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory has been public longer than 90 days",
"points": 40,
"status": "met",
"details": [
{
"code": "advisories_none_stale",
"params": {
"days": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 127,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 5
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 54,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 35,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.66,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "66 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 35.2,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 66,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"pnpm-lock.yaml"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0.07,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "eslint.config.js",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "7 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 7,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 23314,
"source_files_sampled": 122,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/122 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 122,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "critical",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-25T17:10:36.280140Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/c/CircleCI-Public/mcp-server-circleci.svg",
"full_name": "CircleCI-Public/mcp-server-circleci",
"license_state": "custom",
"license_spdx": null
}