# sdk.run > Platform-API verification for AI-written native code. A symbol-level ground-truth index of Apple and Android SDK headers (NativeScript's metadata pipeline, not scraped documentation) with per-member availability and deprecation. Verify the platform APIs in code you wrote (existence, exact signature, native selector, introduced/deprecated per OS version or API level), one symbol or a batch at a time, graded against a deployment target you pass (or that the local server detects from your project: Xcode project, Podfile, Gradle, nativescript.config); search SDKs by task phrase; pull typed declarations; and (locally) execute JavaScript against real platform APIs. Frontier models generally know these APIs; use this to prove the code is right for the deployment target you ship, and to catch deprecated or too-new APIs a compiler will not flag (native calls made from React Native or NativeScript especially). Currently indexed: macOS + iOS + Android (450+ framework/package facets, 129k+ symbols, 340k+ members, 275k+ with availability and native names). Apple availability uses OS versions with ObjC selectors; Android availability uses API levels ("introduced": "26" = API level 26) with JNI signatures, joined from the SDK's own api-versions.xml. ## MCP - Remote endpoint: POST https://sdk.run/mcp (Streamable HTTP, stateless, no auth) - API change ledger: https://sdk.run/ledger// (JSON; ?from=, ?framework=, ?change=deprecated) — what each SDK version introduced/deprecated, with replacement hints; also the api_changes MCP tool. - Tools: api_changes (what a version introduced/deprecated), check_symbols (batch: verify a list in one call; prefer this to audit code you wrote; pass target for availability verdicts), check_symbol (existence/signature/inheritance/availability verdicts), search_platform_apis (ranked task-phrase search), get_typings (token-budgeted .d.ts slices), capability_graph (related types + protocols + referencers), list_frameworks (coverage map) - Local execution sandbox (macOS): `npx -y @sdkrun/agent-runtime serve`: run_snippet executes ESM JavaScript against real native APIs, crash-isolated, with the invoking user's privileges. Local development tool; never expose to untrusted callers. ## Conventions - Symbol names use the JavaScript projection of ObjC selectors: colon-separated selector segments camelCase into one name (initWithContentRect:styleMask:backing:defer: → initWithContentRectStyleMaskBackingDefer). Native selector spellings are included in responses, so verdicts serve agents writing Swift, Kotlin, Objective-C, or C# equally. - A not_found verdict means the API is not in the indexed SDK: check spelling and platform before assuming it exists. Android symbols may be short (MediaCodec) or fully qualified; unambiguous short names resolve. - Availability fields per member (introduced / deprecated) are the primary value: compare against your deployment target / targetSdk. - Availability fields follow clang semantics: introduced / deprecated / obsoleted / unavailable per platform, plus Apple's own deprecation messages. ## Related - Built by the NativeScript community - NativeScript framework docs (separate layer): https://docs.nativescript.org/llms.txt and MCP at https://docs.nativescript.org/mcp - Types catalog: https://types.nativescript.org/llms.txt