# 1gateway — agents.md

1gateway lets AI agents buy the data and APIs they need, one call at a time: no signup, no API key, paid per request with USDC on Base or Solana via x402. Coverage: company and compliance checks (sanctions, KYB, SEC filings, Korean companies), Korean real estate, trade and macro data, onchain and market data, and agent utilities such as document-to-Markdown. Every response names its source. Failed calls are never charged.

## How to call

1. Call any `/v1/*` endpoint. Unpaid requests get **HTTP 402** with a `PAYMENT-REQUIRED` header (base64 JSON, x402 v2, USDC on Base or Solana; same price, the 402 lists both).
2. Sign the payment with an x402 client and retry with `PAYMENT-SIGNATURE`. No signup, no API key.
3. Clients: `npx agentcash fetch <url>`, `@x402/fetch` (`wrapFetchWithPayment`), or MCP at `https://1gateway.dev/mcp` (tools/list free, tools/call paid).

Discovery: [OpenAPI](https://1gateway.dev/openapi.json) · [llms.txt](https://1gateway.dev/llms.txt) · [status](https://1gateway.dev/status) · [health](https://1gateway.dev/health) · `npx agentcash discover https://1gateway.dev`

## Billing policy

No charge on failure: payment is settled only after the endpoint returns a 2xx response. Any 4xx or 5xx (bad input, no data, upstream error, timeout, disabled endpoint) is not settled, so the signed payment is never collected. Input is validated before the 402 wherever possible. Over MCP, a tool result with isError is not settled either.

## Endpoints (70)

### kr_company_report

- **GET** `/v1/kr/company/report` — **$0.50** per call (USDC on Base or Solana, x402 exact)
- Korean company due-diligence report in English: profile, registration, procurement, sanctions, recent DART filings and risk in one brief
- When to use: Use when an agent needs a finished English due-diligence brief on a South Korean company. Input: one of business_number, dart_corp_code, stock_code or q (exact name); format=json|markdown; news=true|false. Output: JSON with executiveSummary, businessOverview, financialHighlights (each figure source-checked), procurementActivity, recentEvents (DART, 90 days), riskAssessment, sanctionsResult, dataGaps, sources. AI-written; not advice. Example: ?stock_code=005930

Params:

- `q` (string, optional): Company name (Korean or English), matched exactly after removing legal-form words
- `business_number` (string, optional, pattern ^\d{3}-?\d{2}-?\d{5}$): Business registration number (사업자등록번호), 10 digits
- `stock_code` (string, optional, pattern ^[0-9A-Za-z]{6}$): KRX stock code
- `dart_corp_code` (string, optional, pattern ^\d{8}$): OpenDART corp_code (8 digits)
- `format` (string, optional, one of json|markdown): markdown adds a readable English Markdown rendering of the same report
- `news` (string, optional, one of true|false): Include up to 5 recent third-party news headlines (default true)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/company/report?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&business_number=1248100998&stock_code=005930&dart_corp_code=00126380&format=json&news=true"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/company/report?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&business_number=1248100998&stock_code=005930&dart_corp_code=00126380&format=json&news=true"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ company: object, executiveSummary: string, businessOverview: string, financialHighlights: array, procurementActivity: object, recentEvents: array, news: array, riskAssessment: object, sanctionsResult: object, registration: object, profile: object, dataGaps: array, sources: array, model: string, narrativeSource: string, generatedAt: string, disclaimer: string, cached: boolean, upstreamCostUsd: number }`

### kr_apartment_trades

- **GET** `/v1/realestate/apartment-trades` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea apartment sale transactions (MOLIT) — English JSON with KRW & USD
- When to use: Use when you need actual apartment sale prices in a South Korean district for a month (property research, valuation, comps). Data: MOLIT (Korea land ministry) reported deals since 2006, updated daily. Input: region (5-digit LAWD_CD, e.g. 11680 Gangnam-gu), month (YYYYMM). Output: JSON trades with contract date, complex (Korean + romanized), area m2, floor, build year, price in KRW and USD, price per m2, deal type, cancelled flag. Example: ?region=11680&month=202609

Params:

- `region` (string, required, pattern ^\d{5}$): 5-digit 시군구 code (LAWD_CD), e.g. 11680 = Seoul Gangnam-gu, 11110 = Jongno-gu, 41135 = Seongnam Bundang-gu. Unknown codes → 400 (not charged).
- `month` (string, required, pattern ^(19|20)\d{2}(0[1-9]|1[0-2])$): Contract month YYYYMM, 200601 to the current month (KST)

Example:

```bash
curl -i "https://1gateway.dev/v1/realestate/apartment-trades?region=11680&month=202609"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/realestate/apartment-trades?region=11680&month=202609"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ region: object, month: string, count: integer, currency: object, notes: array, attribution: string, cache: string, trades: array }`

### kr_apartment_trades_summary

- **GET** `/v1/realestate/apartment-trades/summary` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea apartment price summary for a district-month (count, median/avg price and price per m²)
- When to use: Use when you need a quick housing-market snapshot for a South Korean district-month instead of raw trades. Data: MOLIT reported apartment sales, cancelled deals excluded. Input: region (5-digit LAWD_CD, e.g. 11680), month (YYYYMM). Output: JSON count, median/average/min/max price and price per m2 and per pyeong in KRW and USD, breakdown by size class, top complexes by volume. Example: ?region=11680&month=202609

Params:

- `region` (string, required, pattern ^\d{5}$): 5-digit 시군구 code (LAWD_CD), e.g. 11680 = Seoul Gangnam-gu. Unknown codes → 400 (not charged).
- `month` (string, required, pattern ^(19|20)\d{2}(0[1-9]|1[0-2])$): Contract month YYYYMM, 200601 to the current month (KST)

Example:

```bash
curl -i "https://1gateway.dev/v1/realestate/apartment-trades/summary?region=11680&month=202609"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/realestate/apartment-trades/summary?region=11680&month=202609"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ region: object, month: string, currency: object, attribution: string, cache: string, methodology: string, summary: object }`

### kr_bok_ecos_series

- **GET** `/v1/macro/ecos` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Bank of Korea ECOS statistics (BOK-authored series only) with attribution
- When to use: Use when you need official Bank of Korea statistics (base rate, money supply, key indicators) as a time series. Input: stat (ECOS table code, e.g. 722Y001), cycle (A/S/Q/M/SM/D), start, end (period format of cycle), optional item (e.g. 0101000). Output: JSON series with English labels, units, observations [{period,value}] (max 1,000 rows) and source attribution. Only BOK-authored tables are served. Example: ?stat=722Y001&cycle=M&start=202401&end=202412&item=0101000

Params:

- `stat` (string, required, pattern ^[0-9A-Z]{7}$): ECOS statistic table code, e.g. 722Y001 (base rate). Non-BOK tables → 403 (not charged).
- `cycle` (string, required, one of A|S|Q|M|SM|D): A annual, S semi-annual, Q quarterly, M monthly, SM semi-monthly, D daily
- `start` (string, required, pattern ^[0-9A-Z]{4,8}$): Start period in ECOS format (A: YYYY, Q: YYYYQn, M: YYYYMM, D: YYYYMMDD)
- `end` (string, required, pattern ^[0-9A-Z]{4,8}$): End period, same format as start
- `item` (string, optional, pattern ^[0-9A-Za-z?]+$): Item code 1 (e.g. 0101000). Optional item2..item4 also accepted.

Example:

```bash
curl -i "https://1gateway.dev/v1/macro/ecos?stat=722Y001&cycle=M&start=202401&end=202412&item=0101000"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/macro/ecos?stat=722Y001&cycle=M&start=202401&end=202412&item=0101000"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ statCode: string, statNameKo: string, statNameEn: string, cycle: string, cycleEn: string, series: array, totalRows: integer, rowLimit: integer, truncated: boolean, attribution: string, license: string, cache: string }`

### kr_weather_forecast

- **GET** `/v1/weather/forecast` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea short-term weather forecast (KMA) by latitude/longitude
- When to use: Use when you need the official weather forecast for a point in South Korea for the next ~3-5 days. Data: KMA (Korea Meteorological Administration) village forecast on a 5 km grid, issued 8 times a day. Input: lat, lon (WGS84 decimal; Korea only). Output: JSON hourly then 3-hourly temperature C, sky, precipitation type and probability %, rain and snow amounts, humidity %, wind; plus daily min/max. Example: ?lat=37.5665&lon=126.978

Params:

- `lat` (number, required): Latitude, WGS84 decimal degrees (KMA domain ≈ 32–44; outside → 400, not charged)
- `lon` (number, required): Longitude, WGS84 decimal degrees (KMA domain ≈ 123–133)

Example:

```bash
curl -i "https://1gateway.dev/v1/weather/forecast?lat=37.5665&lon=126.978"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/weather/forecast?lat=37.5665&lon=126.978"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ location: object, issuedAt: string, timezone: string, attribution: string, cache: string, hourly: array, daily: array }`

### kr_public_holidays

- **GET** `/v1/calendar/holidays` — **$0.0027** per call (USDC on Base or Solana, x402 exact)
- Korean public holidays for a year (KASI): South Korea holiday calendar with English names
- When to use: Use when you need South Korea's official public holidays for a year (business-day calculation, scheduling, settlement and payroll calendars). Data: KASI (Korea Astronomy and Space Science Institute) special-day register, incl. substitute and temporary holidays once promulgated. Input: year (YYYY, 2004-2100). Output: JSON list with date, weekday, Korean and English name, isPublicHoliday, kind. Example: ?year=2026

Params:

- `year` (integer, required): Year YYYY (2004–2100)

Example:

```bash
curl -i "https://1gateway.dev/v1/calendar/holidays?year=2026"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/calendar/holidays?year=2026"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ year: integer, country: string, timezone: string, count: integer, publicHolidayCount: integer, notes: array, attribution: string, cache: string, holidays: array }`

### kr_trade_exports_10day

- **GET** `/v1/trade/exports/10day` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea 10-day export flash (Korea Customs): totals, YoY, top items and markets
- When to use: Use when you need South Korea's earliest export read: the Korea Customs 10-day provisional release (days 1-10, 1-20, full month; out on the 11th, 21st and 1st). Input: optional month (YYYYMM) and period (10, 20, full); default latest. Output: JSON exports in USD with YoY %, latest 10-day increment, 10 key items (semiconductors, cars, ships...) and 10 markets (China, US, EU, Vietnam...) with YoY and share, next release date. Example: ?month=202609

Params:

- `month` (string, optional, pattern ^(19|20)\d{2}(0[1-9]|1[0-2])$): Release month YYYYMM (default: latest release; data from 2024-09)
- `period` (string, optional, one of 10|20|full): 10 (days 1-10), 20 (days 1-20) or full; requires month. Default: latest available for the month

Example:

```bash
curl -i "https://1gateway.dev/v1/trade/exports/10day?month=202609&period=full"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/trade/exports/10day?month=202609&period=full"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ release: object, nextRelease: object, totalExports: object, items: array, countries: array, unit: string, notes: array, attribution: string }`

### kr_trade_hs

- **GET** `/v1/trade/hs` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea monthly exports/imports by HS code (Korea Customs), English HS descriptions, YoY
- When to use: Use when you need South Korea's monthly trade for a product by HS code (e.g. 8542 chips, 870323 cars, 2710 petroleum). Data: Korea Customs Service, finalized monthly. Input: hs (2-10 digit prefix), optional month (YYYYMM, default latest), limit (1-100), sort (exports, imports, balance, total). Output: JSON totals (exports FOB, imports CIF, balance in USD, kg) with YoY % and 10-digit HSK lines with English HS descriptions and YoY. Example: ?hs=8542&month=202608

Params:

- `hs` (string, required, pattern ^\d{2,10}$): HS code prefix, 2-10 digits (e.g. 8542 integrated circuits, 870323 passenger cars)
- `month` (string, optional, pattern ^(19|20)\d{2}(0[1-9]|1[0-2])$): Month YYYYMM (default: latest finalized month)
- `limit` (integer, optional, default 20): Max 10-digit lines returned (1-100, default 20)
- `sort` (string, optional, one of exports|imports|balance|total, default exports): Line order (default exports)

Example:

```bash
curl -i "https://1gateway.dev/v1/trade/hs?hs=8542&month=202608&limit=20&sort=exports"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/trade/hs?hs=8542&month=202608&limit=20&sort=exports"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ hs: string, descriptionEn: string, descriptionLevel: string, month: string, compareMonth: string, unit: string, total: object, lineCount: integer, sort: string, lines: array, notes: array, attribution: string }`

