{
  "version": 4,
  "updatedAt": "2026-07-08",
  "description": "Agent/client launch matrix for public Starkscan integration surfaces. Route-level certification remains owned by public-api-correctness-manifest.json; this file classifies the higher-level REST, RPC, SDK, CLI, and MCP surfaces and carries the draft 1.0 public-client semver/conformance contract. Strict consumers should treat the states object and onePointZeroContract object as the authoritative enum lists for this version.",
  "states": {
    "certified": "Production-safe for the stated scope, with current correctness evidence and stable client contract.",
    "beta": "Usable by named clients with documented limits or release-channel caveats.",
    "experimental": "Partner/internal preview only; schema, packaging, or auth may still change.",
    "provider-blocked": "The route or adapter exists for gated proof, but migration for the named workload remains blocked on provider-readiness evidence.",
    "unsupported": "Not a supported client contract.",
    "stable": "Default public package channel for pre-1.0 clients with current smoke evidence and a stable install contract."
  },
  "surfaces": [
    {
      "id": "rest-core-api",
      "publicName": "REST core API",
      "state": "certified",
      "releaseState": "ready-for-named-client-production",
      "audience": "external clients and agents that call HTTP directly",
      "entrypoint": "https://<host>/api/v1/...",
      "auth": "X-Starkscan-Api-Key",
      "scope": [
        "GET /v1/{chain}/status",
        "GET /v1/{chain}/block/{number_or_hash}",
        "GET /v1/{chain}/block-at-timestamp",
        "GET /v1/{chain}/tx/{tx_hash}",
        "GET /v1/{chain}/token/{token}/total-supply",
        "GET /v1/{chain}/token/{token}/balance-of/{address}"
      ],
      "evidence": [
        "rust-exp/docs/api/public-api-correctness-manifest.json",
        "rust-exp/deploy/hetzner/scripts/core-api-rpc-parity-gate.sh",
        "rust-exp/deploy/hetzner/scripts/block-at-timestamp-correctness-gate.sh",
        "rust-exp/deploy/hetzner/scripts/token-read-correctness-gate.sh",
        "rust-exp/docs/api/block-at-timestamp-certification.md",
        "rust-exp/scripts/agent-api-conformance-smoke.sh"
      ],
      "checks": [
        "public API correctness manifest validation",
        "core API RPC parity gate",
        "block-at-timestamp RPC correctness gate",
        "exact-block token read correctness gate",
        "authenticated agent API conformance smoke"
      ],
      "blockers": [],
      "notes": "Correctness is the hard gate. The certified accounting scope is timestamp-to-block plus exact token balance for one known token/account at a concrete block. Indexed lists, historical portfolio discovery, and protocol routes stay beta until their reconciliation gates are current."
    },
    {
      "id": "starkscan-rpc-provider",
      "publicName": "Starkscan RPC provider",
      "state": "beta",
      "releaseState": "authenticated-http-rpc-beta-certified",
      "audience": "Starkscan API-key holders that need a Starknet JSON-RPC endpoint for read, call, event, fee, simulation-envelope, and already-signed transaction workflows",
      "entrypoint": "POST https://<host>/api/v1/{chain}/rpc",
      "auth": "X-Starkscan-Api-Key on the public /api/v1 path; /rpc/v0_10/{chain}/{token} is a compatibility nodeUrl path for clients that cannot attach headers and should use a dedicated Starkscan key per app or environment; treat the full URL-token form as sensitive",
      "scope": [
        "JSON-RPC 2.0 route and auth shape for gated readiness testing",
        "header-auth requests on /api/v1/{chain}/rpc",
        "nodeUrl-compatible URL-token requests through /rpc/v0_10/{chain}/{token}",
        "single-request and batch-envelope parsing paths",
        "wallet/app phase-one provider-readiness evidence with a dedicated mainnet RPC_GATEWAY_* upstream/LB",
        "signed-write beta evidence for already-signed invoke, declare, and deploy-account transaction forwarding",
        "authenticated beta scope with live evidence for starknet_specVersion >= 0.10.2, mainnet chain id, batch support, fixed-block reads, starknet_call, getStorageAt, events, and simulate/fee envelope recognition",
        "latest preview-main proof on 2026-06-13 passed provider pilot, partner wallet workload, and live parity with zero correctness failures"
      ],
      "evidence": [
        "rust-exp/scripts/starkscan-rpc-provider-smoke.sh",
        "rust-exp/scripts/tests/starkscan-rpc-provider-smoke.sh",
        "rust-exp/scripts/starkscan-rpc-provider-pilot-gate.py",
        "rust-exp/scripts/tests/starkscan-rpc-provider-pilot-gate.sh",
        "rust-exp/scripts/starkscan-rpc-certification-gate.py",
        "docs/infra/runbooks/rpc-provider-serving-pool.md",
        "webapp/apps/docs/content/docs/api/agent-quickstart.mdx"
      ],
      "checks": [
        "RPC provider smoke validates public auth rejection on /api/v1",
        "RPC provider smoke validates authenticated chainId, URL-token nodeUrl, and batch reads",
        "RPC provider smoke validates malformed-write semantic errors or rpc_write rate limits and the batch-size cap",
        "RPC provider pilot gate validates read-state and read-history method matrices",
        "RPC provider pilot gate validates simulation and fee JSON-RPC forwarding envelopes",
        "signed-write certification gate validates already-signed invoke, declare, and deploy-account forwarding with request IDs",
        "tester readiness smoke includes the RPC provider smoke",
        "provider-readiness deploy gate records pilot, partner wallet workload, and live parity report summaries when RUN_RPC_PROVIDER_READINESS_GATE=true"
      ],
      "blockers": [
        "signed simulation fixtures before stronger simulation correctness claims",
        "archive/history certification, including historical storage-proof horizon",
        "method-level observability and SLO dashboard before promotion beyond the provider pilot",
        "multi-client conformance matrix before full-provider claims",
        "WebSockets, broad tracing, no-key public RPC, and full-provider replacement are outside the current beta"
      ],
      "notes": "This is separate from the certified REST launch set. Starkscan API-key holders may use Starkscan RPC for documented read, call, event, fee, and simulation-envelope workflows validated against a mainnet wallet-app evidence profile. Signed-write beta support is limited to forwarding already-signed addInvoke, addDeclare, and addDeployAccount payloads and has a separate boundary certification. Strict signed simulation still needs a signed fixture before stronger correctness claims. Keep your existing RPC provider for WebSockets, broad tracing, archive/history, no-key public RPC, and full-provider replacement until those lanes have their own certification."
    },
    {
      "id": "address-intelligence-utilities",
      "publicName": "Address intelligence utilities",
      "state": "beta",
      "releaseState": "ready-for-named-wallet-and-migration-clients",
      "audience": "Wallet, paymaster, migration, and account-intelligence backends that already have bounded address lists",
      "entrypoint": "POST https://api.starkscan.co/v1/{chain}/address/intelligence",
      "auth": "X-Starkscan-Api-Key with utility access for batch routes; read access for single-address attribution",
      "scope": [
        "POST /v1/{chain}/address/summaries for ordered aggregate address facts",
        "POST /v1/{chain}/address/intelligence for deployment, attribution, and inbound-funds classification",
        "GET /v1/{chain}/address/{address}/attribution for one-address readable attribution",
        "up to 128 addresses per batch request",
        "request-order preserving response items",
        "indexed-only request paths with no RPC calls, deployment repair, raw activity scans, risk scoring, or sanctions screening"
      ],
      "evidence": [
        "rust-exp/scripts/ready-argent-acceptance.py",
        "rust-exp/scripts/tests/ready-argent-acceptance.sh",
        "webapp/packages/sdk/src/explorerApi.ts",
        "webapp/packages/sdk/src/starkscanClient.ts",
        "webapp/apps/docs/content/docs/api/address-intelligence.mdx"
      ],
      "checks": [
        "Ready/Argent acceptance harness fixture-smokes address attribution, empty/over-128/exactly-128 batch behavior, duplicate mapping preservation, auth boundaries, and repeated 100-address latency runs",
        "SDK validators enforce the address intelligence response shape",
        "CLI exposes address-summaries and address-intelligence commands",
        "certified route-level sampling is not claimed by this beta surface"
      ],
      "blockers": [
        "route-level certification sampling before certified promotion",
        "label/protocol coverage metric publication",
        "named-client live acceptance refresh with the current partner key before external launch claims"
      ],
      "notes": "This beta surface provides factual indexed classification only. Null fields mean unknown, not false. hasReceivedFunds is based on indexed token-transfer recipient rows and is not a current-balance or AML/risk signal. Current evidence is fixture and utility-scope smoke; certified on-chain sampling is a promotion blocker, not a present claim."
    },
    {
      "id": "typescript-sdk",
      "publicName": "TypeScript SDK",
      "state": "stable",
      "releaseState": "published-0.1.2-latest-smoked",
      "audience": "TypeScript applications and agent runtimes that want typed REST access",
      "entrypoint": "@starkscan/sdk",
      "auth": "SDK forwards the same hosted API-key contract as REST",
      "scope": [
        "typed wrappers over the public REST contract",
        "chain-bound Starkscan client helpers",
        "live tester smoke against preview"
      ],
      "evidence": [
        "webapp/packages/sdk/package.json",
        "webapp/packages/sdk/src/index.ts",
        "webapp/packages/sdk/src/starkscanClient.ts",
        "webapp/packages/sdk/scripts/tester-smoke.ts"
      ],
      "checks": [
        "bun run --cwd packages/sdk typecheck",
        "bun run --cwd packages/sdk test",
        "bun run --cwd packages/sdk build",
        "bun run --cwd packages/sdk smoke:tester",
        "clean npm install of @starkscan/sdk@0.1.2 and @starkscan/sdk, Node ESM import, and live public status smoke with baseUrl=https://api.starkscan.co"
      ],
      "blockers": [
        "public provenance strategy finalized before stronger package-trust claims"
      ],
      "notes": "@starkscan/sdk is published as 0.1.2 on the latest dist-tag. Live npm keeps beta/alpha only as prerelease and rollback channels. npm provenance is pending until public-source promotion.",
      "packageTrust": {
        "package": "@starkscan/sdk",
        "channel": "latest",
        "targetVersion": "0.1.2",
        "currentPublicVersion": "0.1.2",
        "npm": "https://www.npmjs.com/package/@starkscan/sdk",
        "source": "https://starkscan.co/docs/build/package-trust",
        "socket": "https://socket.dev/npm/package/@starkscan/sdk",
        "controls": [
          "public scoped package under the @starkscan npm org",
          "public package trust source lives at https://starkscan.co/docs/build/package-trust",
          "repository metadata points at the checked-in private repository URL string for npm Trusted Publishing publisher matching",
          "package artifacts from the checked release workflow",
          "package entrypoint and type entrypoint preflight before publish",
          "post-publish dist-tag verifier must confirm latest resolves to 0.1.2",
          "post-publish public status smoke passed with baseUrl=https://api.starkscan.co",
          "authenticated /api smoke remains a per-client scoped-key check",
          "tokenless publish through configured npm Trusted Publishing; CI publish uses OIDC with NPM_CONFIG_PROVENANCE=false",
          "Socket package monitoring candidate; do not treat it as a formal certification"
        ]
      }
    },
    {
      "id": "agent-cli",
      "publicName": "Agent CLI",
      "state": "stable",
      "releaseState": "published-0.1.2-latest-smoked",
      "audience": "shell users, local exports, and agent subprocess workflows",
      "entrypoint": "@starkscan/cli",
      "auth": "CLI sends X-Starkscan-Api-Key and uses STARKSCAN_* env names",
      "scope": [
        "npx/npm wrapper",
        "native artifact verification",
        "doctor and command forwarding"
      ],
      "evidence": [
        "webapp/packages/cli/package.json",
        "webapp/packages/cli/README.md",
        "webapp/packages/cli/scripts/tests/cli-wrapper.mjs",
        "rust-exp/scripts/release-cli-smoke.sh"
      ],
      "checks": [
        "npm run typecheck in webapp/packages/cli",
        "npm run test in webapp/packages/cli",
        "clean npm install of @starkscan/cli@0.1.2 and @starkscan/cli",
        "npx -y @starkscan/cli --base-url https://api.starkscan.co status",
        "npx -y @starkscan/cli doctor against the default hosted endpoint and a scoped key when running per-client authenticated smoke",
        "unauthenticated doctor smoke emits starkscan-cli- request IDs and never the legacy request-id prefix"
      ],
      "blockers": [
        "public provenance strategy finalized before stronger package-trust claims"
      ],
      "notes": "@starkscan/cli is published as 0.1.2 on the latest dist-tag with bundled native artifacts and request-id prefix smoke. Live npm keeps beta/alpha only as prerelease and rollback channels. Run authenticated doctor smoke with a scoped key before adding a new unattended client.",
      "packageTrust": {
        "package": "@starkscan/cli",
        "channel": "latest",
        "targetVersion": "0.1.2",
        "currentPublicVersion": "0.1.2",
        "npm": "https://www.npmjs.com/package/@starkscan/cli",
        "source": "https://starkscan.co/docs/build/package-trust",
        "socket": "https://socket.dev/npm/package/@starkscan/cli",
        "controls": [
          "public scoped package under the @starkscan npm org",
          "public package trust source lives at https://starkscan.co/docs/build/package-trust",
          "repository metadata points at the checked-in private repository URL string for npm Trusted Publishing publisher matching",
          "native archives bundled for darwin-aarch64, darwin-x86_64, linux-aarch64, and linux-x86_64",
          "manifest and sha256 verification before executing the native binary",
          "safe tar entry checks and package-version release-tag binding before publish",
          "GitHub artifact attestations for release workflow outputs",
          "post-publish dist-tag verifier must confirm latest resolves to 0.1.2",
          "post-publish unauthenticated error-path smoke confirms request IDs use starkscan-cli- and never the legacy request-id prefix",
          "post-publish public status smoke passed with --base-url https://api.starkscan.co",
          "authenticated doctor smoke against the default hosted endpoint remains a per-client scoped-key check",
          "tokenless publish through configured npm Trusted Publishing; CI publish uses OIDC with NPM_CONFIG_PROVENANCE=false",
          "Socket package monitoring candidate; do not treat it as a formal certification"
        ]
      }
    },
    {
      "id": "hosted-mcp-http",
      "publicName": "Hosted MCP HTTP",
      "state": "beta",
      "releaseState": "usable-with-api-key-auth-and-discovery",
      "audience": "MCP-capable agents that can call the hosted JSON-RPC endpoint",
      "entrypoint": "POST https://<app-host>/api/mcp or https://api.starkscan.co/mcp on the API domain",
      "auth": "X-Starkscan-Api-Key for hosted MCP",
      "scope": [
        "single JSON-RPC request per POST",
        "tools/list and tools/call parity with the read surface",
        "stateless hosted transport",
        "OAuth protected-resource discovery metadata for MCP-capable clients"
      ],
      "evidence": [
        "rust-exp/docs/mcp-http-rollout.md",
        "rust-exp/docs/mcp-tool-parity.md",
        "rust-exp/src/transport/api/mcp_http_adapter.rs",
        "rust-exp/src/transport/mcp.rs",
        "rust-exp/deploy/hetzner/scripts/post-deploy-smoke.sh"
      ],
      "checks": [
        "GET /api/mcp returns 405 Allow: POST",
        "POST /api/mcp initialize returns MCP protocol 2025-11-25",
        "OAuth protected-resource discovery routes pass post-deploy smoke",
        "MCP tool parity tests in rust-exp"
      ],
      "blockers": [],
      "notes": "Direct hosted MCP is live with API-key auth. Use https://api.starkscan.co/mcp on the API domain, or /api/mcp when calling an app-origin deployment. OAuth protected-resource discovery is validated by preview smoke. Discovery metadata is not the same as launching a full OAuth token issuance flow. npm launcher promotion is tracked separately from the hosted HTTP transport."
    },
    {
      "id": "mcp-launcher",
      "publicName": "Official MCP launcher",
      "state": "stable",
      "releaseState": "published-0.1.2-latest-smoked",
      "audience": "Codex, Claude Code, Cursor, Cline, and other desktop MCP clients",
      "entrypoint": "npx -y @starkscan/mcp",
      "auth": "STARKSCAN_API_KEY environment variable passed by the host client",
      "scope": [
        "one-command MCP onboarding",
        "generated client config snippets",
        "packaged launcher smoke"
      ],
      "evidence": [
        "webapp/packages/mcp/package.json",
        "webapp/packages/mcp/README.md",
        "webapp/apps/docs/content/docs/ai/mcp-quickstart.mdx",
        "rust-exp/scripts/tester-mcp-remote-smoke.sh",
        "rust-exp/scripts/release-mcp-remote-smoke.sh"
      ],
      "checks": [
        "npm run typecheck in webapp/packages/mcp",
        "npm run test in webapp/packages/mcp",
        "packaged launcher smoke, not cargo-run fallback",
        "clean npm install of @starkscan/mcp@0.1.2 and @starkscan/mcp",
        "npx -y @starkscan/mcp print-config and tools against the default hosted endpoint",
        "npx -y @starkscan/mcp doctor against the default hosted endpoint and a scoped key when running per-client authenticated smoke",
        "unauthenticated doctor smoke emits starkscan-cli- request IDs and never the legacy request-id prefix",
        "client config examples for Codex and Claude Code"
      ],
      "blockers": [
        "public provenance strategy finalized before stronger package-trust claims"
      ],
      "notes": "@starkscan/mcp is published as 0.1.2 on the latest dist-tag through the matching CLI package. Live npm keeps beta/alpha only as prerelease and rollback channels. Keep MCP and CLI on the same package version and run authenticated doctor smoke with a scoped key before adding a new unattended client.",
      "packageTrust": {
        "package": "@starkscan/mcp",
        "channel": "latest",
        "targetVersion": "0.1.2",
        "currentPublicVersion": "0.1.2",
        "npm": "https://www.npmjs.com/package/@starkscan/mcp",
        "source": "https://starkscan.co/docs/build/package-trust",
        "socket": "https://socket.dev/npm/package/@starkscan/mcp",
        "controls": [
          "public scoped package under the @starkscan npm org",
          "public package trust source lives at https://starkscan.co/docs/build/package-trust",
          "repository metadata points at the checked-in private repository URL string for npm Trusted Publishing publisher matching",
          "exact dependency pin to the matching @starkscan/cli package version",
          "packaged launcher smoke before publish",
          "secret-redaction tests for API-key bearing env and URLs",
          "post-publish dist-tag verifier must confirm latest resolves to 0.1.2",
          "post-publish unauthenticated error-path smoke confirms request IDs use starkscan-cli- and never the legacy request-id prefix",
          "post-publish print-config/tools smoke against the default hosted endpoint",
          "authenticated doctor smoke against the default hosted endpoint remains a per-client scoped-key check",
          "tokenless publish through configured npm Trusted Publishing; CI publish uses OIDC with NPM_CONFIG_PROVENANCE=false",
          "Socket package monitoring candidate; do not treat it as a formal certification"
        ]
      }
    }
  ],
  "onePointZeroContract": {
    "status": "draft-for-1.0",
    "currentPublicLine": "0.1.x",
    "targetMajor": "1.0",
    "scope": [
      "@starkscan/sdk public TypeScript exports",
      "@starkscan/cli public command surface",
      "@starkscan/mcp launcher and advertised MCP tools",
      "shared auth, base URL, request-id, rate-limit, retry, and error-envelope behavior"
    ],
    "stabilityStates": {
      "stable": "Semver-protected after 1.0. Removing, renaming, changing required inputs, or weakening response/error envelopes requires a major version.",
      "beta": "Supported for named clients or documented beta workflows, but not part of the 1.0 stable compatibility promise until promoted.",
      "experimental": "Visible or exported for advanced use, but may change in minor versions and must not be used for unattended production without a separate agreement.",
      "maintainer-only": "Internal release or diagnostic surface. Not a public package contract.",
      "deprecated": "Still callable in the current line but scheduled for removal under the deprecation policy."
    },
    "semverPolicy": {
      "before1_0": "0.1.x may add fields, helpers, commands, and tools in minor releases. Breaking removals should still be avoided for stable-labeled package surfaces and must be called out in release notes.",
      "after1_0Stable": "Stable SDK exports, CLI commands, MCP launcher behavior, advertised stable MCP tools, auth/env names, request-id access, rate-limit headers, and documented error classes follow semantic versioning.",
      "nonBreakingExamples": [
        "adding optional response fields",
        "adding optional request parameters with defaults",
        "adding a new beta helper, CLI command, or MCP tool",
        "widening a documented enum while preserving old values"
      ],
      "breakingExamples": [
        "removing or renaming a stable helper, command, tool, env var, or package entrypoint",
        "changing a stable method from optional auth to required auth or changing required scopes without a major version",
        "changing JSON output shape so a documented stable field disappears or changes type",
        "removing request-id or rate-limit header exposure from stable error paths"
      ]
    },
    "deprecationPolicy": {
      "stableSurface": "Give at least one minor release with documentation and runtime/help text before removal, unless the old behavior is a security risk.",
      "betaSurface": "Prefer one minor release notice when practical; faster changes are allowed when evidence shows the beta contract is wrong or unsafe.",
      "experimentalSurface": "Can change without a formal deprecation window, but release notes must state the change when user-visible.",
      "legacyCompatibility": "Hidden compatibility shims are not promoted to public contracts by their existence. Do not list hidden aliases in tools/list or public docs."
    },
    "supportedRuntimeContract": {
      "node": "Node.js 20 or newer for package consumers; release validation should also cover the current Node LTS used by the docs/package workspace.",
      "moduleSystem": "ESM import for @starkscan/sdk; CLI and MCP launchers execute through npx/npm package bins.",
      "packageManagers": [
        "npm",
        "pnpm",
        "bun"
      ],
      "cliNativePlatforms": [
        "darwin-aarch64",
        "darwin-x86_64",
        "linux-aarch64",
        "linux-x86_64"
      ],
      "unsupported": [
        "running CLI or MCP launcher with elevated OS privileges",
        "using prerelease dist-tags in unattended production without an allowlist"
      ]
    },
    "conformanceMatrix": {
      "defaultInstall": [
        "npm dist-tag verifier: @starkscan/sdk, @starkscan/cli, and @starkscan/mcp latest resolve to the intended stable train",
        "SDK: clean install, Node ESM import, createStarkscanClient, public status smoke, request-id/error access",
        "CLI: npx -y @starkscan/cli doctor, status, auth failure shape, JSON output, request-id prefix",
        "MCP: npx -y @starkscan/mcp print-config, tools/list, hosted HTTP headers, stdio newline framing where applicable"
      ],
      "exactPin": [
        "repeat SDK, CLI, and MCP smoke on @starkscan/*@<exact-version> before unattended customer rollout",
        "MCP exact pin must depend on the matching @starkscan/cli exact version",
        "rollback must pin the previous known-good exact version and rerun the same smoke set"
      ],
      "sharedAssertions": [
        "STARKSCAN_BASE_URL is optional for hosted production defaults and only needed for preview or self-hosted hosts",
        "STARKSCAN_API_KEY is read from the environment or explicit client config, never from docs examples",
        "401/403/429/503 preserve machine-readable error bodies and request IDs where the route returns a body",
        "429 and 503 honor Retry-After where present"
      ]
    },
    "clients": {
      "sdk": {
        "package": "@starkscan/sdk",
        "entrypoint": "webapp/packages/sdk/src/index.ts",
        "stableTopLevelExports": [
          "DEFAULT_STARKSCAN_BASE_URL",
          "StarkscanClient",
          "StarkscanClientOptions",
          "StarkscanStreamRequest",
          "createStarkscanClient",
          "ExplorerApi",
          "ExplorerApiOptions",
          "ExplorerStreamRequest",
          "createExplorerApi",
          "HttpClient",
          "HttpClientOptions",
          "HttpError",
          "AuthError",
          "RateLimitError",
          "ValidationError",
          "ServerError",
          "RedirectError",
          "HttpTimeoutError",
          "ResponseFormatError",
          "ResponseSizeError",
          "QueryParams",
          "QueryValue",
          "RetryDelayFn",
          "JsonResponseContext",
          "JsonResponseValidator",
          "HttpRequestOptions",
          "withQuery",
          "assertAuthConfig",
          "createRequestUrl",
          "resolveRequestHeaders",
          "createHttpClient",
          "DataHonestySignal",
          "DataHonestyLevel",
          "DataHonestyFlag",
          "DataCompletenessSummary",
          "hasMorePages",
          "getLagBlocks",
          "getCompleteness",
          "isExact",
          "L1AcceptedProofView",
          "L1FinalityQuorumView",
          "L1FinalityView",
          "ExplorerStatusView",
          "ExplorerLiveFeedSnapshot",
          "BlockTransactionView",
          "BlockGasPriceView",
          "BlockView",
          "BlockRef",
          "BlockNumberRef",
          "BlockTransactionPage",
          "TransactionReceiptView",
          "TransactionLogView",
          "TransactionPreviewLogView",
          "TokenTransferHistoricalUsd",
          "TransactionTransferView",
          "TransactionDetailView",
          "TransactionPreviewContractCallView",
          "TransactionPreviewView",
          "TransactionPreviewBatchView",
          "TxDetailsRequest",
          "AddressSummaryView",
          "AddressSummaryBatchView",
          "AddressTransactionItem",
          "AddressTransactionPage",
          "AddressActivityItem",
          "AddressActivityPage",
          "AddressTransfersDirection",
          "AddressTransfersRequest",
          "TokenTransferActionKind",
          "TokenTransferActionConfidence",
          "TokenTransferActionContext",
          "GlobalTransferItem",
          "GlobalTransferPage",
          "AddressTokenHoldingItem",
          "AddressTokenHoldingsView",
          "ContractMetadataView",
          "ContractEntrypointItem",
          "ContractEntrypointsView",
          "ContractBlockTag",
          "ContractReadResultView",
          "TokenBalanceOfView",
          "TokenTotalSupplyView",
          "TokenTransferItem",
          "TokenTransferPage",
          "TokenTransfersRequest",
          "SearchBlockItem",
          "SearchTransactionItem",
          "SearchView"
        ],
        "betaTopLevelExports": [
          "BridgeIntentView",
          "MessageCoverageView",
          "MessageItemView",
          "ContractEventsRequest",
          "EventDecodedFieldSource",
          "EventDecodedFieldKind",
          "EventDecodedFieldStatus",
          "EventDecodedFieldsUnavailableReason",
          "EventNameUnavailableReason",
          "EventDecodedField",
          "ContractEventItem",
          "ContractEventPage",
          "GlobalEventsRequest",
          "GlobalEventItem",
          "GlobalEventPage",
          "ContractTransactionTraceView",
          "AddressAttributionProtocolView",
          "AddressIntelligenceItemView",
          "AddressIntelligenceBatchView",
          "ContractVerificationStatus",
          "ContractVerificationView",
          "ContractVerificationUpsertRequest",
          "ContractWritePayloadView",
          "StrkbtcDirection",
          "StrkbtcShieldEventItem",
          "StrkbtcShieldEventPage",
          "StrkbtcCommitmentItem",
          "StrkbtcCommitmentPage",
          "StrkbtcNullifierItem",
          "StrkbtcNullifierPage",
          "StrkbtcPoolStatusView"
        ],
        "experimentalTopLevelExports": [],
        "stableClientMethods": [
          "withChain",
          "status",
          "block",
          "blockTransactions",
          "transaction",
          "txDetails",
          "addressSummary",
          "addressActivity",
          "addressTransfers",
          "addressTokenHoldings",
          "addressTransactions",
          "contractMetadata",
          "contractEntrypoints",
          "readContract",
          "tokenTotalSupply",
          "tokenBalanceOf",
          "tokenTransfers",
          "search"
        ],
        "betaClientMethods": [
          "liveFeedSnapshot",
          "liveFeedStreamUrl",
          "liveFeedStreamRequest",
          "transactionTrace",
          "contractEvents",
          "globalEvents",
          "addressSummaries",
          "addressIntelligence",
          "contractVerification",
          "upsertContractVerification",
          "buildContractWritePayload",
          "strkbtcShieldEvents",
          "strkbtcCommitments",
          "strkbtcNullifiers",
          "strkbtcPoolStatus"
        ],
        "experimentalClientMethods": [],
        "stableExplorerApiMethods": [
          "getStatus",
          "getBlock",
          "getBlockTransactions",
          "getTransaction",
          "getTxDetails",
          "getAddressSummary",
          "getAddressActivity",
          "getAddressTransfers",
          "getAddressTokenHoldings",
          "getAddressTransactions",
          "getContractMetadata",
          "getContractEntrypoints",
          "readContract",
          "getTokenTotalSupply",
          "getTokenBalanceOf",
          "getTokenTransfers",
          "search"
        ],
        "betaExplorerApiMethods": [
          "getLiveFeedSnapshot",
          "getLiveFeedStreamUrl",
          "getLiveFeedStreamRequest",
          "getTransactionTrace",
          "getContractEvents",
          "getGlobalEvents",
          "getAddressSummaries",
          "getAddressIntelligence",
          "getContractVerification",
          "upsertContractVerification",
          "buildContractWritePayload",
          "getStrkbtcShieldEvents",
          "getStrkbtcCommitments",
          "getStrkbtcNullifiers",
          "getStrkbtcPoolStatus"
        ],
        "experimentalExplorerApiMethods": []
      },
      "cli": {
        "package": "@starkscan/cli",
        "stableCommands": [
          "init",
          "doctor",
          "examples",
          "status",
          "search",
          "block",
          "tx",
          "tx-details",
          "address",
          "address-activity",
          "address-transactions",
          "address-token-holdings",
          "address-attribution",
          "contract-entrypoints",
          "contract-read",
          "token",
          "token-total-supply",
          "token-balance-of",
          "token-transfers",
          "feed",
          "mcp"
        ],
        "betaCommands": [
          "address-summaries",
          "address-intelligence",
          "contract-verification",
          "contract-events"
        ],
        "experimentalCommands": [],
        "stableMcpSubcommands": [
          "quickstart",
          "print-config",
          "tools",
          "serve",
          "start"
        ],
        "betaMcpSubcommands": [],
        "experimentalMcpSubcommands": []
      },
      "mcp": {
        "package": "@starkscan/mcp",
        "stableTools": [
          "__starkscan_init__",
          "status",
          "block_detail",
          "block_transactions",
          "tx_detail",
          "address_summary",
          "contract_entrypoints",
          "contract_read",
          "token_total_supply",
          "token_balance_of",
          "address_activity",
          "address_token_holdings",
          "token_summary",
          "token_transfers",
          "search"
        ],
        "betaTools": [
          "contract_verification",
          "contract_write_payload",
          "token_holders"
        ],
        "experimentalTools": [],
        "hiddenCompatibilityTools": [
          "__mezcal_init__"
        ]
      }
    }
  }
}
