{
  "protocolVersion": "1.0",
  "name": "Infervo",
  "description": "Infervo detects a company's martech stack from a website URL using deterministic browser-runtime fingerprinting and public DNS email-infrastructure attribution.",
  "version": "1.0.0",
  "provider": {
    "name": "Infervo",
    "url": "https://staging.infervo.app"
  },
  "documentationUrl": "https://staging.infervo.app/agents",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "preferredTransport": "MCP",
  "url": "https://staging.infervo.app/api/mcp",
  "supportedInterfaces": [
    {
      "url": "https://staging.infervo.app/api/mcp",
      "protocolBinding": "MCP",
      "protocolVersion": "2025-06-18"
    }
  ],
  "endpoints": {
    "mcp": {
      "url": "https://staging.infervo.app/api/mcp",
      "transport": "streamable-http",
      "protocol": "mcp-2025-06-18"
    },
    "openapi": {
      "url": "https://staging.infervo.app/api/cli/openapi.json",
      "version": "3.1.0"
    },
    "llms": "https://staging.infervo.app/llms.txt"
  },
  "securitySchemes": {
    "bearerToken": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "inv_pat",
      "description": "Infervo personal access token minted at /app/settings/tokens."
    },
    "oauth2": {
      "type": "oauth2",
      "authorizationUrl": "https://staging.infervo.app/oauth/authorize",
      "tokenUrl": "https://staging.infervo.app/api/oauth/token",
      "scopes": {
        "read": "Read scans, batches, comparisons, and watches.",
        "write": "Create scans, batches, memos, and watches."
      }
    }
  },
  "security": [
    {
      "bearerToken": []
    },
    {
      "oauth2": [
        "read"
      ]
    }
  ],
  "skills": [
    {
      "id": "scan_martech",
      "name": "Scan a website's martech stack",
      "description": "Render a company URL in a headless browser and detect marketing, analytics, CRM/ESP, ads, ecommerce, payments, consent, server-side tagging, and DNS email infrastructure.",
      "tags": [
        "scan",
        "martech"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "write"
      ]
    },
    {
      "id": "list_scans",
      "name": "List recent scans",
      "description": "List workspace scan history, including status, quality state, project slug, and tool counts.",
      "tags": [
        "scan",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "list_scan_batches",
      "name": "List scan batches",
      "description": "List workspace scan batches, including progress and status.",
      "tags": [
        "batch",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "create_scan_batch",
      "name": "Create scan batch",
      "description": "Queue up to 50 URLs and optionally receive a signed completion webhook.",
      "tags": [
        "batch",
        "write"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "write"
      ]
    },
    {
      "id": "get_scan_batch",
      "name": "Get scan batch",
      "description": "Fetch one batch status and child scan summaries.",
      "tags": [
        "batch",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "get_scan",
      "name": "Get one scan",
      "description": "Fetch one scan report, normalized detections, evidence, and raw scanner summary.",
      "tags": [
        "scan",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "get_scan_diff",
      "name": "Diff a scan",
      "description": "Compare one scan with the previous scan of the same project and domain.",
      "tags": [
        "scan",
        "diff",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "compare_stacks",
      "name": "Compare stacks",
      "description": "Build a tools-by-domains matrix from the latest scan of each requested domain.",
      "tags": [
        "compare",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "generate_memo",
      "name": "Generate AI memo",
      "description": "Generate or return a cached optional memo over detected vendor names only.",
      "tags": [
        "memo",
        "write"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "write"
      ]
    },
    {
      "id": "list_watches",
      "name": "List watched domains",
      "description": "List scheduled change-alert watches. Signing secrets are returned only for write-scoped callers.",
      "tags": [
        "watch",
        "read"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "read"
      ]
    },
    {
      "id": "create_watch",
      "name": "Create watch",
      "description": "Create or update a scheduled domain watch with signed webhook alerts.",
      "tags": [
        "watch",
        "write"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "write"
      ]
    },
    {
      "id": "delete_watch",
      "name": "Delete watch",
      "description": "Delete a watched domain by id.",
      "tags": [
        "watch",
        "write"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "scopes": [
        "write"
      ]
    }
  ],
  "signatures": []
}