### kr_trade_pulse

- **GET** `/v1/trade/pulse` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea Trade Pulse: latest export flash, 12-month trend and semiconductor detail in one call
- When to use: Use when you need a one-call read on South Korea's export cycle for macro, FX or chip-sector analysis. Data: Korea Customs 10-day and monthly releases. Input: none. Output: JSON headline (latest exports and YoY, semiconductor share, strongest/weakest item and market, 3-month average YoY, momentum), latest release by item and market, 12 monthly export totals with YoY, and HS 8542 integrated-circuit trade for the latest month. Example: /v1/trade/pulse

Params:


Example:

```bash
curl -i "https://1gateway.dev/v1/trade/pulse"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/trade/pulse"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ asOf: object, nextRelease: object, headline: object, latestRelease: object, monthlyExports: array, semiconductorsHs8542: object, unit: string, notes: array, attribution: string }`

### kr_company_resolve

- **GET** `/v1/kr/company/resolve` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Korean company resolver: name, business number or stock code to one stable company_id
- When to use: Use when an agent must identify a South Korean company before looking up its profile or public-procurement record. Input: one of business_number (10 digits), dart_corp_code, stock_code (KRX, e.g. 005930) or q (company name, exact match ignoring 주식회사/(주)/spacing); first wins. Output: JSON companies with stable companyId, Korean and English names, stock code, DART code, match type, ambiguous flag. Data: OpenDART, KONEPS. Example: ?stock_code=005930

Params:

- `q` (string, optional): Company name (Korean or English), matched exactly after removing legal-form words
- `business_number` (string, optional, pattern ^\d{3}-?\d{2}-?\d{5}$): Business registration number (사업자등록번호), 10 digits
- `stock_code` (string, optional, pattern ^[0-9A-Za-z]{6}$): KRX stock code
- `dart_corp_code` (string, optional, pattern ^\d{8}$): OpenDART corp_code (8 digits)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/company/resolve?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&business_number=1248100998&stock_code=005930&dart_corp_code=00126380"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/company/resolve?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&business_number=1248100998&stock_code=005930&dart_corp_code=00126380"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: object, count: integer, ambiguous: boolean, companies: array, sources: array, attribution: array, note: string }`

### kr_company_profile

- **GET** `/v1/kr/company` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korean company profile: DART registry data joined with its public-procurement vendor record
- When to use: Use when an agent needs a normalized profile of a South Korean company for KYB, research or sales. Input: id (companyId from /v1/kr/company/resolve). Output: JSON profile: names, business/corporate/DART/stock ids, market, KSIC code, founding date, fiscal year end, address, homepage, KONEPS supplier registration. No CEO names. DART data is a weekly snapshot of KRX-listed companies (asOf in response). Data: OpenDART, KONEPS. Example: ?id=kr-dart-00126380

Params:

- `id` (string, required, pattern ^kr-(dart-\d{8}|brn-\d{10})$): companyId from /v1/kr/company/resolve

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/company?id=kr-dart-00126380"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/company?id=kr-dart-00126380"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ company: object, procurementVendorLookup: string, sources: array, attribution: array, note: string }`

### kr_company_procurement

- **GET** `/v1/kr/company/procurement` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Korean company public-procurement awards: every KONEPS contract it won, with totals and top agencies
- When to use: Use when an agent needs a South Korean company's government contract wins for sales, credit or competitor research. Input: id (companyId) or business_number; optional from/to (YYYY-MM-DD, max 366 days, default last 12 months), category (goods,works,services,foreign), min_amount, limit, offset. Output: JSON summary (award count, total and largest KRW, top agencies) and awards with title, agency, amount, date. Data: KONEPS. Example: ?id=kr-dart-00126380

Params:

- `id` (string, optional, pattern ^kr-(dart-\d{8}|brn-\d{10})$): companyId from /v1/kr/company/resolve; give id or business_number
- `business_number` (string, optional, pattern ^\d{3}-?\d{2}-?\d{5}$): Business registration number; give id or business_number
- `from` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Bid opening date from (default: 365 days before to)
- `to` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Bid opening date to (default: today)
- `category` (string, optional): Comma list of goods, works, services, foreign (default all)
- `min_amount` (number, optional): Only awards of at least this many KRW
- `limit` (integer, optional): Awards per page (default 50)
- `offset` (integer, optional): Paging offset (from page.nextOffset)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/company/procurement?id=kr-dart-00126380&business_number=1248100998&from=2026-01-01&to=2026-10-19&category=goods%2Cservices&min_amount=10000000&limit=50&offset=0"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/company/procurement?id=kr-dart-00126380&business_number=1248100998&from=2026-01-01&to=2026-10-19&category=goods%2Cservices&min_amount=10000000&limit=50&offset=0"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ company: object, range: object, summary: object, awards: array, page: object, truncated: boolean, sources: array, attribution: array, note: string }`

### kr_business_status

- **GET** `/v1/kr/business/status` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Korean business registration status (NTS): active, suspended or closed, VAT type, closure date
- When to use: Use when an agent must check that a South Korean business is still operating before paying, contracting or onboarding it (KYB, invoice checks). Input: b_no (1-20 business registration numbers, comma-separated, hyphens ok). Output: JSON per number: status (active, suspended, closed, unregistered), VAT taxpayer type, closure date, tax-type change and e-invoice dates, companyId. Data: National Tax Service, synced every 30 min. Example: ?b_no=1248100998

Params:

- `b_no` (string, required, pattern ^\d{3}-?\d{2}-?\d{5}(,\s*\d{3}-?\d{2}-?\d{5}){0,19}$): Business registration numbers (사업자등록번호), 10 digits each, comma-separated (max 20); invalid check digit → 400, not charged

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/business/status?b_no=1248100998"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/business/status?b_no=1248100998"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ count: integer, asOf: string, notes: array, attribution: string, cache: string, businesses: array }`

### kr_address

- **GET** `/v1/kr/address` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Korean address lookup: official road-name address, English address and postal code
- When to use: Use when an agent must normalize or translate a South Korean address (shipping, checkout, KYC forms). Input: q (Korean address or part of one, e.g. road name + number or neighborhood + lot number), optional limit (1-5). Output: JSON matches with official road-name and lot-number addresses in Korean and English, postal code, building name, admin and road codes. Data: Ministry of the Interior road-name address API. Example: ?q=테헤란로 152

Params:

- `q` (string, required): Korean address or part of it (2+ chars; at most 40 Korean characters; no SQL words or % = > < [ ]); bad input → 400, not charged
- `limit` (integer, optional): Matches returned (default 3)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/address?q=%ED%85%8C%ED%97%A4%EB%9E%80%EB%A1%9C+152&limit=3"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/address?q=%ED%85%8C%ED%97%A4%EB%9E%80%EB%A1%9C+152&limit=3"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: string, totalCount: integer, count: integer, matches: array, notes: array, attribution: string, retrievedAt: string, cache: string }`

### kr_filings

- **GET** `/v1/kr/filings` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korean DART filings: recent major disclosures for a company or a day, with English type labels
- When to use: Use when an agent needs recent material disclosures of a South Korean listed company (rights offerings, CBs, buybacks, M&A, litigation, earnings, periodic reports). Input: corp (DART corp_code, KRX stock code or kr-dart- id) or q (exact name), optional days (1-365, default 30); or date (YYYY-MM-DD, KST). Output: JSON list with rceptNo, date, Korean title, English type label, DART link. Summaries: /v1/kr/filings/summary. Example: ?corp=005930&days=90

Params:

- `corp` (string, optional): DART corp_code (8 digits), KRX stock code (6 characters) or kr-dart-<corp_code>
- `q` (string, optional): Company name (Korean or English), matched exactly after removing legal-form words
- `date` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Receipt date (KST); with corp, only that day
- `days` (integer, optional): Look-back window for corp/q (default 30)
- `limit` (integer, optional): Max filings returned (default 20)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/filings?corp=005930&q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&date=2026-10-23&days=90&limit=20"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/filings?corp=005930&q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&date=2026-10-23&days=90&limit=20"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: object, company: object, count: integer, total: integer, filings: array, coverage: string, attribution: string, notes: array }`

### kr_filing_summary

- **GET** `/v1/kr/filings/summary` — **$0.02** per call (USDC on Base or Solana, x402 exact)
- English summary of a Korean DART filing: what happened, key figures, parties, dates
- When to use: Use when an agent needs a Korean corporate disclosure in English. Input: rcept_no (14-digit DART receipt number from /v1/kr/filings). Output: JSON with headline, what_happened, key_figures (amounts, ratios, share counts with units), parties, key_dates, why_it_matters, confidence, original Korean title and DART link. Machine-generated paraphrase, not the official text. Unknown rcept_no or model outage is refused before payment. Example: ?rcept_no=20261023000123

Params:

- `rcept_no` (string, required, pattern ^\d{14}$): DART receipt number (14 digits)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/filings/summary?rcept_no=20261023000123"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/filings/summary?rcept_no=20261023000123"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ filing: object, summary: object, model: string, generatedAt: string, truncated: boolean, cached: boolean, upstreamCostUsd: number, attribution: string }`

### kr_supplier_check

- **GET** `/v1/kr/supplier/check` — **$0.015** per call (USDC on Base or Solana, x402 exact)
- Korea company KYB / Korean supplier check: identity, NTS business status, DART profile, public-procurement record and sanctions in one call
- When to use: Use when an agent must vet a South Korean supplier or counterparty before paying, contracting or onboarding it. Input: one of business_number, dart_corp_code, stock_code or q (exact company name). Output: JSON summary (riskLevel, riskFlags such as closed/suspended or sanctions match, per-section status) plus NTS status, DART profile, 12-month KONEPS award summary and OFAC/EU/UK screening of the English name. Not a legal determination. Example: ?stock_code=005930

Params:

- `q` (string, optional): Company name (Korean or English), matched exactly after removing legal-form words
- `business_number` (string, optional, pattern ^\d{3}-?\d{2}-?\d{5}$): Business registration number (사업자등록번호), 10 digits
- `stock_code` (string, optional, pattern ^[0-9A-Za-z]{6}$): KRX stock code
- `dart_corp_code` (string, optional, pattern ^\d{8}$): OpenDART corp_code (8 digits)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/supplier/check?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&business_number=1248100998&stock_code=005930&dart_corp_code=00126380"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/supplier/check?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&business_number=1248100998&stock_code=005930&dart_corp_code=00126380"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ company: object, ambiguous: boolean, alternatives: array, summary: object, registration: object, profile: object, procurement: object, sanctions: object, checkedAt: string, attribution: array, disclaimer: string, notes: array }`

### web_metadata

- **GET** `/v1/web/metadata` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- URL metadata / link preview: title, description, Open Graph, Twitter card, icons, feeds, JSON-LD
- When to use: Use when an agent needs to know what a URL is before reading it, or to build a link preview or citation. Input: url (public http/https). Output: JSON with final URL after redirects, HTTP status, content type, title, description, site name, language, canonical, preview image, favicon, Open Graph and Twitter tags, RSS/Atom feeds, hreflang alternates, JSON-LD types, robots, first H1. No JavaScript is run. Example: ?url=https://developer.mozilla.org/en-US/

Params:

