WritersLogic Verifiable AI Agent Hub Audit Dependencies API

The Audit Dependencies API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for audit dependencies.

GitHub OpenAPI

Operations 1

POST /api/v1/audit-dependencies Dependency Underuse & Replacement Advisor #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/writerslogic-com:writerslogic-com-audit-dependencies-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

writerslogic-com-audit-dependencies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: WritersLogic Verifiable AI Agent Hub Audit Dependencies API
  version: 2.0.0
  description: Pay-per-call agents settled in USDC on Base via x402. Every response carries a signed provenance envelope.
  contact:
    name: WritersLogic
    url: https://writerslogic.com/agents
    email: agents@writerslogic.com
servers:
- url: https://agents.writerslogic.com
tags:
- name: Audit Dependencies
paths:
  /api/v1/audit-dependencies:
    post:
      operationId: dependency_advisor
      summary: Dependency Underuse & Replacement Advisor
      description: 'Audits the dependencies of a public GitHub repo, commit or pull request (or uploaded manifests and sources) and returns a pass/warn/fail verdict, a 0-100 risk score, the top findings with manifest file:line and the fix, and a SARIF 2.1.0 log for GitHub code scanning. Parses JS/TS, Python and Rust imports with a tokenizer-level scanner and maps them to declared npm, PyPI and crates.io dependencies. Flags unused, dev-only, undeclared and trivially used packages; checks deps.dev, the npm registry and OSV for deprecation, advisories, staleness and OpenSSF Scorecard; matches a cited table of platform replacements (fetch, crypto.randomUUID, optional chaining) and ranks alternatives in code by Scorecard, recency, dependents, size and license compatibility. Reads repos through GitHub''s API and falls back to the source archive when the API is rate limited; when some lookups still fail, it returns a signed partial result that lists what is missing. At most one optional model call maps used symbols to a replacement; deterministic mode makes none. Advisory data comes from OSV and deps.dev and can lag; findings are leads to verify, not a certification.


        Price: 0.40 USDC on Base (x402).'
      x-x402-price-usdc: '0.40'
      x-x402-amount: '400000'
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.40'
      x-audience: developer
      x-sample-url: https://agents.writerslogic.com/api/v1/samples/dependency-advisor
      security:
      - x402: []
      - apiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                repo:
                  type: string
                  minLength: 3
                  maxLength: 200
                  description: 'Public GitHub repository: owner/repo, https://github.com/owner/repo[/tree/ref], a commit URL, or a pull request URL (analyzed at the PR head).'
                ref:
                  type: string
                  maxLength: 200
                  description: Branch, tag or commit; defaults to the default branch.
                files:
                  type: array
                  maxItems: 600
                  description: 'Alternative to repo: manifests (package.json, lockfile, pyproject.toml, requirements.txt, Cargo.toml) and source files with repository-relative paths.'
                  items:
                    type: object
                    additionalProperties: false
                    required:
                    - path
                    - content
                    properties:
                      path:
                        type: string
                        minLength: 1
                        maxLength: 300
                      content:
                        type: string
                        maxLength: 400000
                ecosystems:
                  type: array
                  maxItems: 3
                  items:
                    type: string
                    enum:
                    - npm
                    - pypi
                    - cargo
                  description: Restrict the analysis; default all detected.
                mode:
                  type: string
                  enum:
                  - auto
                  - deterministic
                  description: deterministic makes no model call; auto makes at most one, only for symbols the curated table cannot decide.
                repoLicense:
                  type: string
                  maxLength: 100
                  description: SPDX id of the repository's license, for alternative ranking; detected from manifests or LICENSE when absent.
            example:
              repo: star7th/htq
              mode: auto
      responses:
        '200':
          description: Paid result with provenance
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      verdict:
                        type: string
                        enum:
                        - fail
                        - warn
                        - pass
                        - inconclusive
                        description: 'fail: a declared package has a high or critical known advisory. warn: high or medium priority findings. pass: none. inconclusive: nothing found but coverage was partial.'
                      riskScore:
                        type: integer
                        description: 0-100, computed in code from the top finding scores.
                      verdictReason:
                        type: string
                      status:
                        type: string
                        enum:
                        - complete
                        - partial
                        description: partial when source or registry lookups failed or were capped; the result is still signed and lists what is missing.
                      missing:
                        type: array
                        items:
                          type: string
                        description: What a partial result could not read or look up.
                      topFindings:
                        type: array
                        items:
                          type: object
                          description: 'Up to 5, highest priority first: rank, id, package, ecosystem, kind, severity, score, confidence, file, line (in the manifest), summary, fix.'
                      nextStep:
                        type: string
                      sarif:
                        type: object
                        description: SARIF 2.1.0 log, one result per finding located at its manifest line; uploads to GitHub code scanning as-is.
                      source:
                        type: object
                        description: Repo, pinned commit, tree size, files read, bytes, skipped files, license and where it came from.
                      ecosystems:
                        type: array
                        items:
                          type: object
                          description: 'Per ecosystem: manifests (path, lockfile kind, minimum runtime, declared count) and source files scanned.'
                      summary:
                        type: object
                        description: Counts of declared and flagged packages, findings by category (underused, outgrown, replace) and kind, high-severity count.
                      findings:
                        type: array
                        items:
                          type: object
                          description: id, kind (unused, dev-only-in-dependencies, dev-dependency-in-production, undeclared, trivial-use, native-replacement, redundant-dependency, deprecated, superseded, overlap, stale, vulnerable, behind-major), category, severity, score 0-100 (computed in code), confidence, ecosystem, package, manifest, summary, evidence, action, migrationEffort, citations.
                      replacements:
                        type: array
                        items:
                          type: object
                          description: 'Per flagged package: symbols the repo imports, the curated table entry with citations and runtime applicability, ranked alternatives (Scorecard, recency, dependents, size, license compatibility), and a per-symbol coverage check. coverage.status is FULL_COVERAGE only when every used symbol is accounted for and covered; decidedBy is table, model or none.'
                      dependencies:
                        type: array
                        items:
                          type: object
                          description: 'Every declared package: sections, range, resolved version and its source, usage footprint, and registry health.'
                      coverage:
                        type: object
                        description: complete, notes, files scanned, health checked/skipped, upstream calls, failed sources.
                      llmCalls:
                        type: integer
                        description: 0 in deterministic mode or when the curated table decided every symbol; otherwise 1.
                      decidedBy:
                        type: object
                        description: 'findings: code. replacementCoverage: symbol counts decided by the curated table, by the model, or left unreviewed.'
                      versions:
                        type: object
                        description: Version of the curated replacements table.
                      thresholds:
                        type: object
                        description: The numeric thresholds the findings were computed with.
                      wouldChangeVerdict:
                        type: array
                        items:
                          type: string
                        description: Evidence that would raise confidence or change a finding.
                  _provenance:
                    type: object
                    description: C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance
                required:
                - data
                - _provenance
        '400':
          description: Invalid request (no payment consumed)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '401':
          description: Invalid X-API-KEY
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '402':
          description: Payment required or invalid
          content:
            application/json:
              schema:
                type: object
                description: x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)
                properties:
                  x402Version:
                    type: integer
                  error:
                    type: string
                  code:
                    type: string
                  resource:
                    type: object
                  accepts:
                    type: array
                    items:
                      type: object
                  extensions:
                    type: object
        '502':
          description: Upstream failure; the payment is released or not settled
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
      tags:
      - Audit Dependencies
components:
  securitySchemes:
    x402:
      type: apiKey
      in: header
      name: PAYMENT-SIGNATURE
      description: x402 v2 payment payload (base64) sent after a 402 challenge
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY