Getting started
Five minutes from zero to a live query against 11,601 searchable Japanese public programs (tier S/A/B/C; plus 2,871 publication-review rows excluded from public search) — 2,286 case studies, 108 loan programs with three-axis risk decomposition, and 1,185 enforcement cases. Anonymous tier needs no API key (3 req/day per IP, JST UTC+9 next-day reset); 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 anonymous daily allowance auto-issues a 3 calls/day per IP budget (resets at JST next-day 00:00). This curl works as-is:
curl "https://api.jpcite.com/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, source_fetched_at, ...}]}. Names and descriptions are Japanese; leave them as UTF-8.
Hitting the limit returns 429 with {"limit": 3, "resets_at": "..."} — wait until JST 翌日 reset (00:00 next-day) or upgrade in §2. Transient 5xx (e.g. 503) returns a JSON detail body — retry with backoff.
2. Get an API key (Paid · ¥3/billable unit, ¥3.30 incl. tax)
To remove the 3 req/day per IP 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.jpcite.com/v1/billing/checkout \
-H "Content-Type: application/json" \
-d '{
"success_url": "https://jpcite.com/en/success.html?session_id={CHECKOUT_SESSION_ID}",
"cancel_url": "https://jpcite.com/en/pricing.html",
"customer_email": "[email protected]"
}'
Open the returned url in the same browser, complete payment, and the landing page will display your API key. The key exchange is browser-bound to the checkout state cookie, so a copied session_id alone cannot reveal a key.
The API key is returned once. Store it immediately; if lost, open the Dashboard or /v1/billing/portal and rotate the key instead of cancelling and re-subscribing.
3. Authenticated request
curl -H "X-API-Key: jc_xxxxxxxxxxxxxxxx" \
"https://api.jpcite.com/v1/programs/search?q=IT&tier=S&tier=A&limit=5"
4. Python (requests)
import requests
API_KEY = "jc_xxxxxxxxxxxxxxxx"
BASE = "https://api.jpcite.com"
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 = "jc_xxxxxxxxxxxxxxxx";
const BASE = "https://api.jpcite.com";
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. Recommended install path is uvx (no venv to maintain; auto-updates on each launch). Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (or the Windows equivalent) and add:
{
"mcpServers": {
"jpcite": {
"command": "uvx",
"args": ["autonomath-mcp"]
}
}
}
- Alternatively:
pip install autonomath-mcp, then"command": "autonomath-mcp". - One-click: download the .mcpb bundle and double-click — Claude Desktop installs it.
- Restart Claude Desktop. 261 tools appear at standard configuration, covering program / case-study / loan / enforcement search, expansion datasets (laws, tax rulesets, court decisions, bids, invoice registrants), the structured entity facts, metadata tools (annotations / validation / provenance), static dataset tools, and DD-support tools (lifecycle / abstract / prerequisite / graph traversal / rule engine / related programs). Full schemas at /docs/mcp-tools/.
Cursor, Cline, Continue, and other MCP 2025-06-18 clients follow the same pattern — drop the server into the client's MCP config. ChatGPT Custom GPTs use the OpenAPI Actions guide instead.
7. Smoke test
# health check (no auth)
curl https://api.jpcite.com/healthz
# => {"status":"ok"}
# dataset summary (canonical /v1/meta; legacy /meta 308-redirects, so -L is required)
curl -L https://api.jpcite.com/v1/meta
# => {
# "total_programs": 14472,
# "tier_counts": {"S": 114, "A": 1340, "B": 4186, "C": 5961, "X": 2871},
# "exclusion_rules_count": 181,
# "last_ingested_at": "2026-04-29T10:30:00+09:00",
# "data_as_of": "2026-04-29",
# "data_lineage": {"last_fetched_at": "2026-04-29T05:14:33Z", "unique_checksums": 9421}
# }
Both 200 means you are live.