- `url` (string, required, pattern ^https?://): Public http(s) URL; private/internal addresses → 400 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/web/metadata?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2F"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/metadata?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2F"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, finalUrl: string, status: integer, contentType: string, redirects: array, truncated: boolean, title: string, description: string, siteName: string, lang: string, canonical: string, image: string, favicon: string, type: null, author: null, publishedTime: null, modifiedTime: null, keywords: array, robots: null, themeColor: null, generator: null, openGraph: object, twitter: object, icons: array, feeds: array, alternates: array, jsonLdTypes: array, headingH1: string, cache: string, notes: array }`

### domain_lookup

- **GET** `/v1/domain/lookup` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Domain lookup: DNS records, mail provider, SPF/DMARC, RDAP registrar, creation/expiry dates
- When to use: Use when an agent must check a domain: does it resolve, who hosts its DNS and mail, is email authenticated, how old is it, when does it expire. Input: domain (e.g. example.com; URLs accepted). Output: JSON DNS records (A, AAAA, CNAME, MX, NS, TXT, CAA, SOA), mail provider, parsed SPF and DMARC, DNS provider, and RDAP registration (registrar, created, expires, age in days, status, DNSSEC). No contact data. Example: ?domain=google.com

Params:

- `domain` (string, required): Public domain or hostname (punycode for IDNs, e.g. xn--...); a URL is reduced to its hostname. Internal/reserved names → 400 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/domain/lookup?domain=google.com"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/domain/lookup?domain=google.com"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ domain: string, resolves: boolean, dnsStatus: string, dns: object, mx: array, mail: object, dnsProvider: string, verificationTokens: array, registration: object, cache: string, sources: array, notes: array }`

### fx_rates

- **GET** `/v1/fx/rates` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- FX reference rates (ECB): 30 currencies incl. KRW, any base, conversion, last 90 days
- When to use: Use when you need an official daily FX rate or currency conversion (USD, EUR, KRW, JPY, CNY, GBP + 24 more). Input: base (default EUR), optional symbols (comma list), date (YYYY-MM-DD, last ~90 days; weekends use the prior fixing), amount. Output: JSON rates for the fixing date, % change vs prior fixing, converted amounts, raw ECB EUR rates. Source: ECB statistics, updated each TARGET day ~16:00 CET; reference only. Example: ?base=USD&symbols=KRW,JPY&amount=100

Params:

- `base` (string, optional, one of EUR|USD|JPY|KRW|CNY|GBP|AUD|BRL|CAD|CHF|CZK|DKK|HKD|HUF|IDR|ILS|INR|ISK|MXN|MYR|NOK|NZD|PHP|PLN|RON|SEK|SGD|THB|TRY|ZAR, default EUR): Base currency, ISO 4217 (one of the 30 ECB reference currencies; default EUR)
- `symbols` (string, optional, pattern ^[A-Za-z]{3}(,[A-Za-z]{3})*$): Comma-separated target currencies (default: all). Supported: EUR,USD,JPY,KRW,CNY,GBP,AUD,BRL,CAD,CHF,CZK,DKK,HKD,HUF,IDR,ILS,INR,ISK,MXN,MYR,NOK,NZD,PHP,PLN,RON,SEK,SGD,THB,TRY,ZAR
- `date` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Fixing date YYYY-MM-DD within the last ~90 days (default latest)
- `amount` (number, optional): Amount in base currency to convert

Example:

```bash
curl -i "https://1gateway.dev/v1/fx/rates?base=USD&symbols=KRW%2CJPY%2CEUR&date=2026-10-09&amount=100"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/fx/rates?base=USD&symbols=KRW%2CJPY%2CEUR&date=2026-10-09&amount=100"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ base: string, date: string, requestedDate: string|null, previousDate: string, rates: object, changePctVsPrevious: object, amount: integer, converted: object, derived: boolean, ecbEurRates: object, names: object, notes: array, attribution: string }`

### time_convert

- **GET** `/v1/time/convert` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Time-zone conversion: one instant in many zones, DST-aware, offsets, business hours
- When to use: Use when scheduling across time zones or turning a local time into UTC without guessing DST. Input: to (IANA zones or KST, PST, CET...), optional from (zone of a local time, default UTC), time (ISO 8601, Unix seconds, or now). Output: JSON UTC instant, Unix time, and per zone: local ISO time with offset, weekday, abbreviation, DST and business-hours flags, day difference. Example: ?time=2026-10-12T09:00&from=Asia/Seoul&to=America/New_York,Europe/London

Params:

- `to` (string, required, pattern ^[A-Za-z0-9_+\-/]+(\s*,\s*[A-Za-z0-9_+\-/]+){0,24}$): 1–25 target zones, comma-separated (IANA names like Asia/Seoul, UTC, or abbreviations like KST, PST, CET)
- `from` (string, optional, pattern ^[A-Za-z0-9_+\-/]+$, default UTC): Zone of the input local time (default UTC; ignored when time has an offset)
- `time` (string, optional, pattern ^(now|\d{9,13}|\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}(:\d{2}(\.\d+)?)?)?\s*(Z|z|[+-]\d{2}:?\d{2})?)$, default now): ISO 8601 date-time (2026-10-12T09:00, 2026-10-12T09:00:00+09:00), Unix seconds/ms, or now

Example:

```bash
curl -i "https://1gateway.dev/v1/time/convert?to=America%2FNew_York%2CEurope%2FLondon&from=Asia%2FSeoul&time=2026-10-12T09%3A00"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/time/convert?to=America%2FNew_York%2CEurope%2FLondon&from=Asia%2FSeoul&time=2026-10-12T09%3A00"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ input: string, utc: string, unix: integer, from: object, to: array, notes: array }`

### time_overlap

- **GET** `/v1/time/overlap` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Meeting time finder: working-hour overlap across time zones, ranked slots, DST-aware
- When to use: Use when scheduling a meeting across time zones. Input: zones (2-10, IANA or KST/PST/CET), date, work_start/work_end (default 09:00-18:00), include_weekends. Output: JSON overlap windows in UTC and every zone's local time, top 3 one-hour slots ranked by distance from each zone's day edges, partial windows when no full overlap, next DST change per zone. Example: ?zones=America/New_York,Europe/London,Asia/Seoul&date=2026-11-03

Params:

- `zones` (string, required, pattern ^[A-Za-z0-9_+\-/]+(\s*,\s*[A-Za-z0-9_+\-/]+){1,9}$): 2–10 time zones, comma-separated; the first is the anchor whose local date is scanned
- `date` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Meeting date YYYY-MM-DD in the anchor zone (default today UTC)
- `work_start` (string, optional, pattern ^([01]\d|2[0-3]):[0-5]\d$, default 09:00): Local start of working hours, HH:MM
- `work_end` (string, optional, pattern ^([01]\d|2[0-3]):[0-5]\d$, default 18:00): Local end of working hours, HH:MM
- `include_weekends` (string, optional, one of true|false, default false): Count Saturday/Sunday as working days

Example:

```bash
curl -i "https://1gateway.dev/v1/time/overlap?zones=America%2FNew_York%2CEurope%2FLondon%2CAsia%2FSeoul&date=2026-11-03&work_start=09%3A00&work_end=18%3A00&include_weekends=false"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/time/overlap?zones=America%2FNew_York%2CEurope%2FLondon%2CAsia%2FSeoul&date=2026-11-03&work_start=09%3A00&work_end=18%3A00&include_weekends=false"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ date: string, anchorZone: string, workHours: object, fullOverlap: boolean, overlapWindows: array, partialWindows: array, bestSlots: array, zones: array, notes: array }`

### time_business_days

- **GET** `/v1/time/business-days` — **$0.003** per call (USDC on Base or Solana, x402 exact)
- Business-day calculator: add or count working days, skipping weekends and public holidays (KR, US, GB, DE, FR, JP)
- When to use: Use when computing due dates, SLAs, settlement or delivery dates. Input: start date, then days (add -260..260 business days) or end (count business days between), optional country KR, US, GB, DE, FR or JP for public holidays (omit = weekends only). Output: JSON result date or business/calendar day counts, holidays skipped on the way, holiday scope. Example: ?start=2026-12-22&days=5&country=US

Params:

- `start` (string, required, pattern ^\d{4}-\d{2}-\d{2}$): Start date YYYY-MM-DD (2004–2099)
- `days` (integer, optional): Business days to add (negative = go back); give days or end (days wins if both)
- `end` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Count business days from start (excluded) to end (included), at most 2 years apart; ignored when days is given
- `country` (string, optional, one of KR|US|GB|DE|FR|JP): Public holiday calendar (omit for weekends only)

Example:

```bash
curl -i "https://1gateway.dev/v1/time/business-days?start=2026-12-22&days=5&end=2027-01-15&country=US"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/time/business-days?start=2026-12-22&days=5&end=2027-01-15&country=US"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ start: string, country: string, mode: string, days: integer, resultDate: string, resultWeekday: string, startIsBusinessDay: boolean, holidaysSkipped: array, holidayScope: string, supportedCountries: array, notes: array, attribution: string, end: string, businessDays: integer, calendarDays: integer, countRule: string }`

### site_profile

- **GET** `/v1/web/site-profile` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Site profile: page metadata + security headers + robots/llms.txt + DNS, mail auth and domain age in one call
- When to use: Use when an agent must vet or research a website in one call (lead research, security or SEO check, is this site legit). Input: url or bare domain. Output: JSON page metadata, HTTP status, HTTPS and HTTP-to-HTTPS redirect, server and hosting hints, 7 security headers, robots.txt (sitemaps, AI-crawler rules), llms.txt presence, plus domain DNS, mail provider, SPF/DMARC and RDAP registrar, age and expiry. Example: ?url=stripe.com

Params:

- `url` (string, required): Site URL or bare domain (https:// assumed); private/internal targets → 400 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/web/site-profile?url=stripe.com"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/site-profile?url=stripe.com"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, finalUrl: string, status: integer, https: boolean, httpRedirectsToHttps: null, server: string, techHints: array, securityHeaders: object, page: object, robotsTxt: object, llmsTxt: object, domain: object, cache: string, sources: array, notes: array }`

### base_gas

- **GET** `/v1/onchain/base/gas` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Base gas and fee estimate: base fee, priority tiers, cost per action in ETH and USD
- When to use: Use when an agent must price or time a Base transaction. Input: none. Output: JSON current and next base fee, priority fee tiers (slow/standard/fast from the last 20 blocks), suggested maxFeePerGas, block fullness, and typical cost of an ETH transfer, ERC-20 transfer/approve, DEX swap, NFT mint and contract deploy (L2 fee + L1 data fee) in ETH and USD. Example: /v1/onchain/base/gas

Params:


Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/base/gas"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/base/gas"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, chainId: integer, block: object, baseFeeGwei: number, nextBaseFeeGwei: number, priorityFeeGwei: object, suggested: object, recentBlocks: object, ethUsd: number|null, costs: array, rpc: object, note: string }`

### weather_global

- **GET** `/v1/weather/global` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Worldwide weather forecast: current, hourly (72 h) and 10-day daily for any coordinates
- When to use: Use when an agent needs the weather anywhere in the world. Input: lat, lon, optional hours (0-72 hourly steps, default 24), tz (IANA zone for daily summaries, default UTC). Output: JSON current temperature, symbol, wind, humidity, cloud, pressure; hourly series; daily min/max, precipitation, max wind, symbol for ~10 days. Data: MET Norway. Example: ?lat=51.5072&lon=-0.1276&tz=Europe/London

Params:

- `lat` (number, required): Latitude, WGS84 decimal degrees (rounded to 0.01)
- `lon` (number, required): Longitude, WGS84 decimal degrees (rounded to 0.01)
- `hours` (integer, optional): Hourly steps to return (default 24)
- `tz` (string, optional): IANA time zone for daily summaries and local hours (default UTC)

Example:

```bash
curl -i "https://1gateway.dev/v1/weather/global?lat=51.5072&lon=-0.1276&hours=24&tz=Europe%2FLondon"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/weather/global?lat=51.5072&lon=-0.1276&hours=24&tz=Europe%2FLondon"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ location: object, updatedAt: string|null, current: object, hourly: array, daily: array, units: object, attribution: string, note: string }`

### package_vulnerabilities

- **GET** `/v1/dev/vulnerabilities` — **$0.003** per call (USDC on Base or Solana, x402 exact)
- Open-source package vulnerabilities: package@version to CVEs, severity, fixed versions
- When to use: Use when an agent must check a dependency before installing or upgrading: is this exact package version vulnerable? Input: package, ecosystem (npm, PyPI, Go, Maven, crates.io, NuGet, RubyGems, Packagist...), version. Output: JSON vulnerable yes/no, counts by severity, advisories (GHSA/CVE id, summary, severity, CVSS, CWE, fixed versions, links). Data: OSV.dev. Example: ?package=lodash&ecosystem=npm&version=4.17.15

Params:

- `package` (string, required): Package name as in its registry (Go: module path; Maven: group:artifact)
- `ecosystem` (string, required, one of npm|PyPI|Go|Maven|crates.io|NuGet|RubyGems|Packagist|Pub|Hex|Hackage|CRAN|SwiftURL): Package ecosystem (case-insensitive; pip/python, cargo/rust, composer, gem also accepted)
- `version` (string, required): Exact released version

Example:

```bash
curl -i "https://1gateway.dev/v1/dev/vulnerabilities?package=lodash&ecosystem=npm&version=4.17.15"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/dev/vulnerabilities?package=lodash&ecosystem=npm&version=4.17.15"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ package: object, vulnerable: boolean, count: integer, bySeverity: object, fixedVersionsMentioned: array, vulnerabilities: array, truncated: boolean, attribution: string, note: string }`

