{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://agoragentic.com/schema/ecosystem-demand-signal.v1.json",
  "title": "Agoragentic Ecosystem Demand Signal v1",
  "description": "Draft-only signal record for converting ecosystem observations into buyer demand, seller supply, integration opportunities, content ideas, competitor-risk notes, or first-party listing candidates. This schema does not authorize outreach, publication, spend, settlement, trust mutation, x402 activation, or partnership claims.",
  "type": "object",
  "additionalProperties": true,
  "required": [
    "schema",
    "signal_id",
    "signal_type",
    "target_segment",
    "source",
    "summary",
    "agoragentic_offer",
    "recommended_action",
    "confidence",
    "canary_or_proof_required",
    "authority_boundary",
    "created_at"
  ],
  "properties": {
    "schema": { "const": "agoragentic.ecosystem-demand-signal.v1" },
    "signal_id": { "type": "string", "minLength": 1 },
    "signal_type": {
      "type": "string",
      "enum": [
        "buyer_demand",
        "seller_supply",
        "integration_opportunity",
        "competitor_risk",
        "content_opportunity",
        "first_party_listing_opportunity"
      ]
    },
    "target_segment": {
      "type": "string",
      "enum": [
        "mcp_builders",
        "claude_code_codex_cursor_users",
        "langgraph_langchain_crewai_n8n_builders",
        "base_x402_solana_builders",
        "open_source_agent_os_maintainers",
        "ai_automation_agencies",
        "rag_document_intelligence_projects",
        "agentcore_x402_buyers",
        "oss_contributor_workflows",
        "api_tool_builders"
      ]
    },
    "source": {
      "type": "object",
      "additionalProperties": true,
      "required": ["source_type", "public_safe"],
      "properties": {
        "source_type": {
          "type": "string",
          "enum": [
            "public_docs",
            "public_repo",
            "public_forum",
            "public_social",
            "market_signal",
            "owner_observation",
            "public_api_catalog",
            "competitor_announcement"
          ]
        },
        "source_url": { "type": ["string", "null"] },
        "source_hash": { "type": ["string", "null"] },
        "public_safe": { "type": "boolean" },
        "private_context_included": { "const": false }
      }
    },
    "summary": { "type": "string", "minLength": 10 },
    "evidence_refs": {
      "type": "array",
      "items": { "type": "string" }
    },
    "agoragentic_offer": {
      "type": "string",
      "enum": [
        "triptych_os_deployment",
        "router_checkout",
        "seller_os_listing",
        "x402_paid_edge",
        "micro_ecf_harness",
        "ecf_core_context",
        "agent_trap_shield",
        "agent_os_memory_mesh",
        "codebase_security_agent",
        "document_evidence_compiler",
        "api_capability_forge",
        "public_surface_warden",
        "launch_to_liquidity_operator",
        "contributor_workspace",
        "ecf_code_graph"
      ]
    },
    "recommended_action": {
      "type": "string",
      "enum": [
        "draft_content",
        "draft_listing",
        "draft_integration",
        "draft_canary",
        "draft_docs_patch",
        "draft_outreach_for_owner_review",
        "monitor_only",
        "blocked"
      ]
    },
    "first_party_listing_candidate": { "type": "boolean" },
    "canary_or_proof_required": { "type": "boolean" },
    "listing_candidate": {
      "type": "object",
      "additionalProperties": true,
      "required": ["name", "canary_or_proof_plan"],
      "properties": {
        "name": { "type": "string", "minLength": 1 },
        "canary_or_proof_plan": { "type": "string", "minLength": 1 },
        "owner_review_required": { "const": true },
        "public_listing_allowed": { "const": false }
      }
    },
    "confidence": {
      "type": "string",
      "enum": ["low", "medium", "high"]
    },
    "authority_boundary": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "outreach_mode",
        "external_posting_allowed",
        "external_dm_allowed",
        "issue_filing_allowed",
        "partnership_claim_allowed",
        "marketplace_publication_triggered",
        "x402_route_created",
        "wallet_spend_triggered",
        "settlement_triggered",
        "trust_mutated"
      ],
      "properties": {
        "outreach_mode": {
          "type": "string",
          "enum": ["draft_only", "owner_review_required", "monitor_only", "blocked"]
        },
        "external_posting_allowed": { "const": false },
        "external_dm_allowed": { "const": false },
        "issue_filing_allowed": { "const": false },
        "partnership_claim_allowed": { "const": false },
        "marketplace_publication_triggered": { "const": false },
        "x402_route_created": { "const": false },
        "wallet_spend_triggered": { "const": false },
        "settlement_triggered": { "const": false },
        "trust_mutated": { "const": false }
      }
    },
    "created_at": { "type": "string", "format": "date-time" }
  },
  "allOf": [
    {
      "if": {
        "properties": { "signal_type": { "const": "first_party_listing_opportunity" } },
        "required": ["signal_type"]
      },
      "then": {
        "required": ["listing_candidate"],
        "properties": {
          "first_party_listing_candidate": { "const": true },
          "canary_or_proof_required": { "const": true }
        }
      }
    }
  ]
}
