{
  "product_id": "elyreon.signals.detect",
  "version": "1.0.0",
  "status": "AVAILABLE",
  "billing_mode": "live",
  "title": "ELYREON Signals — reproducible change detection on live datasets",
  "summary": "Runs named detectors over ELYREON's own SEC index and dataset lakes and returns the changes worth acting on. Each signal is reproducible: the detector, its parameters and a digest of its inputs are returned so a third party can re-run the calculation.",
  "capability": "signals.change_detection",
  "customer": {
    "segment": "AI agents doing monitoring",
    "buyer": "agent developer, risk or corp-dev team",
    "job_to_be_done": "watch a subject without building a filing pipeline"
  },
  "use_cases": [
    "filing cadence anomaly",
    "amendment surge",
    "disclosure silence",
    "insider Form 3/4/5 flow shift"
  ],
  "input_schema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "subject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "company",
              "industry"
            ]
          },
          "cik": {
            "type": "string",
            "pattern": "^[0-9]{1,10}$"
          },
          "ticker": {
            "type": "string",
            "maxLength": 12
          },
          "name": {
            "type": "string",
            "maxLength": 120
          }
        },
        "required": [
          "kind"
        ]
      },
      "detectors": {
        "type": "array",
        "items": {
          "enum": [
            "sec_filing_anomaly",
            "filing_cadence",
            "insider_flow",
            "silence",
            "amendment_surge"
          ]
        },
        "minItems": 1,
        "maxItems": 5
      },
      "window_days": {
        "type": "integer",
        "minimum": 30,
        "maximum": 730,
        "default": 365
      },
      "min_confidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1,
        "default": 0
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 500,
        "default": 50
      }
    },
    "required": [
      "subject",
      "detectors"
    ]
  },
  "output_schema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "product_id": {
        "type": "string"
      },
      "version": {
        "type": "string"
      },
      "generated_at": {
        "type": "string"
      },
      "signals": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "signal_id": {
              "type": "string"
            },
            "detector": {
              "type": "string"
            },
            "observed": {
              "type": "number"
            },
            "expected": {
              "type": "number"
            },
            "ratio": {
              "type": "number"
            },
            "confidence": {
              "type": "number"
            },
            "reproducibility": {
              "type": "object"
            },
            "observed_at": {
              "type": "string"
            },
            "freshness": {
              "type": "object"
            }
          },
          "required": []
        }
      },
      "detectors_run": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "detectors_skipped": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "detector": {
              "type": "string"
            },
            "reason": {
              "type": "string"
            }
          },
          "required": []
        }
      },
      "limitations": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "provenance": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "source_id": {
              "type": "string"
            },
            "engine": {
              "type": "string"
            },
            "endpoint": {
              "type": "string"
            },
            "request_digest": {
              "type": "string"
            },
            "retrieved_at": {
              "type": "string"
            },
            "rows_examined": {
              "type": "integer"
            },
            "freshness": {
              "type": "object"
            }
          },
          "required": []
        }
      }
    },
    "required": []
  },
  "auth": {
    "schemes": [
      "api_key",
      "mcp_oauth"
    ],
    "scopes": [
      "arsenal.signals.read"
    ],
    "tenant_isolation": "Detectors run against the caller's own upstream credential; results are not cached across tenants."
  },
  "pricing": {
    "model": "per_call",
    "unit": "call",
    "list_price_minor": 150,
    "ceiling_minor": 600,
    "approved": true,
    "approval_ref": "INTERNAL-REC-2026-11-14-OWNER-ARSENAL-LIST-PRICES",
    "minimum_charge_minor": 0
  },
  "resources": {
    "max_input_bytes": 4096,
    "timeout_ms": 20000,
    "max_upstream_calls": 5,
    "max_output_rows": 500,
    "max_concurrency": 8
  },
  "errors": [
    "invalid_input",
    "unauthorized",
    "forbidden_scope",
    "insufficient_credit",
    "service_disabled",
    "upstream_unavailable",
    "resource_limit_exceeded",
    "timeout",
    "idempotency_conflict",
    "internal_error"
  ],
  "retry": {
    "idempotency": "required",
    "safe_to_retry": true,
    "on_failure": "released, no charge; same-key retry replays the recorded outcome"
  },
  "data": {
    "sources": [
      "ELYREON Data Foundry: sec_filing_index",
      "ELYREON intel surfaces (16 SEC index surfaces)"
    ],
    "licensing": "Derived from SEC public filing index metadata; no filing text.",
    "restrictions": [
      "signals are statistical, not investment advice",
      "coverage gaps can produce false silence"
    ]
  },
  "upstream": {
    "engine": "foundry",
    "endpoints": [
      "/v1/intel/cadence-baseline",
      "/v1/intel/bursts",
      "/v1/intel/silence",
      "/v1/intel/amendment-profile",
      "/v1/intel/insider-flow",
      "/v1/events/anomaly"
    ]
  },
  "limitations": [
    "a subject outside lake coverage yields insufficient-evidence signals rather than silence",
    "detector thresholds are documented constants, not learned",
    "a detector or claim whose evidence cannot be examined is reported as insufficient_evidence rather than as a negative finding; absence is not provable by this product version"
  ],
  "docs": "docs/products/signals.md",
  "readiness": {
    "implementation": "present",
    "tests": "test/signals.test.ts",
    "benchmark": "units in UNIT_ECONOMICS.md"
  }
}