### sanctions_screen

- **GET** `/v1/compliance/sanctions` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- OFAC sanctions name search: people, companies, vessels on the U.S. SDN list
- When to use: Use when an agent must check a person, company, vessel or aircraft against the U.S. Treasury OFAC SDN list before paying, onboarding or shipping. Input: name (fuzzy, aliases included), optional type, min_score, limit. Output: JSON potential matches with score, SDN entry, programs, countries, aliases, OFAC link, list as-of date, data age. Not a legal determination. Example: ?name=Lazarus+Group

Params:

- `name` (string, required): Person, company, vessel or aircraft name in Latin script; fuzzy match over SDN names and aliases
- `type` (string, optional, one of entity|individual|vessel|aircraft): Only match this SDN entry type
- `min_score` (number, optional): Name match threshold 0.6-1 (default 0.85)
- `limit` (integer, optional): Max matches (default 10)
- `lists` (string, optional, pattern ^(all|(ofac|eu|uk)(,(ofac|eu|uk))*)$): Lists to search: ofac (default), eu, uk, comma-separated, or all

Example:

```bash
curl -i "https://1gateway.dev/v1/compliance/sanctions?name=Lazarus+Group&type=entity&min_score=0.85&limit=10&lists=ofac"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/compliance/sanctions?name=Lazarus+Group&type=entity&min_score=0.85&limit=10&lists=ofac"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ list: object, query: object, candidates_scanned: integer, potential_match: boolean, hit: boolean, matches: array, disclaimer: string }`

### kyb_check

- **GET** `/v1/kyb/check` — **$0.02** per call (USDC on Base or Solana, x402 exact)
- KYB check: sanctions (OFAC, EU, UK) + LEI identity + EU VAT validation in one call
- When to use: Use when an agent must vet a company or counterparty before paying, onboarding or invoicing. Input: name, optional country (ISO2), lei, vat (EU, with prefix). Output: JSON summary (sanctions hits, LEI found/status, VAT valid), sanctions matches across OFAC SDN, EU and UK lists, GLEIF entity record with parents, VIES VAT result; a down VIES/GLEIF marks only that part. Not a legal determination. Example: ?name=Siemens+AG&lei=W38RGI023J3WT1HWRP32&vat=DE129273398

Params:

- `name` (string, required): Company or person name in Latin script
- `country` (string, optional, pattern ^[A-Za-z]{2}$): ISO 3166-1 alpha-2 country of the legal address (narrows the LEI search)
- `lei` (string, optional, pattern ^[A-Za-z0-9]{18}[0-9]{2}$): Legal Entity Identifier, if known (exact LEI lookup instead of name search)
- `vat` (string, optional): EU VAT number with country prefix (Greece = EL), validated in VIES

Example:

```bash
curl -i "https://1gateway.dev/v1/kyb/check?name=Siemens+AG&country=DE&lei=W38RGI023J3WT1HWRP32&vat=DE129273398"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kyb/check?name=Siemens+AG&country=DE&lei=W38RGI023J3WT1HWRP32&vat=DE129273398"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: object, summary: object, sanctions: object, lei: object, vat: object, attribution: object, disclaimer: string }`

### sanctions_address

- **GET** `/v1/compliance/sanctions/address` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- OFAC sanctions wallet check: crypto address against the U.S. SDN list
- When to use: Use when an agent must check a crypto wallet against the digital currency addresses on the U.S. Treasury OFAC SDN list before paying or accepting funds. Input: address (EVM matched on every EVM chain; BTC, TRX, SOL...), optional chain. Output: JSON listed yes/no, SDN entry, programs, listed currency and network, OFAC link, list as-of date, data age. Not a legal determination. Example: ?address=0x098B716B8Aaf21512996dC57EB0615e2383E2f96

Params:

- `address` (string, required, pattern ^([A-Za-z]+:)?[A-Za-z0-9]{20,120}$): Crypto address to check (0x… EVM, BTC, TRX, SOL, …)
- `chain` (string, optional): Optional chain (ethereum, base, bitcoin, tron, solana, …): checks the address format and marks listings on that network

Example:

```bash
curl -i "https://1gateway.dev/v1/compliance/sanctions/address?address=0x098B716B8Aaf21512996dC57EB0615e2383E2f96&chain=base"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/compliance/sanctions/address?address=0x098B716B8Aaf21512996dC57EB0615e2383E2f96&chain=base"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ list: object, query: object, listed: boolean, hit: boolean, match_rule: string, matches: array, disclaimer: string }`

### sec_filings

- **GET** `/v1/filings/us` — **$0.0027** per call (USDC on Base or Solana, x402 exact)
- SEC EDGAR filings: 10-K, 10-Q, 8-K and more for any U.S.-listed company by ticker or CIK
- When to use: Use when an agent needs a U.S. public company's SEC filings: latest 10-K/10-Q, 8-K events, proxies, S-1s. Input: ticker or cik, optional form (comma list, e.g. 10-K,8-K), since (YYYY-MM-DD), limit. Output: JSON company profile (CIK, name, industry, exchange, fiscal year end) and filings with dates, 8-K item codes and titles, XBRL flags, sec.gov links. Insider forms without filer names. Data: SEC EDGAR. Example: ?ticker=AAPL&form=10-K,8-K

Params:

- `ticker` (string, optional, pattern ^[A-Za-z][A-Za-z0-9]{0,6}([.-][A-Za-z0-9]{1,3})?$): U.S. ticker (AAPL, BRK.B); give ticker or cik
- `cik` (string, optional, pattern ^\d{1,10}$): SEC Central Index Key (e.g. 320193); give ticker or cik
- `form` (string, optional): Only these form types, comma-separated (10-K, 10-Q, 8-K, DEF 14A, S-1, 4, 13F-HR…)
- `since` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Only filings on or after this date (YYYY-MM-DD)
- `limit` (integer, optional): Max filings (default 20)

Example:

```bash
curl -i "https://1gateway.dev/v1/filings/us?ticker=AAPL&cik=320193&form=10-K%2C8-K&since=2026-01-01&limit=20"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/filings/us?ticker=AAPL&cik=320193&form=10-K%2C8-K&since=2026-01-01&limit=20"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ company: object, query: object, count: integer, matchingInWindow: integer, truncated: boolean, byForm: object, filings: array, coverage: object, cache: string, attribution: string, note: string }`

### web_search

- **GET** `/v1/web/search` — **$0.006** per call (USDC on Base or Solana, x402 exact)
- Web search for agents: Google results as clean JSON (title, URL, date)
- When to use: Use when an agent needs current web results for a query. Input: q, optional max (1-10, default 5), time_range (day, week, month, year). Output: JSON results with title, URL and date when known, provider and retrieval time. For page text use /v1/web/search-read. Provider failure is not charged. Example: ?q=x402+payment+protocol&max=5

Params:

- `q` (string, required): Search query
- `max` (integer, optional): Number of results (default 5)
- `time_range` (string, optional, one of day|week|month|year): Only results from the past day, week, month or year

Example:

```bash
curl -i "https://1gateway.dev/v1/web/search?q=x402+payment+protocol&max=5&time_range=month"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/search?q=x402+payment+protocol&max=5&time_range=month"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: string, timeRange: null, count: integer, results: array, provider: string, retrievedAt: string, cached: boolean, upstreamCostUsd: number, attribution: string, notes: array }`

### web_search_read

- **GET** `/v1/web/search-read` — **$0.02** per call (USDC on Base or Solana, x402 exact)
- Web search + read: top results with page text as Markdown
- When to use: Use when an agent needs to search and read in one call. Input: q, optional max (1-10, default 5), time_range (day, week, month, year). Output: JSON results (title, URL, date) and, for the top 3, the page converted to Markdown (up to 4,000 characters each; a page that fails is marked, the rest still ship). Provider failure is not charged. Example: ?q=EU+AI+Act+timeline&max=5

Params:

- `q` (string, required): Search query
- `max` (integer, optional): Number of results (default 5)
- `time_range` (string, optional, one of day|week|month|year): Only results from the past day, week, month or year

Example:

```bash
curl -i "https://1gateway.dev/v1/web/search-read?q=x402+payment+protocol&max=5&time_range=month"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/search-read?q=x402+payment+protocol&max=5&time_range=month"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: string, timeRange: null, count: integer, pagesRead: integer, results: array, provider: string, retrievedAt: string, cached: boolean, upstreamCostUsd: number, attribution: string, notes: array }`

### web_answer

- **GET** `/v1/web/answer` — **$0.012** per call (USDC on Base or Solana, x402 exact)
- Web answer with citations: search, read the top pages, answer in JSON with source quotes
- When to use: Use when an agent needs a sourced answer to a question from the live web in one call. Input: q (question), optional time_range (day, week, month, year). Output: JSON answer (English, inline [n] citations), citations [{url, title, quote}], confidence, notes, sources read. Searches, reads the top 4 pages itself and answers only from them. Provider or model failure is not charged. Example: ?q=what+is+the+x402+payment+protocol

Params:

- `q` (string, required): Search query
- `time_range` (string, optional, one of day|week|month|year): Only results from the past day, week, month or year

Example:

```bash
curl -i "https://1gateway.dev/v1/web/answer?q=x402+payment+protocol&time_range=month"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/answer?q=x402+payment+protocol&time_range=month"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: string, answer: string, citations: array, confidence: string, notes: null, sources: array, provider: string, model: string, retrievedAt: string, attribution: string, cached: boolean, upstreamCostUsd: number }`

### news_brief

- **GET** `/v1/news/brief` — **$0.007** per call (USDC on Base or Solana, x402 exact)
- News brief: topic news clustered and deduplicated, English summaries with source links (strong on Korea / Asia)
- When to use: Use when an agent needs what is happening on a topic right now, in English, including Korean and Asian news. Input: topic, optional time_range (day, week default, month, year), max (1-10 headlines, default 10). Output: JSON overview, clusters [{headline, summary, sources}] with duplicates merged, and sources (title, url, outlet, publishedAt). Headlines and links only. Failures not charged. Example: ?topic=korea+semiconductor+exports

Params:

- `topic` (string, required): News topic (any language)
- `time_range` (string, optional, one of day|week|month|year): Window (default week)
- `max` (integer, optional): Headlines considered (default 10)

Example:

```bash
curl -i "https://1gateway.dev/v1/news/brief?topic=korea+semiconductor+exports&time_range=week&max=10"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/news/brief?topic=korea+semiconductor+exports&time_range=week&max=10"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ topic: string, region: string, timeRange: string, overview: string, clusters: array, sources: array, provider: string, model: string, retrievedAt: string, attribution: string, notes: array, cached: boolean, upstreamCostUsd: number }`

### web_extract

- **GET** `/v1/web/extract` — **$0.006** per call (USDC on Base or Solana, x402 exact)
- Web extract: any web page into JSON matching your own JSON Schema
- When to use: Use when an agent needs specific fields from a web page as JSON. Input: url, schema (URL-encoded JSON Schema, object root, max 30 properties, depth 3, 3,000 chars). Output: JSON data validated against the schema (null when not on the page), title, finalUrl. SSRF-safe; noai pages refused; bad schema refused before payment. Fixed schema: /v1/docs/extract. Example: ?url=https://example.com/&schema={"type":"object","properties":{"title":{"type":"string"}}}

Params:

