nativeport CLI — the Agent API from any shell

@nativeport/cli, also published under the alias nativeport, is a zero-dependency Node 20+ command over the Agent API: npx nativeport@latest login stores the key once, then find, inspect, call, account, catalog, skill [--install] and mcp [--client claude|cursor|json] do the rest. Every command accepts --json, and the exit codes separate a missing key (2), insufficient credits (3), a restricted key (4) and a provider error (5) so an agent can branch on them. Guide: Set up with CLI.

cli

Agent API — find an endpoint, read its price, verify your key

Three public, read-only routes and one account route let an agent choose and price a call before it spends anything. GET /v1/catalog lists every endpoint family with the price the ledger debits (?q= ranks entries by fit, then price), GET /v1/catalog/{id} returns one entry plus a ready native request and its curl, GET /SKILL.md is a skill file an agent installs with one line, and GET /v1/account returns the key’s balance. All four are generated from the same code that mounts and bills every proxy. Guide: Agent API.

agent-api

Remote MCP server at /mcp

NativePort speaks the Model Context Protocol over Streamable HTTP at https://api.nativeport.ai/mcp, authenticated with your API key in the Authorization header. Four tools mirror the Agent API — find_endpoints, inspect_endpoint, call_endpoint (debits the balance and runs the ordinary gateway route, so billing, logging and every restriction apply exactly as for a direct call) and account — plus the skill as the nativeport://skill resource. Client configuration for Claude Code, Cursor, Codex and OpenCode: Set up with MCP.

mcp

LlamaParse v2 — document parsing as tracked async jobs

POST /llamaparse/v2/parse starts a parse and GET /llamaparse/v2/parse/{job_id} reads it, returning page text or markdown at the tier you pick (fast, cost_effective, agentic, agentic_plus) with a version pin for output that stays stable across parser updates. page_ranges is required so the job can be priced up front: the create-time price is a reservation that settles to the usage LlamaCloud reports when the job finishes. Jobs belong to the account that created them; a job id presented by any other account answers 404. Guide: LlamaParse.

llamaparse

Apify — async runs alongside the inline routes

Besides run-sync and run-sync-get-dataset-items, /apify now relays Apify’s asynchronous style: POST /apify/v2/acts/{actorId}/runs or POST /apify/v2/actor-tasks/{actorTaskId}/runs to start a run, GET /apify/v2/actor-runs/{runId} for its status and usage, GET /apify/v2/datasets/{datasetId}/items for what it produced, and POST /apify/v2/actor-runs/{runId}/abort to stop it. Runs are ownership-gated to the account that started them; polling is free, and the run’s own compute cost is debited once, when it finishes. Guide: Apify.

apify

Mistral Document AI — OCR and structured extraction, priced per page

POST /mistral/v1/ocr is live: PDFs and images in, per-page markdown out, and — on the same call — structured fields pulled out with a JSON schema you supply. The route is policed: a closed body policy runs before Mistral is called, pages is required because cost scales with the document, and the price of the selection is checked against your balance before the upstream call, so a job that does not fit answers 402 instead of being forwarded. Guide: Mistral.

mistral

Unified Inference API — production

POST /inference/v1/chat/completions and GET /inference/v1/models[/{id}] are live in production: one OpenAI Chat Completions-shaped contract, JSON and SSE, over OpenAI, Anthropic, Grok, and Hugging Face at once. Address any admitted model with a canonical id (openai/<id>, anthropic/<id>, xai/<id>, huggingface/<owner>/<model>[:provider]) and the same request schema works unchanged across providers — including full request/response translation for Anthropic’s Messages API. Image input is honored only for the models GET /inference/v1/models reports capabilities.vision: true for.

inference-api