Getting started

Five minutes from zero to a live query against 6,771 Japanese public programs. Free tier needs no API key; MCP setup below works with Claude Desktop, Cursor, Gemini, and any client speaking MCP protocol 2025-06-18.

1. First request (no API key)

The free tier auto-issues a 100 calls/day budget. This curl works as-is:

curl "https://api.autonomath.ai/v1/programs/search?q=IT&limit=5"

Response is JSON: {total, limit, offset, results: [{unified_id, primary_name, tier, amount_max_man_yen, prefecture, official_url, source_url, fetched_at, ...}]}. Names and descriptions are Japanese; leave them as UTF-8.

2. Get an API key (Paid, ¥0.5/req metered)

To remove the 100 req/day cap, create a Stripe Checkout session. Billing is pay-per-request — add a card, pay only for what you use (tax exclusive; 10% JCT added at invoice):

curl -X POST https://api.autonomath.ai/v1/billing/checkout \
  -H "Content-Type: application/json" \
  -d '{
    "success_url": "https://autonomath.ai/success.html?session_id={CHECKOUT_SESSION_ID}",
    "cancel_url": "https://autonomath.ai/en/pricing.html",
    "customer_email": "you@example.com"
  }'

Open the returned url in a browser, complete payment, and the landing page will display your API key. If you integrate your own UI, exchange the session directly:

curl -X POST https://api.autonomath.ai/v1/billing/keys/from-checkout \
  -H "Content-Type: application/json" \
  -d '{"session_id": "cs_live_..."}'
# => {"api_key": "jpintel_xxxxxxxxxxxxxxxx", "tier": "paid", "customer_id": "cus_..."}

The API key is returned once. Store it immediately; if lost, cancel the subscription via /v1/billing/portal and re-subscribe to issue a fresh key.

3. Authenticated request

curl -H "X-API-Key: jpintel_xxxxxxxxxxxxxxxx" \
  "https://api.autonomath.ai/v1/programs/search?q=IT&tier=S&tier=A&limit=5"

4. Python (requests)

import requests

API_KEY = "jpintel_xxxxxxxxxxxxxxxx"
BASE = "https://api.autonomath.ai"

r = requests.get(
    f"{BASE}/v1/programs/search",
    params={"q": "IT", "tier": ["S", "A"], "limit": 5},
    headers={"X-API-Key": API_KEY},
)
r.raise_for_status()
print(r.json()["total"], "results")

5. Node.js (fetch)

const API_KEY = "jpintel_xxxxxxxxxxxxxxxx";
const BASE = "https://api.autonomath.ai";

const url = new URL(`${BASE}/v1/programs/search`);
url.searchParams.set("q", "IT");
url.searchParams.append("tier", "S");
url.searchParams.append("tier", "A");

const res = await fetch(url, { headers: { "X-API-Key": API_KEY } });
const data = await res.json();
console.log(`${data.total} results`);

6. MCP (Claude Desktop)

MCP protocol version: 2025-06-18. Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (or the Windows equivalent) and add:

{
  "mcpServers": {
    "jpintel": {
      "command": "AutonoMath",
      "env": {
        "JPINTEL_DB_PATH": "/path/to/jpintel.db"
      }
    }
  }
}

Cursor, Gemini, and other MCP 2025-06-18 clients follow the same pattern — drop the server into the client's MCP config.

7. Smoke test

# health check (no auth)
curl https://api.autonomath.ai/healthz
# => {"status":"ok"}

# dataset summary
curl https://api.autonomath.ai/meta
# => {"total_programs": 6771, "tier_counts": {...}, ...}

Both 200 means you are live.

Next

  • Full REST reference — api-reference (JP with English field names)
  • Exclusion rules — exclusions
  • FAQ (rate limits, data freshness, SLA) — faq
  • MCP tools in detail — mcp-tools