- `url` (string, required, pattern ^https?://): Public http(s) web page URL
- `schema` (string, required): JSON Schema (object root) describing the fields to extract

Example:

```bash
curl -i "https://1gateway.dev/v1/web/extract?url=https%3A%2F%2Fexample.com%2F&schema=%7B%22type%22%3A%22object%22%2C%22properties%22%3A%7B%22title%22%3A%7B%22type%22%3A%22string%22%7D%2C%22links%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22type%22%3A%22string%22%7D%7D%7D%2C%22required%22%3A%5B%22title%22%5D%7D"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/extract?url=https%3A%2F%2Fexample.com%2F&schema=%7B%22type%22%3A%22object%22%2C%22properties%22%3A%7B%22title%22%3A%7B%22type%22%3A%22string%22%7D%2C%22links%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22type%22%3A%22string%22%7D%7D%7D%2C%22required%22%3A%5B%22title%22%5D%7D"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, finalUrl: string, title: string, language: string, inputChars: integer, inputTruncated: boolean, data: object, model: string, generatedAt: string, valid: boolean, cached: boolean, upstreamCostUsd: number, notes: array }`

### web_audit

- **GET** `/v1/web/audit` — **$0.006** per call (USDC on Base or Solana, x402 exact)
- Website audit: security headers, HTTPS/HSTS, SEO meta, SPF/DMARC and AI-readiness with scores and fixes
- When to use: Use when an agent must grade a website and say what to fix. Input: url or bare domain. Output: JSON score 0-100, grade A-F, per-category scores (security, https, seo, mail, ai), findings [{id, severity, category, title, fix}] and top fixes. Rule-based from one live fetch plus DNS; raw data: /v1/web/site-profile. Example: ?url=stripe.com

Params:

- `url` (string, required): Site URL or bare domain (https:// assumed); private/internal targets → 400 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/web/audit?url=stripe.com"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/audit?url=stripe.com"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, finalUrl: string, status: integer, score: integer, grade: string, scores: object, counts: object, findings: array, topFixes: array, checked: object, cache: string, sources: array, notes: array }`

### kr_policy_latest

- **GET** `/v1/kr/policy/latest` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Korea policy feed in English: latest government policy and legislative notices with English briefs
- When to use: Use when an agent tracks South Korean government policy, regulation or draft legislation in English. Input: optional q (keyword, Korean or English), date (YYYY-MM-DD KST), limit (1-20, default 5). Output: JSON items with Korean title, official link, published time and English brief {title_en, summary_en, agency_en, category, key_points}. Machine translation; check the official page. Example: ?q=AI&limit=5

Params:

- `q` (string, optional): Keyword filter (title/summary, Korean or English)
- `date` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Only items published that KST day
- `limit` (integer, optional): Max items (default 5)

Example:

```bash
curl -i "https://1gateway.dev/v1/kr/policy/latest?q=AI&date=2026-10-27&limit=5"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/kr/policy/latest?q=AI&date=2026-10-27&limit=5"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ query: null, date: null, count: integer, items: array, upstreamCostUsd: number, source: string, notes: array }`

### web_read

- **GET** `/v1/web/read` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Web read: web page to Markdown, one URL to clean Markdown for LLMs (title, language, optional injection flags)
- When to use: Use when an agent already has a URL and needs the page as clean Markdown (boilerplate removed, tables kept). Input: url, optional max_chars (500-60000), flags=1 for rule-based prompt-injection signals. Output: JSON markdown, title, language, finalUrl, chars, truncated. SSRF-safe; pages opting out with noai are refused. English brief: /v1/web/read/brief. Search+read: /v1/web/search-read. Example: ?url=https://example.com/

Params:

- `url` (string, required, pattern ^https?://): Public http(s) web page URL
- `max_chars` (integer, optional): Max Markdown characters returned (default 60000)
- `flags` (string, optional, one of 0|1): 1 = add rule-based prompt-injection signals found in the page

Example:

```bash
curl -i "https://1gateway.dev/v1/web/read?url=https%3A%2F%2Fexample.com%2F&max_chars=20000&flags=1"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/read?url=https%3A%2F%2Fexample.com%2F&max_chars=20000&flags=1"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, finalUrl: string, title: string, language: string, markdown: string, chars: integer, truncated: boolean, bytes: integer, injectionFlags: array, warnings: array, retrievedAt: string, notes: array }`

### web_read_brief

- **GET** `/v1/web/read/brief` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Web read + English brief: page Markdown plus headline, summary, key points, entities, topics
- When to use: Use when an agent needs a page in any language (Korean, Japanese, etc.) read and briefed in English. Input: url, optional max_chars, flags=1. Output: JSON markdown, title, plus brief {headline, summary, key_points, entities, topics, source_language, content_type}; fixed schema, cached by content. Model outage or daily cap is refused before payment. Example: ?url=https://example.com/

Params:

- `url` (string, required, pattern ^https?://): Public http(s) web page URL
- `max_chars` (integer, optional): Max Markdown characters returned (default 60000)
- `flags` (string, optional, one of 0|1): 1 = add rule-based prompt-injection signals found in the page

Example:

```bash
curl -i "https://1gateway.dev/v1/web/read/brief?url=https%3A%2F%2Fexample.com%2F&max_chars=20000&flags=1"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/read/brief?url=https%3A%2F%2Fexample.com%2F&max_chars=20000&flags=1"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, finalUrl: string, title: string, language: string, markdown: string, chars: integer, truncated: boolean, bytes: integer, warnings: array, retrievedAt: string, notes: array, brief: object, model: string, generatedAt: string, briefCached: boolean, upstreamCostUsd: number }`

### web_read_batch

- **GET** `/v1/web/read/batch` — **$0.008** per call (USDC on Base or Solana, x402 exact)
- Web read batch: up to 5 URLs to clean Markdown in one call
- When to use: Use when an agent has several URLs (search results, citations) and needs them all as Markdown at once. Input: urls (1-5 public URLs separated by spaces), optional max_chars per URL (500-20000), flags=1. Output: JSON results[] in input order, each status ok (markdown, title, finalUrl) or error (code, message). Charged once if at least one page is read. Example: ?urls=https://example.com/ https://example.org/

Params:

- `urls` (string, required): 1-5 public http(s) URLs separated by spaces
- `max_chars` (integer, optional): Max Markdown characters per URL (default 20000)
- `flags` (string, optional, one of 0|1): 1 = add rule-based prompt-injection signals per page

Example:

```bash
curl -i "https://1gateway.dev/v1/web/read/batch?urls=https%3A%2F%2Fexample.com%2F+https%3A%2F%2Fexample.org%2F&max_chars=8000&flags=1"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/read/batch?urls=https%3A%2F%2Fexample.com%2F+https%3A%2F%2Fexample.org%2F&max_chars=8000&flags=1"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ count: integer, ok: integer, failed: integer, results: array, retrievedAt: string, notes: array }`

### web_screenshot

- **GET** `/v1/web/screenshot` — **$0.01** per call (USDC on Base or Solana, x402 exact)
- Web screenshot: render a page in headless Chrome and return the image
- When to use: Use when an agent must see how a page looks (layout, charts, visual QA, previews), not just its text. Input: url, width (320-1920, default 1280), full_page=1 for the whole page, format png or jpeg (default). Output: JSON imageBase64 (decode to the image), contentType, bytes, viewport. Renders JavaScript. Daily cap or bad URL refused before payment. Example: ?url=https://example.com/

Params:

- `url` (string, required, pattern ^https?://): Public http(s) page URL
- `width` (integer, optional): Viewport width in px (default 1280; height = 0.625 x width)
- `full_page` (string, optional, one of 0|1): 1 = capture the whole scrollable page
- `format` (string, optional, one of png|jpeg): Image format (default jpeg)

Example:

```bash
curl -i "https://1gateway.dev/v1/web/screenshot?url=https%3A%2F%2Fexample.com%2F&width=1280&full_page=0&format=jpeg"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/web/screenshot?url=https%3A%2F%2Fexample.com%2F&width=1280&full_page=0&format=jpeg"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ url: string, format: string, contentType: string, viewport: object, fullPage: boolean, bytes: integer, imageBase64: string, browserMs: integer, capturedAt: string, notes: array }`

### email_check

- **GET** `/v1/email/check` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Email check: syntax, MX, SPF/DMARC, disposable and role address, deliverability verdict
- When to use: Use when an agent is about to email or sign up a contact. Input: email. Output: JSON verdict (deliverable, risky, undeliverable) with reasons, MX hosts, null MX, SPF and DMARC policy, disposable domain, role account, free provider. No SMTP probe, so the mailbox itself is not verified. Malformed address refused before payment. Example: ?email=info@example.com

Params:

- `email` (string, required): Email address to check

Example:

```bash
curl -i "https://1gateway.dev/v1/email/check?email=info%40example.com"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/email/check?email=info%40example.com"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ email: string, domain: string, verdict: string, reasons: array, syntax: object, dns: object, disposable: boolean, roleAccount: boolean, freeProvider: boolean, mailboxVerified: boolean, cached: boolean, checkedAt: string, notes: array, attribution: string }`

### docs_extract

- **GET, POST** `/v1/docs/extract` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Document extract: PDF, DOCX, HWP/HWPX or web page to structured JSON with English overview
- When to use: Use when an agent needs the key facts of a document, not just its text: Korean HWP/HWPX, PDF, DOCX or web page. Input: url via GET, or POST a file (multipart 'file', raw body, or JSON contentBase64+filename). Output: fixed-schema JSON title, title_en, document_type, date, org, amounts, tables (parsed rows), english_overview. Bad input or model outage refused before payment. Example: ?url=https://example.com/

Params:

- `url` (string, optional, pattern ^https?://): Public http(s) URL of a PDF, DOCX, HWP, HWPX or web page. For uploads use POST.
- `type` (string, optional, one of html|text|pdf|docx|hwp|hwpx): Optional expected type; a mismatch is rejected before payment (415, not charged)
- POST body: multipart `file`, raw bytes, or JSON `{url|contentBase64, filename?, type?}`

Example:

```bash
curl -i "https://1gateway.dev/v1/docs/extract?url=https%3A%2F%2Fexample.com%2F&type=html"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/docs/extract?url=https%3A%2F%2Fexample.com%2F&type=html"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ title: string, title_en: string|null, document_type: string, date: string|null, org: string|null, org_en: string|null, amounts: array, english_overview: string, source_language: string, tables: array, sourceType: string, chars: integer, contentSha256: string, model: string, generatedAt: string, inputTruncated: boolean, cached: boolean, upstreamCostUsd: number, warnings: array, notes: array, sourceUrl: string }`

### us_company_intelligence

- **GET** `/v1/company/intelligence` — **$0.035** per call (USDC on Base or Solana, x402 exact)
- U.S. company intelligence: SEC profile, 3-year financials, risk signals and recent news in one call
- When to use: Use when an agent researches a U.S. public company (due diligence, investing, competitors) and wants one sourced brief instead of many calls. Input: ticker or cik, optional news=false. Output: JSON profile, 3 fiscal years + latest quarter + balance sheet from SEC XBRL, YoY growth, rule-based risk signals (8-K items, late filings, losses) with evidence, recent 8-K events, latest news (title, link, date, publisher summary), sources. Example: ?ticker=NVDA

Params:

- `ticker` (string, optional, pattern ^[A-Za-z][A-Za-z0-9]{0,6}([.-][A-Za-z0-9]{1,3})?$): U.S. ticker (NVDA, BRK.B); give ticker or cik
- `cik` (string, optional, pattern ^\d{1,10}$): SEC Central Index Key; give ticker or cik
- `news` (string, optional, one of true|false): Include recent news (default true)

Example:

```bash
curl -i "https://1gateway.dev/v1/company/intelligence?ticker=NVDA&cik=1045810&news=true"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/company/intelligence?ticker=NVDA&cik=1045810&news=true"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ company: object, financials: object, latestReports: object, signals: array, events: array, recentNews: object, summary: object, sources: array, freshness: object, attribution: string, note: string }`

### satellite_image

- **GET** `/v1/geo/satellite` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Satellite image of any place: clearest recent Sentinel-2 scene, true color or NDVI
- When to use: Use when an agent must see a place from above or check vegetation, water or change. Input: lat, lon, radius_m (200-10000), mode (true_color, false_color, ndvi, ndwi, moisture), date, days back, max_cloud. Picks the clearest Sentinel-2 scene by cloud share inside your area, not the whole tile. Output: JSON PNG URL (+ other modes), scene date, area cloud %, alternatives. No scene: 404, not charged. Example: ?lat=37.5665&lon=126.978

Params:

- `lat` (number, required): Latitude, WGS84 decimal degrees
- `lon` (number, required): Longitude, WGS84 decimal degrees
- `radius_m` (integer, optional): Half-width of the square area in meters (default 2000)
- `mode` (string, optional, one of true_color|false_color|ndvi|ndwi|moisture): Rendering (default true_color); URLs for the other modes are returned too
- `date` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Latest acceptable scene date YYYY-MM-DD (default today; 2017-01-01 or later)
- `days` (integer, optional): Look-back window in days before date (default 30)
- `max_cloud` (number, optional): Target max cloud % inside the area (default 40); if no scene meets it the clearest is returned with fulfillment=best_available
- `size` (integer, optional): Image width/height in px (default 1024)

Example:

```bash
curl -i "https://1gateway.dev/v1/geo/satellite?lat=37.5665&lon=126.978&radius_m=3000&mode=true_color&date=2026-10-18&days=30&max_cloud=40&size=1024"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/geo/satellite?lat=37.5665&lon=126.978&radius_m=3000&mode=true_color&date=2026-10-18&days=30&max_cloud=40&size=1024"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ location: object, request: object, fulfillment: string, scene: object, image: object, otherModes: object, alternatives: array, scenesConsidered: integer, attribution: string, note: string }`

### satellite_compare

- **GET** `/v1/geo/satellite/compare` — **$0.018** per call (USDC on Base or Solana, x402 exact)
- Satellite before/after: two clearest Sentinel-2 scenes, images and NDVI change for any place
- When to use: Use when checking what changed at a place between two dates (construction, deforestation, flooding, crops). Input: lat, lon, radius_m (200-10000), before and after dates (20+ days apart). Output: JSON per date: clearest scene, area cloud %, NDVI mean/median, true color, NDVI and false color PNG URLs; NDVI change and reliability. No scene: 404, not charged. Example: ?lat=37.5665&lon=126.978&before=2026-04-15&after=2026-10-08

Params:

- `lat` (number, required): Latitude, WGS84 decimal degrees
- `lon` (number, required): Longitude, WGS84 decimal degrees
- `radius_m` (integer, optional): Half-width of the square area in meters (default 2000)
- `before` (string, required, pattern ^\d{4}-\d{2}-\d{2}$): Earlier date YYYY-MM-DD (2017-01-01 or later)
- `after` (string, required, pattern ^\d{4}-\d{2}-\d{2}$): Later date YYYY-MM-DD, at least 20 days after before
- `window_days` (integer, optional): Search ± days around each date (default 15)
- `size` (integer, optional): Image width/height in px (default 768)

Example:

```bash
curl -i "https://1gateway.dev/v1/geo/satellite/compare?lat=37.5665&lon=126.978&radius_m=2000&before=2026-04-15&after=2026-10-08&window_days=15&size=768"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/geo/satellite/compare?lat=37.5665&lon=126.978&radius_m=2000&before=2026-04-15&after=2026-10-08&window_days=15&size=768"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ location: object, before: object, after: object, change: object, imageFormat: string, attribution: string, notes: array }`

### satellite_trend

- **GET** `/v1/geo/satellite/trend` — **$0.012** per call (USDC on Base or Solana, x402 exact)
- Vegetation trend from space: monthly Sentinel-2 NDVI and cloud % for any place (1-12 months)
- When to use: Use when tracking crops, greenery or land change month by month. Input: lat, lon, radius_m (200-10000), months (1-12), optional end date. Output: JSON series per month: clearest scene, area cloud %, NDVI mean/median, status (ok, cloudy, no_scene), plus min/max and first-to-last change. Numbers only, no images. No scene at all: 404, not charged. Example: ?lat=36.35&lon=127.38&months=6

Params:

- `lat` (number, required): Latitude, WGS84 decimal degrees
- `lon` (number, required): Longitude, WGS84 decimal degrees
- `radius_m` (integer, optional): Half-width of the square area in meters (default 2000)
- `months` (integer, optional): Number of calendar months ending with the end month (default 6)
- `end` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$): Last date YYYY-MM-DD (default today)

Example:

```bash
curl -i "https://1gateway.dev/v1/geo/satellite/trend?lat=36.35&lon=127.38&radius_m=2000&months=6&end=2026-10-28"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/geo/satellite/trend?lat=36.35&lon=127.38&radius_m=2000&months=6&end=2026-10-28"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ location: object, period: object, series: array, summary: object, attribution: string, notes: array }`

### base_token_risk

- **GET** `/v1/onchain/base/token-risk` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Base Token Risk: Honeypot & Rug-Pull Check (buy/sell simulation, contract risk signals)
- When to use: Base ERC-20 token risk scan: honeypot check, rug pull check, token safety / scam check. Use when vetting a token. Input: address. Output: JSON risk signals w/ block+evidence: honeypot test (buy/sell simulation, taxes), rug-pull signals (owner, mint/pause/blacklist/fee fns, proxy+admin, owner-held supply, Uniswap/Aerodrome pool depth), notChecked. Signals, not a safe verdict. Bad input/EOA: 400, not charged. Example: ?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Params:

- `address` (string, required, pattern ^0x[0-9a-fA-F]{40}$): Token contract on Base mainnet (0x + 40 hex; mixed case must be a valid EIP-55 checksum). EOAs, bad checksums → 400 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/base/token-risk?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/base/token-risk?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, chainId: integer, address: string, asOfBlock: integer, status: string, riskLevel: string, summary: object, token: object, contract: object, liquidity: object, supplyHeld: object, simulation: object, signals: array, checksRun: array, notChecked: array, errors: array, rpc: object, disclaimer: string, cache: string }`

### base_wallet_balances

- **GET** `/v1/onchain/base/balances` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Base wallet balances: ETH + many ERC-20s in one call, with nonce and contract flag
- When to use: Use when an agent needs what a Base address holds in one call instead of one RPC call per token. Input: address; optional tokens (up to 20 ERC-20 addresses, comma-separated; default USDC, EURC, USDbC, WETH, cbBTC, cbETH, wstETH). Output: JSON block+time, ETH balance, per-token symbol, decimals, raw and decimal balance, nonce, isContract. Chain state only, no prices. Bad input: 400, not charged. Example: ?address=0x6246eee0355Dd7A93C888fE59e1151388A0cC5a1

Params:

- `address` (string, required, pattern ^0x[0-9a-fA-F]{40}$): Wallet or contract on Base mainnet (0x + 40 hex; mixed case must be a valid EIP-55 checksum). Bad input → 400 (not charged)
- `tokens` (string, optional): Up to 20 comma-separated ERC-20 contract addresses on Base. Omit for the default set. A contract that is not an ERC-20 is listed with status not_an_erc20.

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/base/balances?address=0x6246eee0355Dd7A93C888fE59e1151388A0cC5a1&tokens=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913%2C0x4200000000000000000000000000000000000006"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/base/balances?address=0x6246eee0355Dd7A93C888fE59e1151388A0cC5a1&tokens=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913%2C0x4200000000000000000000000000000000000006"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, chainId: integer, address: string, block: object, isContract: boolean, codeSize: integer, transactionCount: integer, eth: object, tokenSet: string, tokens: array, nonZeroTokens: integer, rpc: object, note: string }`

### base_token_info

- **GET** `/v1/onchain/base/token-info` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Base ERC-20 token info: name, symbol, decimals, total supply, optional holder balance and allowance
- When to use: Use when an agent needs an ERC-20's basics on Base before quoting, transferring or approving it. Input: address (token contract); optional holder (adds balance and share of supply) and spender (adds allowance, flags unlimited approvals). Output: JSON block+time, name, symbol, decimals, totalSupply raw and decimal, known issuer if curated. Name/symbol are self-reported. EOA or non-ERC-20: 4xx, not charged. Example: ?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Params:

- `address` (string, required, pattern ^0x[0-9a-fA-F]{40}$): ERC-20 token contract on Base mainnet (0x + 40 hex; mixed case must be a valid EIP-55 checksum). EOA → 400, non-ERC-20 contract → 422 (not charged)
- `holder` (string, optional, pattern ^0x[0-9a-fA-F]{40}$): Optional address whose token balance and share of total supply to include
- `spender` (string, optional, pattern ^0x[0-9a-fA-F]{40}$): Optional spender; with holder, adds allowance(holder, spender). Needs holder.

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/base/token-info?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&holder=0x6246eee0355Dd7A93C888fE59e1151388A0cC5a1&spender=0x000000000022D473030F116dDEE9F6B43aC78BA3"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/base/token-info?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&holder=0x6246eee0355Dd7A93C888fE59e1151388A0cC5a1&spender=0x000000000022D473030F116dDEE9F6B43aC78BA3"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, chainId: integer, address: string, block: object, name: string|null, symbol: string|null, decimals: integer, totalSupply: object, codeSize: integer, knownIssuer: object|null, holder: object|null, allowance: object|null, rpc: object, note: string }`

### base_tx

- **GET** `/v1/onchain/base/tx` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Base transaction status with decoded ERC-20 transfers, fee and confirmations
- When to use: Use when an agent must confirm a Base transaction or payment landed: did it succeed, who paid whom, how much of which token. Input: hash. Output: JSON status (success/reverted), block+time, confirmations, from, to, ETH value, fee (L2 gas + L1 data fee), decoded ERC-20 transfers with symbol and decimal amount (first 25). Unknown or unmined hash: 404, not charged. Example: ?hash=0x284f8abed91b5631ee28bdb1ccfe78374e18c480cb2ab25f28e3bfac5210fe0b

Params:

- `hash` (string, required, pattern ^0x[0-9a-fA-F]{64}$): Transaction hash on Base mainnet (0x + 64 hex). Unknown or not yet mined → 404 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/base/tx?hash=0x284f8abed91b5631ee28bdb1ccfe78374e18c480cb2ab25f28e3bfac5210fe0b"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/base/tx?hash=0x284f8abed91b5631ee28bdb1ccfe78374e18c480cb2ab25f28e3bfac5210fe0b"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, chainId: integer, hash: string, status: string, block: object, confirmations: integer, from: string, to: string|null, contractCreated: string|null, value: object, nonce: integer, input: object, fee: object, logCount: integer, erc20Transfers: array, erc20TransferCount: integer, erc20TransfersTruncated: boolean, rpc: object, note: string }`

### base_token_flows

- **GET** `/v1/onchain/base/token-flows` — **$0.004** per call (USDC on Base or Solana, x402 exact)
- Base token flows: top net buyers and sellers, whale transfers, last 60 min
- When to use: Use when an agent must see who is accumulating or dumping a Base ERC-20 right now. Input: token address, minutes (1-60, default 60), limit (1-25). Output: JSON top net buyers and sellers (net, received, sent, contract or EOA), largest transfers with tx hash, volume, mints/burns, active wallets, covered window. Busy tokens get a shorter window. Example: ?address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed

Params:

- `address` (string, required, pattern ^0x[0-9a-fA-F]{40}$): ERC-20 token contract on Base mainnet. EOA → 400, non-ERC-20 → 422 (not charged)
- `minutes` (integer, optional): Look-back window in minutes (default 60). Very busy tokens are cut short; see window.complete
- `limit` (integer, optional): Rows per list (default 10)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/base/token-flows?address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed&minutes=60&limit=10"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/base/token-flows?address=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed&minutes=60&limit=10"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, chainId: integer, token: object, window: object, summary: object, topNetBuyers: array, topNetSellers: array, largestTransfers: array, rpc: object, note: string }`

### onchain_prices

- **GET** `/v1/onchain/prices` — **$0.003** per call (USDC on Base or Solana, x402 exact)
- Token prices from onchain DEX pools (Base and Solana), with pool, depth and confidence
- When to use: Use when an agent needs a token's USD price without a third-party price feed. Input: tokens (up to 10, base:0x… or sol:<mint>). Output: per token priceUsd, confidence, the pool used (Uniswap v3 / Aerodrome on Base, Orca Whirlpool on Solana; fee tier, depth in USD), path (direct USDC or via WETH/SOL), warnings; no price below $1,000 depth. Spot, not TWAP. Example: ?tokens=base:0x940181a94A35A4569E4529A3CDfB74e38FD98631

Params:

- `tokens` (string, required, pattern ^(?:(?:base|sol|solana):[0-9A-Za-z]{32,44})(?:,(?:base|sol|solana):[0-9A-Za-z]{32,44}){0,9}$): Comma-separated chain:address list, max 10 (base:0x… ERC-20, sol:<mint> base58). Bad input → 400 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/prices?tokens=base%3A0x940181a94A35A4569E4529A3CDfB74e38FD98631"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/prices?tokens=base%3A0x940181a94A35A4569E4529A3CDfB74e38FD98631"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ prices: array, asOf: object, method: object, notes: array, rpc: object }`

### onchain_prices_batch

- **GET** `/v1/onchain/prices/batch` — **$0.008** per call (USDC on Base or Solana, x402 exact)
- Batch token prices + trade price impact (Base and Solana DEX pools)
- When to use: Use when a trading agent needs many token prices at once plus what a buy would really cost. Input: tokens (≤25, base:0x… or sol:<mint>, ≤10 Solana), amount_usd (default 1000). Output: per token priceUsd, confidence, pool, depth and a buy estimate: tokensOut, effectivePriceUsd, priceImpactPct (Uniswap v3 QuoterV2 / Aerodrome on Base, CLMM estimate on Orca). Cached 20 s. Example: ?tokens=base:0x4200000000000000000000000000000000000006&amount_usd=5000

Params:

- `tokens` (string, required, pattern ^(?:(?:base|sol|solana):[0-9A-Za-z]{32,44})(?:,(?:base|sol|solana):[0-9A-Za-z]{32,44}){0,24}$): Comma-separated chain:address list, max 25 (≤10 Solana). Bad input → 400 before payment (not charged)
- `amount_usd` (number, optional, default 1000): Size of the buy to estimate, in USD (default 1000)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/prices/batch?tokens=base%3A0x4200000000000000000000000000000000000006%2Cbase%3A0x940181a94A35A4569E4529A3CDfB74e38FD98631&amount_usd=5000"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/prices/batch?tokens=base%3A0x4200000000000000000000000000000000000006%2Cbase%3A0x940181a94A35A4569E4529A3CDfB74e38FD98631&amount_usd=5000"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ amountUsd: integer, prices: array, asOf: object, rpc: object, cached: boolean, method: object, notes: array }`

### sol_token_info

- **GET** `/v1/onchain/solana/token-info` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Solana token info: SPL / Token-2022 mint supply, decimals, authorities and extensions
- When to use: Use when an agent needs a Solana token's basics before quoting, transferring or accepting it. Input: mint. Output: JSON slot, program (spl-token or token-2022), decimals, supply raw and decimal, mint and freeze authority, Token-2022 extensions (transfer fee, permanent delegate, transfer hook, default frozen, metadata), known issuer if curated. Not a mint: 422, unknown: 404, not charged. Example: ?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Params:

- `mint` (string, required, pattern ^[1-9A-HJ-NP-Za-km-z]{32,44}$): Token mint address on Solana mainnet (base58, 32 bytes). Bad input → 400, not a mint → 422 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/solana/token-info?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/solana/token-info?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, cluster: string, mint: string, slot: integer, program: string, name: string, symbol: string, nameSource: string, decimals: integer, supply: object, mintAuthority: string, freezeAuthority: string, extensions: object, knownIssuer: object, notes: array, rpc: object }`

### sol_token_risk

- **GET** `/v1/onchain/solana/token-risk` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Solana Token Risk: Rug Pull & Scam Token Check (mint/freeze authority, holder concentration)
- When to use: Solana token risk scan: rug pull, scam token and token safety check. Use when buying, accepting or listing a token. Input: mint. Output: JSON riskLevel + signals w/ evidence: mint authority, freeze authority (can freeze/blacklist holders), permanent delegate, transfer hook/fee, default-frozen, mutable metadata, top-10 holder share. No sell simulation; not an audit. Example: ?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Params:

- `mint` (string, required, pattern ^[1-9A-HJ-NP-Za-km-z]{32,44}$): Token mint address on Solana mainnet (base58, 32 bytes). Bad input → 400, not a mint → 422 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/solana/token-risk?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/solana/token-risk?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, cluster: string, mint: string, slot: integer, program: string, symbol: string|null, knownIssuer: object|null, riskLevel: string, signals: array, concentration: object, notes: array, rpc: object }`

### sol_wallet_balances

- **GET** `/v1/onchain/solana/balances` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Solana wallet balances: SOL plus every SPL and Token-2022 token account in one call
- When to use: Use when an agent needs what a Solana address holds in one call. Input: address. Output: JSON slot, SOL balance, every non-zero token (mint, token account, program, decimals, raw and decimal balance, frozen flag; first 50), counts of token and empty accounts. Chain state only, no prices. Bad input: 400, not charged. Example: ?address=CV8t6fnSsckB3bzJSVRxQjVvTgdB35q11Fu3eaF1nz8u

Params:

- `address` (string, required, pattern ^[1-9A-HJ-NP-Za-km-z]{32,44}$): Wallet address on Solana mainnet (base58, 32 bytes). Bad input → 400 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/solana/balances?address=CV8t6fnSsckB3bzJSVRxQjVvTgdB35q11Fu3eaF1nz8u"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/solana/balances?address=CV8t6fnSsckB3bzJSVRxQjVvTgdB35q11Fu3eaF1nz8u"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, cluster: string, address: string, slot: integer, sol: object, tokenAccounts: integer, nonZeroTokens: integer, emptyTokenAccounts: integer, tokens: array, truncated: boolean, notes: array, rpc: object }`

