{
  "product_id": "elyreon.research.structured",
  "version": "1.0.0",
  "status": "AVAILABLE",
  "billing_mode": "live",
  "title": "ELYREON Research — structured, source-backed findings",
  "summary": "Answers a bounded research question about a company, industry or named subject from ELYREON's own licensed datasets and SEC index intelligence. Every finding carries an evidence receipt (endpoint, request digest, retrieved_at, rows examined, freshness). Parts of the question the data cannot answer are returned under unanswered, never invented.",
  "capability": "research.synthesis.source_backed",
  "customer": {
    "segment": "AI agents and analyst tooling",
    "buyer": "agent developer or research team",
    "job_to_be_done": "replace unsourced LLM answers with receipted findings"
  },
  "use_cases": [
    "pre-meeting company brief",
    "industry filing-cadence summary",
    "evidence pack for an agent's own answer"
  ],
  "input_schema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "question": {
        "type": "string",
        "minLength": 1,
        "maxLength": 500
      },
      "subject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "company",
              "industry",
              "subject"
            ]
          },
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "cik": {
            "type": "string",
            "pattern": "^[0-9]{1,10}$"
          },
          "ticker": {
            "type": "string",
            "maxLength": 12
          }
        },
        "required": [
          "kind"
        ]
      },
      "depth": {
        "enum": [
          "quick",
          "standard",
          "deep"
        ],
        "default": "standard"
      },
      "output_format": {
        "enum": [
          "json",
          "markdown"
        ],
        "default": "json"
      },
      "as_of": {
        "type": "string",
        "format": "date"
      }
    },
    "required": [
      "question",
      "subject"
    ]
  },
  "output_schema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "product_id": {
        "type": "string"
      },
      "version": {
        "type": "string"
      },
      "generated_at": {
        "type": "string"
      },
      "findings": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "finding_id": {
              "type": "string"
            },
            "statement": {
              "type": "string"
            },
            "confidence": {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "basis": {
              "enum": [
                "measured",
                "derived",
                "insufficient_evidence"
              ]
            },
            "evidence": {
              "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": []
              }
            },
            "limitations": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": []
        }
      },
      "unanswered": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "question_part": {
              "type": "string"
            },
            "reason": {
              "type": "string"
            }
          },
          "required": []
        }
      },
      "coverage": {
        "type": "object"
      },
      "sources": {
        "type": "array"
      },
      "markdown": {
        "type": "string",
        "description": "present only when output_format is markdown; rendered from the same findings"
      }
    },
    "required": []
  },
  "auth": {
    "schemes": [
      "api_key",
      "mcp_oauth"
    ],
    "scopes": [
      "arsenal.research.read"
    ],
    "tenant_isolation": "Every upstream Foundry call is made with the tenant's own upstream credential; no cross-tenant cache shares rows."
  },
  "pricing": {
    "model": "per_call",
    "unit": "call",
    "list_price_minor": 500,
    "ceiling_minor": 1500,
    "approved": true,
    "approval_ref": "INTERNAL-REC-2026-11-14-OWNER-ARSENAL-LIST-PRICES",
    "minimum_charge_minor": 0
  },
  "resources": {
    "max_input_bytes": 8192,
    "timeout_ms": 25000,
    "max_upstream_calls": 6,
    "max_output_rows": 500,
    "max_concurrency": 4
  },
  "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": "authorization is released and nothing is charged; retry with the same Idempotency-Key returns the cached outcome instead of re-executing"
  },
  "data": {
    "sources": [
      "ELYREON Data Foundry: sec_filing_index",
      "ELYREON Data Foundry: sec_company_tickers",
      "ELYREON Data Foundry: dataset lakes (metadata + licensed query)"
    ],
    "licensing": "Foundry dataset licences are declared per dataset (rights_status). Only datasets whose rights_status is commercial_ready are queried.",
    "restrictions": [
      "no filing full text is returned",
      "no figures from inside a filing",
      "no third-party source is cited unless it was actually queried"
    ]
  },
  "upstream": {
    "engine": "foundry",
    "endpoints": [
      "/v1/intel/issuer-brief",
      "/v1/intel/form-mix",
      "/v1/intel/amendment-profile",
      "/v1/datasets",
      "/v1/datasets/{slug}/query"
    ]
  },
  "limitations": [
    "SEC lake coverage is not contiguous: 1997QTR3, then nothing until 2019QTR1 onwards; the per-answer coverage block is authoritative",
    "research depth 'deep' costs more upstream calls and is capped by the product ceiling"
  ],
  "docs": "docs/products/research.md",
  "readiness": {
    "implementation": "present",
    "tests": "test/research.test.ts",
    "benchmark": "units in UNIT_ECONOMICS.md"
  }
}