{"openapi":"3.1.0","info":{"title":"CI Triage x402 — Developer Reliability Tools","description":"Deterministic CI/CD failure diagnosis, repair planning, test-report parsing, workflow validation, and secret-safe developer utilities paid per call through x402.","contact":{"name":"CI Triage x402 operator"},"license":{"name":"Proprietary API access; pay per call"},"version":"2.0.0"},"paths":{"/v1/triage":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Triage a CI/CD failure log","description":"Parse a CI, build, compiler, dependency, container, lint, or test log into a secret-redacted failure type, primary error, useful trace, fix category, and confidence score. Use it to analyze build logs and identify the first actionable root-cause signal.","operationId":"ci-log-triage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ci-Log-Triage"},"example":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.002","x-x402-price":"$0.002","x-payment-info":{"price":{"amount":"$0.002","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["triage CI log","analyze build failure","extract CI error","classify test failure"]}},"/v1/fingerprint":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Fingerprint and deduplicate a CI failure","description":"Generate a stable, secret-free fingerprint from a build or test failure so agents can group duplicate CI errors across changing line numbers, timestamps, paths, identifiers, and retry attempts.","operationId":"ci-failure-fingerprint","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ci-Failure-Fingerprint"},"example":{"fingerprint":"ci1:0123456789abcdef01234567","failure_type":"typescript","normalized_message":"error ts<n>: type string is not assignable"}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.001","x-x402-price":"$0.001","x-payment-info":{"price":{"amount":"$0.001","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["deduplicate CI failures","fingerprint build error","group recurring test failures"]}},"/v1/redact":{"post":{"tags":["developer-tools","security","redaction"],"summary":"Redact credentials and clean a build log","description":"Strip ANSI and runner noise while redacting GitHub tokens, AWS access keys, bearer credentials, JWTs, API keys, passwords, and common secret assignments from CI/CD logs before an agent stores, shares, or analyzes them.","operationId":"redact-build-log-secrets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedactRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Redact-Build-Log-Secrets"},"example":{"redacted_log":"Authorization: Bearer [REDACTED]","line_count":1,"truncated":false}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.001","x-x402-price":"$0.001","x-payment-info":{"price":{"amount":"$0.001","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["redact secrets from build logs","sanitize CI log","remove tokens from logs"]}},"/v1/github-run":{"get":{"tags":["developer-tools","github","github-actions","ci-cd"],"summary":"Diagnose a public GitHub Actions failure","description":"Analyze a public GitHub Actions run URL using failed-job metadata and check annotations. Return the failing job and step, root-cause classification, redacted evidence, and repair guidance without requesting a GitHub token or pretending public raw logs are accessible.","operationId":"github-actions-failure-diagnosis","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","description":"Public github.com Actions run URL.","examples":["https://github.com/owner/repo/actions/runs/123456"],"title":"Url"},"description":"Public github.com Actions run URL."}],"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Github-Actions-Failure-Diagnosis"},"example":{"success":true,"run":{"id":123456,"repository":"repo"},"failing_step":{"name":"pytest","conclusion":"failure"},"failure":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96}}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.005","x-x402-price":"$0.005","x-payment-info":{"price":{"amount":"$0.005","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["diagnose GitHub Actions failure","summarize failed GitHub workflow","analyze GitHub check annotations"]}},"/v1/batch-triage":{"post":{"tags":["developer-tools","ci-cd","batch","logs"],"summary":"Triage up to 25 CI failure logs","description":"Analyze as many as twenty-five CI, compiler, dependency, container, lint, and test logs in one paid call. Return a consistent secret-redacted diagnosis for every input so an agent can process a failed build matrix efficiently.","operationId":"batch-ci-log-triage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchLogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Batch-Ci-Log-Triage"},"example":{"count":1,"results":[{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96}]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.01","x-x402-price":"$0.01","x-payment-info":{"price":{"amount":"$0.01","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["batch CI triage","analyze multiple build logs","process CI failure matrix"]}},"/v1/diagnose-and-fix":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Diagnose a CI failure and generate a repair plan","description":"Turn one failing build, test, compiler, dependency, lint, or container log into an ordered diagnosis with likely root cause, redacted evidence, a focused rerun command, concrete repair steps, and a stable failure fingerprint.","operationId":"diagnose-ci-failure-and-fix","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diagnose-Ci-Failure-And-Fix"},"example":{"success":true,"diagnosis":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96},"likely_root_cause":"A test assertion did not match the observed value.","rerun_command":"pytest -q tests/test_math.py::test_total","repair_steps":["Reproduce the single failing test.","Compare expected and actual values."],"fingerprint":"ci1:0123456789abcdef01234567"}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.02","x-x402-price":"$0.02","x-payment-info":{"price":{"amount":"$0.02","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["analyze build log root cause","fix CI failure","generate CI repair plan","diagnose test failure"]}},"/v1/ci-rescue-pack":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Run the complete CI rescue workflow","description":"Run redaction, root-cause triage, duplicate fingerprinting, focused rerun selection, repair planning, and reviewer-ready Markdown handoff in one call. This is the complete build-failure workflow for an autonomous coding agent.","operationId":"complete-ci-rescue-workflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Complete-Ci-Rescue-Workflow"},"example":{"success":true,"diagnosis":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96},"repair_plan":{"rerun_command":"pytest -q tests/test_math.py::test_total"},"markdown_handoff":"# CI failure handoff\n\n## Root cause\nA test assertion failed."}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.05","x-x402-price":"$0.05","x-payment-info":{"price":{"amount":"$0.05","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["complete CI rescue","repair failed build","CI failure workflow","developer handoff from build log"]}},"/v1/junit-summary":{"post":{"tags":["developer-tools","testing","junit","xml"],"summary":"Parse and summarize a JUnit XML test report","description":"Parse bounded JUnit XML from pytest, Jest, Maven, Gradle, or other test runners. Return suite totals, pass rate, duration, failed test names, failure messages, and the files or classes that need attention without executing embedded content.","operationId":"parse-junit-xml-test-report","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XmlReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Parse-Junit-Xml-Test-Report"},"example":{"success":true,"totals":{"tests":1,"failed":1,"passed":0},"pass_rate":0.0}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.004","x-x402-price":"$0.004","x-payment-info":{"price":{"amount":"$0.004","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["parse JUnit XML","summarize test report","find failed tests"]}},"/v1/sarif-summary":{"post":{"tags":["developer-tools","security","sarif","code-scanning"],"summary":"Summarize a SARIF security or code-scanning report","description":"Normalize a SARIF 2.x report from CodeQL, Semgrep, Trivy, or another scanner into severity counts, top rules, prioritized findings, file locations, and concise messages suitable for an agent's remediation queue.","operationId":"summarize-sarif-security-report","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SarifRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Summarize-Sarif-Security-Report"},"example":{"success":true,"total_findings":1,"severity":{"error":1},"top_rules":[{"rule_id":"SEC001","count":1}]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.006","x-x402-price":"$0.006","x-payment-info":{"price":{"amount":"$0.006","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["summarize SARIF report","parse CodeQL results","prioritize code scanning findings"]}},"/v1/npm-error":{"post":{"tags":["developer-tools","npm","dependencies","nodejs"],"summary":"Diagnose an npm installation or dependency error","description":"Identify npm and Node.js failure modes such as ERESOLVE peer conflicts, ETARGET versions, engine mismatches, node-gyp builds, permission errors, missing files, lockfile drift, and registry/network failures, then return safe recovery commands.","operationId":"diagnose-npm-install-error","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diagnose-Npm-Install-Error"},"example":{"success":true,"issue_type":"peer_dependency_conflict","commands":["npm explain <package>","npm install"]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.004","x-x402-price":"$0.004","x-payment-info":{"price":{"amount":"$0.004","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["fix npm install error","diagnose ERESOLVE","repair Node dependency conflict"]}},"/v1/pip-conflict":{"post":{"tags":["developer-tools","python","pip","dependencies"],"summary":"Diagnose a pip or Python dependency conflict","description":"Parse pip and Python packaging failures including ResolutionImpossible, incompatible requirements, missing distributions, wheel build failures, Python-version constraints, SSL/index errors, and broken environments, then return focused verification and repair steps.","operationId":"diagnose-pip-dependency-conflict","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diagnose-Pip-Dependency-Conflict"},"example":{"success":true,"issue_type":"resolution_impossible","commands":["python -m pip check","python -m pip install --dry-run -r requirements.txt"]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.004","x-x402-price":"$0.004","x-payment-info":{"price":{"amount":"$0.004","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["diagnose pip dependency conflict","fix ResolutionImpossible","repair Python package install"]}},"/v1/github-actions-lint":{"post":{"tags":["developer-tools","github-actions","yaml","lint"],"summary":"Lint a GitHub Actions workflow YAML","description":"Parse a GitHub Actions workflow as inert YAML and report structural errors, missing jobs or runners, malformed steps, dangerous pull_request_target patterns, mutable action references, overly broad permissions, and common expression mistakes.","operationId":"lint-github-actions-workflow-yaml","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Lint-Github-Actions-Workflow-Yaml"},"example":{"success":true,"valid":true,"job_count":1,"errors":[],"warnings":[]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.006","x-x402-price":"$0.006","x-payment-info":{"price":{"amount":"$0.006","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["lint GitHub Actions workflow","validate workflow YAML","find GitHub Actions security mistakes"]}},"/v1/docker-error":{"post":{"tags":["developer-tools","docker","containers","ci-cd"],"summary":"Diagnose a Docker image build failure","description":"Classify Docker and BuildKit errors such as missing COPY context, failed RUN commands, unavailable image manifests, apt failures, permissions, network resolution, platform mismatches, disk exhaustion, and cache problems, with focused rebuild commands.","operationId":"diagnose-docker-build-failure","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diagnose-Docker-Build-Failure"},"example":{"success":true,"issue_type":"copy_source_missing","commands":["docker build --no-cache --progress=plain ."]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.004","x-x402-price":"$0.004","x-payment-info":{"price":{"amount":"$0.004","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["diagnose Docker build failure","fix BuildKit error","explain docker build log"]}},"/v1/typescript-error":{"post":{"tags":["developer-tools","typescript","compiler","ci-cd"],"summary":"Explain a TypeScript compiler failure","description":"Extract the first actionable TypeScript diagnostic, error code, file, line, and message; group repeated diagnostics and return a focused tsc command plus repair guidance for type, module, configuration, and declaration failures.","operationId":"explain-typescript-compiler-error","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Explain-Typescript-Compiler-Error"},"example":{"success":true,"language":"typescript","diagnosis":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96},"rerun_command":"npx tsc --noEmit"}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["explain TypeScript compiler error","parse tsc diagnostics","fix TypeScript build"]}},"/v1/pytest-summary":{"post":{"tags":["developer-tools","pytest","python","testing"],"summary":"Summarize a pytest failure","description":"Extract the failed pytest node id, assertion or exception, relevant Python frames, likely cause category, focused single-test rerun command, and practical repair steps from a pytest failure log.","operationId":"summarize-pytest-failure","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Summarize-Pytest-Failure"},"example":{"success":true,"framework":"pytest","diagnosis":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96},"rerun_command":"pytest -q tests/test_math.py::test_total"}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["summarize pytest failure","parse pytest log","rerun failed Python test"]}},"/v1/jest-summary":{"post":{"tags":["developer-tools","jest","javascript","testing"],"summary":"Summarize a Jest test failure","description":"Extract the failing Jest suite and test, expected-versus-received assertion, JavaScript or TypeScript frames, focused rerun command, and repair guidance from Jest, Vitest, or compatible test output.","operationId":"summarize-jest-test-failure","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Summarize-Jest-Test-Failure"},"example":{"success":true,"framework":"jest","diagnosis":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96},"rerun_command":"npx jest path/to/test --runInBand"}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["summarize Jest failure","parse Vitest error","rerun failed JavaScript test"]}},"/v1/eslint-summary":{"post":{"tags":["developer-tools","eslint","javascript","lint"],"summary":"Parse and summarize an ESLint failure","description":"Normalize stylish, compact, and common ESLint output into error and warning counts, affected files, first actionable rule violations, focused rerun command, and whether safe automatic fixing may be available.","operationId":"parse-eslint-report","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Parse-Eslint-Report"},"example":{"success":true,"framework":"eslint","errors":1,"warnings":0,"rerun_command":"npx eslint src/app.ts"}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["parse ESLint report","summarize lint errors","find JavaScript lint failure"]}},"/v1/go-test-summary":{"post":{"tags":["developer-tools","golang","testing","compiler"],"summary":"Diagnose a Go test or build failure","description":"Parse go test, go vet, and compiler output into failed package or test, panic or compiler message, relevant Go frames, focused rerun command, and repair guidance for tests, modules, races, and compilation errors.","operationId":"diagnose-go-test-failure","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diagnose-Go-Test-Failure"},"example":{"success":true,"language":"go","rerun_command":"go test ./... -count=1","repair_steps":["Reproduce the failing package without cache."]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["diagnose Go test failure","parse golang build error","rerun failed Go test"]}},"/v1/cargo-error":{"post":{"tags":["developer-tools","rust","cargo","compiler"],"summary":"Diagnose a Rust Cargo build or test error","description":"Extract Rust compiler error codes, source locations, Cargo dependency failures, borrow-checker diagnostics, failed tests, and panics; return focused cargo commands and evidence-linked repair guidance.","operationId":"diagnose-rust-cargo-error","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diagnose-Rust-Cargo-Error"},"example":{"success":true,"language":"rust","rerun_command":"cargo check","repair_steps":["Run cargo check to reproduce the first compiler diagnostic."]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["diagnose Rust cargo error","parse rustc compiler error","fix Cargo test failure"]}},"/v1/flaky-fingerprint":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Fingerprint a flaky or intermittent CI failure","description":"Create a retry-stable fingerprint while detecting timing, race, randomness, ordering, shared-state, port, resource, and intermittent-network signals that often distinguish flaky tests from deterministic failures.","operationId":"fingerprint-flaky-test-failure","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Fingerprint-Flaky-Test-Failure"},"example":{"fingerprint":"flaky1:0123456789abcdef01234567","flaky_signals":["timeout"],"likely_flaky":true}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.002","x-x402-price":"$0.002","x-payment-info":{"price":{"amount":"$0.002","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["fingerprint flaky test","detect intermittent CI failure","group retry failures"]}},"/v1/rerun-command":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Generate a focused command to rerun a CI failure","description":"Infer a safe, non-executed rerun command from pytest, Jest, Vitest, ESLint, TypeScript, npm, pip, Docker, Go, Rust, Maven, or Gradle failure output so an agent can reproduce the smallest failing unit.","operationId":"generate-focused-ci-rerun-command","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Generate-Focused-Ci-Rerun-Command"},"example":{"framework":"pytest","command":"pytest -q tests/test_math.py::test_total","confidence":0.95}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.002","x-x402-price":"$0.002","x-payment-info":{"price":{"amount":"$0.002","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["generate CI rerun command","reproduce failed test","focused build retry command"]}},"/v1/coverage-summary":{"post":{"tags":["developer-tools","testing","coverage","reports"],"summary":"Summarize a code coverage report","description":"Parse LCOV, Cobertura XML, coverage.py JSON, Istanbul JSON summaries, and common terminal coverage tables. Return line, branch, function, and statement percentages plus threshold status in one normalized response.","operationId":"summarize-code-coverage-report","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Summarize-Code-Coverage-Report"},"example":{"success":true,"format":"lcov","lines":{"found":100,"hit":82,"percent":82.0},"passes_threshold":true}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["summarize code coverage","parse LCOV","check coverage threshold"]}},"/v1/dotenv-lint":{"post":{"tags":["developer-tools","dotenv","configuration","security"],"summary":"Lint a dotenv environment file safely","description":"Validate dotenv syntax without returning secret values. Report invalid or duplicate keys, malformed assignments, risky committed-secret key names, quoting problems, export usage, and line numbers while keeping all values private.","operationId":"validate-dotenv-environment-file","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DotenvRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Validate-Dotenv-Environment-File"},"example":{"success":true,"valid":true,"key_count":3,"issues":[{"line":2,"severity":"warning","code":"sensitive_key"}]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.002","x-x402-price":"$0.002","x-payment-info":{"price":{"amount":"$0.002","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["validate dotenv file","lint environment variables","find duplicate env keys"]}},"/v1/stack-trace":{"post":{"tags":["developer-tools","debugging","stack-trace","errors"],"summary":"Parse and normalize a stack trace","description":"Parse Python, JavaScript, TypeScript, Java, Go, and Rust stack traces into language, exception, message, and normalized frame objects with function, file, line, and column fields for downstream debugging agents.","operationId":"parse-stack-trace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Parse-Stack-Trace"},"example":{"success":true,"language":"python","exception":"AssertionError","frames":[{"file":"tests/test_math.py","line":8}]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["parse stack trace","normalize exception frames","extract file and line from error"]}},"/v1/markdown-handoff":{"post":{"tags":["developer-tools","ci-cd","logs"],"summary":"Create a reviewer-ready Markdown CI failure handoff","description":"Convert a raw failing build or test log into concise secret-redacted Markdown containing the root cause, evidence, fingerprint, reproduction command, repair checklist, and confidence for an issue, pull request, or human reviewer.","operationId":"convert-ci-failure-to-markdown-handoff","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Convert-Ci-Failure-To-Markdown-Handoff"},"example":{"success":true,"markdown":"# CI failure handoff\n\n## Root cause\nA test assertion failed."}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.004","x-x402-price":"$0.004","x-payment-info":{"price":{"amount":"$0.004","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["convert CI failure to markdown","create build failure handoff","write CI incident report"]}},"/v1/failure-cluster":{"post":{"tags":["developer-tools","ci-cd","deduplication","batch"],"summary":"Cluster recurring CI failures by fingerprint","description":"Analyze up to twenty-five build or test logs, group retries and duplicate failures by stable secret-free fingerprints, and return cluster counts, representative messages, failure types, and the highest-frequency root cause.","operationId":"cluster-recurring-ci-failures","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchLogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cluster-Recurring-Ci-Failures"},"example":{"success":true,"input_count":2,"cluster_count":1,"clusters":[{"count":2,"fingerprint":"ci1:0123456789abcdef01234567"}]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.008","x-x402-price":"$0.008","x-payment-info":{"price":{"amount":"$0.008","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["cluster CI failures","deduplicate recurring build errors","group flaky test retries"]}},"/v1/log-diff":{"post":{"tags":["developer-tools","ci-cd","diff","logs"],"summary":"Compare two CI failure logs","description":"Compare a previous and current build or test failure after secret redaction and noise normalization. Report whether the root-cause fingerprint changed, new and removed error evidence, similarity, and diagnosis before and after.","operationId":"compare-two-ci-failure-logs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogDiffRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Compare-Two-Ci-Failure-Logs"},"example":{"success":true,"same_failure":false,"similarity":0.41,"new_error_lines":["error TS2307 at src/b.ts:20"]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["compare CI logs","detect changed build failure","diff test errors"]}},"/v1/check-annotations":{"post":{"tags":["developer-tools","github","annotations","code-review"],"summary":"Summarize GitHub check annotations","description":"Normalize GitHub Checks or compatible annotation objects into severity counts, affected files, top rules, prioritized evidence, and a concise failure summary. Secret-like content is redacted before it is returned.","operationId":"summarize-github-check-annotations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationsRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Summarize-Github-Check-Annotations"},"example":{"success":true,"count":1,"severity":{"failure":1},"affected_files":["src/app.ts"]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.003","x-x402-price":"$0.003","x-payment-info":{"price":{"amount":"$0.003","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["summarize GitHub check annotations","prioritize check run findings","group code review annotations"]}},"/v1/test-report-normalize":{"post":{"tags":["developer-tools","testing","normalization","reports"],"summary":"Normalize a test report into one JSON shape","description":"Auto-detect JUnit XML, SARIF JSON, LCOV, coverage tables, pytest, Jest, ESLint, Go, Rust, and generic CI output, then return a consistent report type, status, totals, failures, diagnosis, and source-format metadata.","operationId":"normalize-test-report","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Normalize-Test-Report"},"example":{"success":true,"detected_format":"pytest","status":"failed","diagnosis":{"failure_type":"pytest","error_message":"AssertionError: assert 1 == 2","stack_trace":["tests/test_math.py:8: AssertionError"],"suggested_fix_category":"test_failure","confidence":0.96}}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.005","x-x402-price":"$0.005","x-payment-info":{"price":{"amount":"$0.005","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["normalize test report","convert CI report to JSON","auto detect build report format"]}},"/v1/secret-scan":{"post":{"tags":["developer-tools","security","secrets","ci-cd"],"summary":"Scan a build log for exposed credentials","description":"Detect likely GitHub tokens, AWS keys, bearer credentials, JWTs, private-key blocks, database URLs, API keys, passwords, and secret assignments in a CI log. Return only types, counts, line numbers, and redacted snippets—never the detected values.","operationId":"scan-build-log-for-secrets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"Successful deterministic tool result.","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan-Build-Log-For-Secrets"},"example":{"success":true,"finding_count":1,"types":{"bearer_token":1},"findings":[{"line":4,"type":"bearer_token","redacted":"Authorization: Bearer [REDACTED]"}]}}}},"402":{"description":"x402 payment required; inspect the PAYMENT-REQUIRED header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-price":"$0.002","x-x402-price":"$0.002","x-payment-info":{"price":{"amount":"$0.002","currency":"USDC"},"network":"eip155:8453","protocol":"x402-v2"},"x-buyer-intents":["scan build log for secrets","detect leaked CI credentials","find tokens in logs"]}}},"components":{"schemas":{"AnnotationsRequest":{"properties":{"annotations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":500,"minItems":1,"title":"Annotations"}},"type":"object","required":["annotations"],"title":"AnnotationsRequest"},"BatchLogRequest":{"properties":{"logs":{"items":{"$ref":"#/components/schemas/LogRequest"},"type":"array","maxItems":25,"minItems":1,"title":"Logs"}},"type":"object","required":["logs"],"title":"BatchLogRequest"},"CoverageRequest":{"properties":{"report":{"type":"string","maxLength":2000000,"minLength":1,"title":"Report"},"threshold":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Threshold","default":0.0}},"type":"object","required":["report"],"title":"CoverageRequest"},"DotenvRequest":{"properties":{"dotenv":{"type":"string","maxLength":1000000,"minLength":1,"title":"Dotenv"}},"type":"object","required":["dotenv"],"title":"DotenvRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LogDiffRequest":{"properties":{"before":{"type":"string","maxLength":1000000,"minLength":1,"title":"Before"},"after":{"type":"string","maxLength":1000000,"minLength":1,"title":"After"}},"type":"object","required":["before","after"],"title":"LogDiffRequest"},"LogRequest":{"properties":{"log":{"type":"string","maxLength":1000000,"minLength":1,"title":"Log","description":"Raw CI, build, test, compiler, dependency, or runtime log.","examples":["FAILED tests/test_math.py::test_total - AssertionError: assert 1 == 2"]},"step_name":{"type":"string","maxLength":300,"title":"Step Name","description":"Optional CI job or step name.","default":"","examples":["pytest"]}},"type":"object","required":["log"],"title":"LogRequest"},"RedactRequest":{"properties":{"log":{"type":"string","maxLength":1000000,"minLength":1,"title":"Log"}},"type":"object","required":["log"],"title":"RedactRequest"},"ReportRequest":{"properties":{"report":{"type":"string","maxLength":2000000,"minLength":1,"title":"Report"},"format":{"type":"string","maxLength":50,"title":"Format","default":"auto"}},"type":"object","required":["report"],"title":"ReportRequest"},"SarifRequest":{"properties":{"sarif":{"title":"Sarif","description":"SARIF JSON object or serialized JSON object."}},"type":"object","required":["sarif"],"title":"SarifRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkflowRequest":{"properties":{"workflow":{"type":"string","maxLength":1000000,"minLength":1,"title":"Workflow"}},"type":"object","required":["workflow"],"title":"WorkflowRequest"},"XmlReportRequest":{"properties":{"xml":{"type":"string","maxLength":2000000,"minLength":1,"title":"Xml"}},"type":"object","required":["xml"],"title":"XmlReportRequest"}}}}