### sol_tx

- **GET** `/v1/onchain/solana/tx` — **$0.0045** per call (USDC on Base or Solana, x402 exact)
- Solana transaction status with SOL and token balance changes, fee and programs
- When to use: Use when an agent must confirm a Solana payment or transaction landed: did it succeed, who paid whom, how much of which token. Input: signature. Output: JSON status (success/failed), slot, block time, confirmation status, fee payer, signers, fee, programs, SOL and token balance changes per account (first 25). Unknown signature: 404, not charged. Example: ?signature=5Xg1wCobkM4jAJNHE6t7B1amt4ch5wq5GrxuhQXXgoAkUPUAjVMC9tQFCvp1awUGfrqZY9L9sLdPieJ97DcDjXtC

Params:

- `signature` (string, required, pattern ^[1-9A-HJ-NP-Za-km-z]{64,88}$): Transaction signature on Solana mainnet (base58, 64 bytes). Unknown or not yet confirmed → 404 (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/onchain/solana/tx?signature=5Xg1wCobkM4jAJNHE6t7B1amt4ch5wq5GrxuhQXXgoAkUPUAjVMC9tQFCvp1awUGfrqZY9L9sLdPieJ97DcDjXtC"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/onchain/solana/tx?signature=5Xg1wCobkM4jAJNHE6t7B1amt4ch5wq5GrxuhQXXgoAkUPUAjVMC9tQFCvp1awUGfrqZY9L9sLdPieJ97DcDjXtC"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ chain: string, cluster: string, signature: string, status: string, error: null, slot: integer, blockTime: string, confirmationStatus: string, version: integer, feePayer: string, signers: array, fee: object, computeUnits: integer, programs: array, solChanges: array, tokenChanges: array, truncated: boolean, rpc: object }`

### llm_model_prices

- **GET** `/v1/ai/llm-prices` — **$0.004** per call (USDC on Base or Solana, x402 exact)
- LLM model price lookup, token cost calculator and cheapest-model finder
- When to use: Use when an agent must price an LLM call or pick the cheapest model. Input: model (up to 5, comma list) plus optional input_tokens, output_tokens, requests; or no model plus mode, provider, min_context, capabilities (vision, function_calling...). Output: JSON USD per 1M input/output tokens, cached/batch prices, context window, provider, capabilities, cost estimate or cheapest ranking, as_of + source commit. Example: ?model=gpt-4o&input_tokens=12000&output_tokens=800

Params:

- `model` (string, optional): Model name(s), up to 5 comma-separated (gpt-4o, claude-sonnet-4-5, gemini/gemini-2.5-flash). Also lists the same model at other providers. Omit to rank the cheapest models. Unknown → 400 with suggestions (not charged)
- `input_tokens` (integer, optional): Input (prompt) tokens per request, for the cost estimate and ranking
- `output_tokens` (integer, optional): Output (completion) tokens per request
- `requests` (integer, optional): Number of requests to multiply the estimate by (default 1)
- `provider` (string, optional, pattern ^[A-Za-z0-9_.-]{1,40}$): LiteLLM provider id filter: openai, anthropic, gemini, vertex_ai, bedrock, azure, groq, deepseek, mistral...
- `mode` (string, optional, one of chat|embedding|completion|rerank|image_generation|audio_transcription|audio_speech|realtime|moderation): Model type for the cheapest search (default chat; chat includes responses-API models). Ignored when model is given
- `min_context` (integer, optional): Minimum context window (max input tokens)
- `capabilities` (string, optional): Comma-separated required capabilities: vision, function_calling, reasoning, prompt_caching, response_schema, pdf_input, audio_input, audio_output, web_search, computer_use, video_input
- `limit` (integer, optional): Max rows per model or in the ranking (default 10)
- `include_deprecated` (string, optional, one of true|false): Include models past their deprecation date in the cheapest search (default false)

Example:

```bash
curl -i "https://1gateway.dev/v1/ai/llm-prices?model=gpt-4o&input_tokens=12000&output_tokens=800&requests=1000&provider=openai&mode=chat&min_context=100000&capabilities=vision&limit=5&include_deprecated=false"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/ai/llm-prices?model=gpt-4o&input_tokens=12000&output_tokens=800&requests=1000&provider=openai&mode=chat&min_context=100000&capabilities=vision&limit=5&include_deprecated=false"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ as_of: string, source: object, kind: string, query: object, results: array, attribution: string, ranking: string, matched_total: integer, models: array }`

