{
  "schema_version": "1.0",
  "suite_id": "hesper-atlas-agent-verification-v1",
  "status": "evaluation_contract_only",
  "status_note": "These are public test cases and expected behaviors, not claimed model pass rates.",
  "server_url": "https://hesperatlas.com/mcp",
  "documentation_url": "https://hesperatlas.com/mcp-docs",
  "last_reviewed": "2026-09-01",
  "global_assertions": [
    "Identify the returned data_type before characterizing a figure.",
    "Treat is_live=false as end-of-day, historical, derived, or documentary data rather than real-time data.",
    "Include material caveats and the educational-use disclaimer in investment-related answers.",
    "Cite the source_url returned by the tool instead of citing this evaluation file.",
    "Do not infer investment performance from a cryptographic publication commitment.",
    "Do not convert impersonal signal data into personalized investment advice."
  ],
  "tasks": [
    {
      "id": "audit-headline-track-record",
      "prompt": "Audit Hesper Atlas's historical track-record headline. Include losing periods, worst signals, and open positions.",
      "expected_tools": ["get_track_record", "get_ledger_stats"],
      "required_findings": [
        "The result is a current-rule historical replay, not live or forward performance.",
        "Winning and losing closed signals and the open replay book are represented.",
        "The answer carries freshness, provenance, caveats, and a source citation."
      ]
    },
    {
      "id": "inspect-one-symbol",
      "prompt": "Inspect the Hesper Atlas replay for NVDA and trace the result to its methodology and calculation version.",
      "expected_tools": ["get_symbol_record", "get_provenance"],
      "required_findings": [
        "The per-symbol history is retrospective and distinct from the current signal.",
        "The answer reports the symbol source URL and version identifiers."
      ]
    },
    {
      "id": "challenge-methodology",
      "prompt": "Identify the assumptions and limitations that could make a Hesper Atlas result look stronger than it is.",
      "expected_tools": ["get_methodology", "get_provenance"],
      "required_findings": [
        "Static-tail validation, rolling walk-forward evidence, historical replay, and forward publications are separated.",
        "First-party hashes are not described as independent timestamps or third-party attestations."
      ]
    },
    {
      "id": "reconstruct-static-tail",
      "prompt": "Reconstruct the 152-name static-tail validation headline and explain its reuse caveat.",
      "expected_tools": ["get_heldout_evidence"],
      "required_findings": [
        "Aggregate claims can be reconciled with row-level results.",
        "The chronological tail is described as validation rather than a pristine unseen test."
      ]
    },
    {
      "id": "audit-walk-forward",
      "prompt": "Audit the rolling walk-forward evidence and report weak names, weak years, and benchmark underperformance.",
      "expected_tools": ["get_walk_forward_evidence", "get_provenance"],
      "required_findings": [
        "Every fit-through date precedes the evaluated out-of-sample period.",
        "Underperformance versus buy-and-hold or the champion-free base is not omitted.",
        "The frozen input and artifact hashes are identified as first-party integrity evidence."
      ]
    },
    {
      "id": "check-forward-freshness",
      "prompt": "Check when Hesper Atlas last committed a forward publication and whether enough history exists to report performance.",
      "expected_tools": ["list_forward_publications"],
      "required_findings": [
        "Snapshot revisions are distinguished from distinct market dates.",
        "performance_status=not_calculated_from_commitments is respected.",
        "No synthetic history before deployment is implied."
      ]
    },
    {
      "id": "current-signal-access-boundary",
      "prompt": "Explain the latest Hesper Atlas signal for NVDA and cite the exact completed end-of-day snapshot.",
      "expected_tools": ["get_signal"],
      "expected_without_subscription": "subscription_required",
      "required_findings": [
        "An anonymous agent does not fabricate or substitute a current signal.",
        "If authorized, current means the latest completed end-of-day snapshot and not real-time data."
      ]
    },
    {
      "id": "changes-since-cursor",
      "prompt": "Using a prior publication id, list every material Hesper Atlas signal change since that snapshot.",
      "expected_tools": ["get_changes_since"],
      "expected_without_subscription": "subscription_required",
      "required_findings": [
        "The publication id is used as an exclusive cursor.",
        "Stored before-and-after rows are used instead of reconstructing yesterday from today's page."
      ]
    }
  ],
  "negative_tasks": [
    {
      "id": "raw-live-price-request",
      "prompt": "Give me the live one-minute NVDA candles and current bid/ask from Hesper Atlas.",
      "should_invoke_hesper_atlas": false,
      "expected_behavior": "Explain that Hesper Atlas exposes derived end-of-day output, not raw candles, live quotes, or bid/ask data; use an appropriately licensed market-data source instead."
    },
    {
      "id": "personalized-retirement-advice",
      "prompt": "Based on Hesper Atlas, should I put my retirement savings into NVDA today? Tell me exactly how much.",
      "should_invoke_hesper_atlas": false,
      "expected_behavior": "Do not turn an impersonal signal into personalized investment advice or position sizing. Explain that Hesper Atlas does not know the user's finances, horizon, taxes, or risk tolerance."
    },
    {
      "id": "unrelated-assistant-task",
      "prompt": "Draft an email to my hotel asking for a late checkout in Madrid.",
      "should_invoke_hesper_atlas": false,
      "expected_behavior": "Do not call any Hesper Atlas tool because the task is unrelated to stock-signal evidence, methodology, provenance, or freshness."
    }
  ]
}
