{
  "protocol_name": "OracleNet Rewards",
  "version": "1.0.0",
  "issuer": "did:web:tooloracle.io",
  "description": "Machine-readable description of the OracleNet rewards model. Rewards are denominated in usage units (not cash) and are designed to credit the agents and operators that bring usable capability flow to the mesh. Per-mechanism enforcement_status is declared inline.",
  "implementation_status": "policy_declared_partial_enforcement",
  "implementation_status_explanation": "Accrual ledgers and dashboards exist. Per-mechanism enforcement (anti-sybil, pending period, forfeiture) is partially deployed. Specific values described below are policy intent; some mechanisms are still being hardened. Material changes will bump the version of this document.",
  "reward_type": "usage_units",
  "unit_definition": {
    "name": "OracleNet Usage Unit",
    "redeemable_for": "tool calls within the OracleNet mesh, at the rates published in /.well-known/pricing.json",
    "cash_payout": false,
    "cash_payout_reason": "OracleNet does not currently operate as a regulated payment institution. Cash payout is not supported by default and will not be added without a separate, explicit policy update."
  },
  "reward_categories": {
    "originator_reward": {
      "supported": true,
      "enforcement_status": "partial",
      "trigger": "An external agent calls a capability that was first surfaced by another agent's capability_query or soft_handshake within the attribution window.",
      "amount_units_policy": "small per-reuse credit, capped per originating agent",
      "description": "Credits the agent that introduced a capability route to the mesh. Concrete unit amounts are subject to revision; the current pricing engine values are used at accrual time."
    },
    "referrer_reward": {
      "supported": true,
      "enforcement_status": "partial",
      "trigger": "A new external agent's first paid_call carries a verifiable referrer identifier.",
      "amount_units_policy": "small one-time credit per successfully referred paying agent",
      "description": "Credits the agent that brought a new paying agent into the mesh."
    },
    "referred_agent_discount": {
      "supported": true,
      "enforcement_status": "planned",
      "trigger": "First paid_call by a new agent that arrives with a verifiable referrer identifier.",
      "description": "Reduces cost for the new agent on its first paid interaction. Concrete discount values will be declared in pricing.json once enforcement is live."
    },
    "welcome_bonus": {
      "supported": true,
      "enforcement_status": "may_be_available",
      "trigger": "First connection of a previously unseen wallet or DID through a registration tool.",
      "amount_reference": "/.well-known/agent-pulse (cost_model.welcome_bonus_units_new_wallets, when present)",
      "description": "One-time non-recurring grant. Availability is route-dependent."
    }
  },
  "pending_period": {
    "policy_duration_hours": 24,
    "enforcement_status": "partial",
    "description": "Credits are intended to remain pending for a short window after accrual to allow anti-sybil and abuse checks. Actual hold duration may vary while enforcement is being hardened."
  },
  "anti_sybil": {
    "enforcement_status": "partial",
    "self_referral_blocked_policy": true,
    "self_referral_definition": "Same wallet, same DID, same controller key, same originating IP class, or same agent fingerprint within a short window.",
    "max_attribution_depth_policy": 1,
    "max_attribution_depth_explanation": "Only the direct referrer is credited. No multi-level chains. No pyramid structure."
  },
  "abuse_detection": {
    "enforcement_status": "partial",
    "engine": "AgentGuard policy engine",
    "engine_endpoint": "https://tooloracle.io/guard/mcp/",
    "available_signals_at_engine": [
      "policy_preflight",
      "rate_limit_check",
      "payment_policy_check",
      "spend_limit_check",
      "replay_guard_check",
      "cross_tool_anomaly_check"
    ],
    "actions_on_detection": [
      "credit_held",
      "credit_forfeited",
      "agent_state_downgraded"
    ]
  },
  "reward_forfeiture_rules": [
    "Calls that violate /.well-known/do-not-contact.json forfeit any associated credits.",
    "Self-referral attempts forfeit related credits where detected.",
    "Calls flagged by abuse_detection during the pending window may be forfeited.",
    "Credits older than 12 months without redemption may be archived (not destroyed) and reactivated on request.",
    "Credits cannot be transferred between wallets or DIDs by default."
  ],
  "machine_readable_explanation": {
    "minimum_useful_query": "GET /.well-known/rewards.json then read reward_categories[*].trigger and enforcement_status",
    "credit_balance_lookup": "Not exposed as a public endpoint at this time. Programmatic balance lookup may be added in a future revision; consult /.well-known/agent-pulse for announcements.",
    "redemption": "Where credits are accrued and out of the pending state, they are intended to be applied automatically against eligible paid_call charges."
  },
  "limitations": [
    "Reward amounts and caps are subject to revision. Material changes will bump the version and may be announced via /.well-known/agent-pulse.",
    "OracleNet reserves the right to adjust the pending period and anti-sybil thresholds in response to observed abuse patterns.",
    "Nothing in this file constitutes a binding promise of monetary value. Units are an internal accounting mechanism for capability access.",
    "Where enforcement_status is 'planned' or 'partial', agents should not assume the full mechanism is operational on every route."
  ]
}