### x402_api_recommend

- **GET** `/v1/x402/recommend` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- x402 API finder: ranked paid endpoints for a task, with demand and quality flags
- When to use: Use when an agent must pick a paid x402 API for a task. Input: q (task in plain words or keywords), optional max_price (USD), network (base, solana or CAIP-2), limit (1-20). Output: JSON ranked endpoints: resource URL, method, description, price, networks, seller, 30-day payers and calls (Bazaar), seller buyers (x402scan), wash/quality flags, score, index as_of. Same rules for every seller. Example: ?q=base+token+honeypot+check&max_price=0.02

Params:

- `q` (string, required): What the API should do, in plain words or keywords (e.g. 'korean apartment prices', 'convert pdf to markdown'). Text only: never fetched as a URL
- `max_price` (number, optional): Only endpoints priced at or below this many USD per call
- `network` (string, optional, pattern ^[A-Za-z0-9:]{2,60}$): Only endpoints that accept this network: base, solana, polygon, arbitrum, optimism, ethereum, avalanche, worldchain, monad, or a CAIP-2 id (eip155:8453)
- `limit` (integer, optional): Number of results (default 8)
- `include_flagged` (string, optional, one of true|false): false drops routes flagged scanner_like or uniform_payers (suspected probes / wash); default true (flagged routes are kept but ranked lower)

Example:

```bash
curl -i "https://1gateway.dev/v1/x402/recommend?q=base+token+honeypot+check&max_price=0.02&network=base&limit=5&include_flagged=true"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/x402/recommend?q=base+token+honeypot+check&max_price=0.02&network=base&limit=5&include_flagged=true"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ as_of: string, query: object, matched_total: integer, results: array, index: object, ranking: string, flag_definitions: object, operator_disclosure: string, sources: string }`

### hl_perp_metrics

- **GET** `/v1/crypto/hyperliquid/perp` — **$0.002** per call (USDC on Base or Solana, x402 exact)
- Hyperliquid perp funding rate, open interest and basis, with Binance/Bybit predicted funding comparison
- When to use: Hyperliquid vs Binance vs Bybit predicted funding comparison for one perpetual futures market, plus current funding rate, open interest and basis. Use when an agent monitors a perp position or funding carry. Input: coin (e.g. BTC, ETH, kPEPE). Output: JSON as_of, cache_age_s, 1h + annualized funding, OI coin/USD, mark/oracle/mid, basis %, premium, 24h volume and change, per-venue predicted funding, annualized spread. Unknown coin: 400, not charged. Example: ?coin=BTC

Params:

- `coin` (string, required, pattern ^[A-Za-z0-9]{1,20}$): Hyperliquid perp symbol, case-insensitive (BTC, ETH, SOL, HYPE, kPEPE). Not listed or delisted → 400 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/crypto/hyperliquid/perp?coin=BTC"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/crypto/hyperliquid/perp?coin=BTC"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ as_of: string, cache_age_s: integer, coin: string, market: object, funding: object, prices: object, openInterest: object, volume24h: object, predictedFunding: object, source: string, disclaimer: string }`

### hl_funding_screener

- **GET** `/v1/crypto/hyperliquid/screener` — **$0.009** per call (USDC on Base or Solana, x402 exact)
- Perp funding rate screener: all Hyperliquid perps ranked by funding, OI, volume, basis and venue spread
- When to use: Perpetual futures funding rate screener over all Hyperliquid perps, ranked by funding, open interest, volume, basis or Binance/Bybit spread. Use when hunting funding extremes or carry trades. Input: optional sort, order, limit (1-50), min_oi_usd, min_volume_usd, funding (positive/negative), min_abs_apr. Output: JSON as_of, cache_age_s, rows (1h + annualized funding, OI USD, 24h volume, basis, premium, venue spread), top/bottom 5. Example: ?sort=funding&limit=20

Params:

- `sort` (string, optional, one of funding|oi|volume|basis|premium|change_24h|arb_spread, default funding): Ranking field (default funding = 1h funding rate)
- `order` (string, optional, one of desc|asc, default desc): desc (highest first, default) or asc
- `limit` (integer, optional, default 20): Rows returned (1-50, default 20)
- `min_oi_usd` (number, optional): Only markets with open interest >= this many USD
- `min_volume_usd` (number, optional): Only markets with 24h notional volume >= this many USD
- `funding` (string, optional, one of any|positive|negative, default any): Funding sign filter (positive = longs pay shorts)
- `min_abs_apr` (number, optional): Only markets whose |annualized Hyperliquid funding| >= this percent

Example:

```bash
curl -i "https://1gateway.dev/v1/crypto/hyperliquid/screener?sort=funding&order=desc&limit=20&min_oi_usd=1000000&min_volume_usd=1000000&funding=any&min_abs_apr=0"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/crypto/hyperliquid/screener?sort=funding&order=desc&limit=20&min_oi_usd=1000000&min_volume_usd=1000000&funding=any&min_abs_apr=0"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ as_of: string, cache_age_s: integer, query: object, marketsTotal: integer, matched: integer, rows: array, extremes: object, source: string, disclaimer: string }`

### hl_funding_history

- **GET** `/v1/crypto/hyperliquid/funding-history` — **$0.004** per call (USDC on Base or Solana, x402 exact)
- Hyperliquid funding rate history: percentiles, z-score, averages and open-interest change
- When to use: Use when an agent judges whether a perp's funding is unusually high or low, or tracks open-interest build-up. Input: coin (e.g. BTC), hours (24-720, default 168). Output: current 1h funding and APR, 24h/7d/30d average APR, current percentile and z-score vs 7d and 30d, share of positive hours, downsampled series, open interest now and change 1h/24h/7d (from our 5-minute snapshots). Example: ?coin=BTC&hours=168

Params:

- `coin` (string, required, pattern ^[A-Za-z0-9]{1,20}$): Hyperliquid perp symbol (BTC, ETH, SOL, HYPE, kPEPE). Not listed → 400 before payment
- `hours` (integer, optional, default 168): Window of the returned series in hours (24-720, default 168); statistics always cover 7 and 30 days

Example:

```bash
curl -i "https://1gateway.dev/v1/crypto/hyperliquid/funding-history?coin=BTC&hours=168"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/crypto/hyperliquid/funding-history?coin=BTC&hours=168"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ coin: string, as_of: string, hours: integer, funding: object, openInterest: object, method: object, source: string, disclaimer: string }`

### hl_extremes

- **GET** `/v1/crypto/hyperliquid/extremes` — **$0.006** per call (USDC on Base or Solana, x402 exact)
- Hyperliquid funding extremes and open-interest movers (z-score vs each coin's own 7 days)
- When to use: Use when hunting crowded perps: which markets have funding far from their own normal and where open interest is jumping. Input: optional limit (1-50, default 10), min_oi_usd (default 1,000,000). Output: as_of, fundingExtremes ranked by |z| (current 1h funding vs the coin's last 7 days), oiMovers24h and oiMovers1h (open-interest % change), each with funding APR and OI USD. Example: ?limit=10

Params:

- `limit` (integer, optional, default 10): Rows per list (1-50, default 10)
- `min_oi_usd` (number, optional, default 1000000): Skip markets with open interest below this many USD (default 1,000,000)

Example:

```bash
curl -i "https://1gateway.dev/v1/crypto/hyperliquid/extremes?limit=10&min_oi_usd=1000000"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/crypto/hyperliquid/extremes?limit=10&min_oi_usd=1000000"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ as_of: string, filters: object, coinsScanned: integer, fundingExtremes: array, oiMovers24h: array, oiMovers1h: array, method: object, source: string, disclaimer: string }`

### sepolia_eth

- **GET** `/v1/testnet/sepolia-eth` — **$0.05** per call (USDC on Base or Solana, x402 exact)
- Top up Sepolia test ETH from an agent or CI job: 0.1 SepETH per call
- When to use: Use when an agent, test suite or CI job needs Sepolia gas now: one x402 call, no faucet login or mainnet history. Input: to (recipient address); sends 0.1 SepETH (1 SepETH: /v1/testnet/sepolia-eth/1). Output: JSON txHash (confirmed before settling), explorerUrl, amountEth, from, to. Daily limits (UTC): 5 SepETH per address (both sizes), 20 overall; checked before payment. Test ETH has no monetary value. Example: ?to=0x000000000000000000000000000000000000dEaD

Params:

- `to` (string, required, pattern ^0x[0-9a-fA-F]{40}$): Recipient Ethereum address (EIP-55 checksum if mixed case). Bad input, caps reached or out of stock → 4xx/503 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/testnet/sepolia-eth?to=0x000000000000000000000000000000000000dEaD"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/testnet/sepolia-eth?to=0x000000000000000000000000000000000000dEaD"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ network: string, chainId: integer, status: string, blockNumber: integer, amountEth: string, amountWei: string, from: string, to: string, txHash: string, nonce: integer, explorerUrl: string, notes: array }`

### sepolia_eth_1

- **GET** `/v1/testnet/sepolia-eth/1` — **$0.50** per call (USDC on Base or Solana, x402 exact)
- Top up 1 Sepolia test ETH from an agent or CI job (bulk)
- When to use: Use when a contract deploy, test suite or CI job needs more Sepolia gas than a faucet gives: one x402 call, no faucet login or mainnet history. Input: to (recipient address); sends 1 SepETH. Output: JSON txHash (confirmed before settling), explorerUrl, amountEth, from, to. Daily limits (UTC): 5 SepETH per address (both sizes), 20 overall; checked before payment. Test ETH has no monetary value. Example: ?to=0x000000000000000000000000000000000000dEaD

Params:

- `to` (string, required, pattern ^0x[0-9a-fA-F]{40}$): Recipient Ethereum address (EIP-55 checksum if mixed case). Bad input, caps reached or out of stock → 4xx/503 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/testnet/sepolia-eth/1?to=0x000000000000000000000000000000000000dEaD"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/testnet/sepolia-eth/1?to=0x000000000000000000000000000000000000dEaD"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ network: string, chainId: integer, status: string, blockNumber: integer, amountEth: string, amountWei: string, from: string, to: string, txHash: string, nonce: integer, explorerUrl: string, notes: array }`

### base_sepolia_eth

- **GET** `/v1/testnet/base-sepolia-eth` — **$0.05** per call (USDC on Base or Solana, x402 exact)
- Top up Base Sepolia test ETH from an agent or CI job: 0.1 ETH per call
- When to use: Use when an agent, x402 test or CI job needs Base Sepolia gas now: one x402 call, no faucet login or mainnet history. Input: to (recipient address); sends 0.1 ETH (1 ETH: /v1/testnet/base-sepolia-eth/1). Output: JSON txHash (confirmed before settling), explorerUrl, amountEth, from, to. Daily limits (UTC): 5 ETH per address (both sizes), 20 overall; checked before payment. Test ETH has no monetary value. Example: ?to=0x000000000000000000000000000000000000dEaD

Params:

- `to` (string, required, pattern ^0x[0-9a-fA-F]{40}$): Recipient address (EIP-55 checksum if mixed case). Bad input, caps reached or out of stock → 4xx/503 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/testnet/base-sepolia-eth?to=0x000000000000000000000000000000000000dEaD"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/testnet/base-sepolia-eth?to=0x000000000000000000000000000000000000dEaD"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ network: string, chainId: integer, status: string, blockNumber: integer, amountEth: string, amountWei: string, from: string, to: string, txHash: string, nonce: integer, explorerUrl: string, notes: array }`

### base_sepolia_eth_1

- **GET** `/v1/testnet/base-sepolia-eth/1` — **$0.50** per call (USDC on Base or Solana, x402 exact)
- Top up 1 Base Sepolia test ETH from an agent or CI job (bulk)
- When to use: Use when contract deploys, x402 tests or CI jobs need more Base Sepolia gas than a faucet gives: one x402 call, no faucet login or mainnet history. Input: to (recipient address); sends 1 Base Sepolia ETH. Output: JSON txHash (confirmed before settling), explorerUrl, amountEth, from, to. Daily limits (UTC): 5 ETH per address (both sizes), 20 overall; checked before payment. Test ETH has no monetary value. Example: ?to=0x000000000000000000000000000000000000dEaD

Params:

- `to` (string, required, pattern ^0x[0-9a-fA-F]{40}$): Recipient address (EIP-55 checksum if mixed case). Bad input, caps reached or out of stock → 4xx/503 before payment (not charged)

Example:

```bash
curl -i "https://1gateway.dev/v1/testnet/base-sepolia-eth/1?to=0x000000000000000000000000000000000000dEaD"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/testnet/base-sepolia-eth/1?to=0x000000000000000000000000000000000000dEaD"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ network: string, chainId: integer, status: string, blockNumber: integer, amountEth: string, amountWei: string, from: string, to: string, txHash: string, nonce: integer, explorerUrl: string, notes: array }`

### convert_to_markdown

- **GET, POST** `/v1/convert/markdown` — **$0.0027–$0.009** per call (USDC on Base or Solana, x402 exact)
- Document to Markdown: Korean HWP/HWPX to Markdown, plus web pages, PDF and DOCX
- When to use: Use when an agent must read a document as clean Markdown: web page, PDF, DOCX or Korean HWP/HWPX, tables kept. Input: url (http/https) via GET, or POST a file (multipart 'file', raw body, or JSON contentBase64+filename). Free-plan size cap → 413 before payment: HWP 48 KB, HWPX 100 KB XML. Output: JSON markdown, title, pages, sourceType, warnings. Price by detected type: HTML $0.0027, PDF/DOCX $0.0045, HWP/HWPX $0.009. Example: ?url=https://example.com/
- Price tiers (decided before payment from the detected type): Web page / HTML / plain text $0.0027; PDF, DOCX $0.0045; HWP, HWPX (Hancom) $0.009

Params:

- `url` (string, optional, pattern ^https?://): Public http(s) URL of a web page, PDF, DOCX, HWP or HWPX within the per-format size caps (see 413 in /openapi.json). For uploads use POST instead.
- `type` (string, optional, one of html|text|pdf|docx|hwp|hwpx): Optional expected type; a mismatch is rejected before payment (415, not charged)
- POST body: multipart `file`, raw bytes, or JSON `{url|contentBase64, filename?, type?}`

Example:

```bash
curl -i "https://1gateway.dev/v1/convert/markdown?url=https%3A%2F%2Fexample.com%2F&type=html"   # → 402 + PAYMENT-REQUIRED (price quote)
npx agentcash fetch "https://1gateway.dev/v1/convert/markdown?url=https%3A%2F%2Fexample.com%2F&type=html"   # or any x402 client (@x402/fetch, x402-axios) pays and retries
```

Response 200: `{ markdown: string, title: string, sourceType: string, priceTier: string, bytes: integer, chars: integer, sourceUrl: string, warnings: array, sections: integer, pages: integer }`

## Errors

All errors are JSON `{ error: string, message?: string }` and are never charged.

| Status | Codes | Meaning | What to do |
|---|---|---|---|
| 400 | bad_request, url_not_allowed, bad_checksum, not_a_contract | Invalid or missing parameters, or a URL/domain that is not allowed. | Fix the input; do not retry as is. |
| 402 | - | Payment required (x402 v2). The PAYMENT-REQUIRED header holds the exact price. | Pay with an x402 client and retry with PAYMENT-SIGNATURE. |
| 403 | not_bok_authored | Requested table/resource is not served (e.g. statistics not authored by the Bank of Korea). | Do not retry. |
| 404 | not_found, tx_not_found, tx_not_mined | No data for the requested period/code yet. | Try an earlier period or another code. |
| 413 | too_large | Document is larger than this server's conversion cap (checked before payment). | Send a smaller document. |
| 415 | unsupported_type, type_mismatch | Document type not supported or not matching the declared type (before payment). | Do not retry as is. |
| 502 | upstream_error, upstream_bad_response, upstream_http_error, rpc_unavailable, source_http_error | The upstream source (government API, RPC, target site) returned an error or unreadable data. | Retry after 30-60 s with backoff. |
| 503 | endpoint_disabled, upstream_not_configured, payment_not_configured | Endpoint temporarily disabled on this server, or its upstream is not configured. No 402 is issued. | Check /status; retry later. |
| 504 | upstream_unreachable | The upstream source timed out or was unreachable (Korean public data APIs have occasional outages, esp. holidays). | Retry after 1-5 min with backoff. |
