{
  "markdown": "# torify-examples\n\nCode examples for [Torify](https://torify.dev) — Japanese locale APIs for AI agents.\n\n40 endpoints for wareki (era dates), invoice validation, corporate lookup, address normalization, bank/branch search (full Zengin database — 1,152 institutions), legal holiday (Labor Standards Act), school code, and more.\n\n[![torify.dev](https://img.shields.io/badge/API-torify.dev-60a5fa)](https://torify.dev)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Smithery](https://img.shields.io/badge/Smithery-100%2F100-purple)](https://smithery.ai/servers/endenibrk/torify)\n[![MCP.so](https://img.shields.io/badge/MCP.so-listed-green)](https://mcp.so/server/torify-%E2%80%94-japanese-locale-apis-for-ai-agents/hiroki-sonoda)\n[![Anthropic Registry](https://img.shields.io/badge/Anthropic_MCP_Registry-listed-orange)](https://registry.modelcontextprotocol.io/v0/servers/dev.torify/japanese-locale-mcp)\n\n## Listed on\n\n- **Smithery** — https://smithery.ai/servers/endenibrk/torify (Score 100/100)\n- **MCP.so** — https://mcp.so/server/torify-%E2%80%94-japanese-locale-apis-for-ai-agents/hiroki-sonoda\n- **Anthropic Official MCP Registry** — https://registry.modelcontextprotocol.io/v0/servers/dev.torify/japanese-locale-mcp\n- **Cursor MCP Directory** — https://cursor.directory/mcp _(Pending review)_\n- **Cline MCP Marketplace** — https://github.com/cline/mcp-marketplace/issues/1603 _(Issue #1603 · Pending review)_\n- **x402scan** — https://www.x402scan.com\n- **a2aregistry.org** — https://a2aregistry.org\n\n---\n\n## Pricing\n\n| Plan | Price | Limit | Auth method |\n|------|-------|-------|-------------|\n| **Free Trial** | Free | 100 calls/month | `X-Trial-Key` (email signup) |\n| **MCP** | Free | 100 req/day/IP | No auth |\n| **x402** | $0.02/call | Unlimited | `X-PAYMENT` header (USDC on Base L2) |\n| **Pro** | $49/mo | 10,000 calls/month | `X-API-Key` |\n| **Enterprise** | $499/mo | 1,000,000 calls/month (Fair Use) | `X-API-Key` + priority support + SLA |\n\n### Get a free trial key\n\n```bash\ncurl -X POST https://torify.dev/v1/trial/signup \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\":\"you@example.com\"}'\n# { \"ok\": true, \"data\": { \"trialKey\": \"tk_...\" } }\n```\n\nUse the returned key as the `X-Trial-Key` header. Limit: 100 calls/month, resets monthly.\n\n```bash\ncurl -H \"X-Trial-Key: tk_...\" \\\n  \"https://torify.dev/v1/wareki/convert?direction=g2w&date=2024-05-01\"\n```\n\n---\n\n## Quick Start\n\n### Free tier (MCP — no wallet, no signup)\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"torify\": {\n      \"type\": \"http\",\n      \"url\": \"https://torify-mcp.torify.workers.dev\"\n    }\n  }\n}\n```\n\n100 requests/day/IP free. Works in Claude Desktop and Cursor.\n\n### x402 per-call ($0.02 USDC on Base L2)\n\n```bash\nnpm install x402-fetch viem\nexport PRIVATE_KEY=\"0x...\"\nnpx ts-node typescript/x402-example.ts\n```\n\n### API Key subscription ($49/mo Pro or $499/mo Enterprise)\n\nSubscribe via Polar to receive your API key by email:\n\n- **Pro ($49/mo)**: https://buy.polar.sh/polar_cl_N7Q6P6X3TMOlv9TqaGHrbqzviFnnmSuICsTdT06N2LW\n- **Enterprise ($499/mo)**: https://buy.polar.sh/polar_cl_mWV5CA7nv6rfR0aGM1H7HJjmgVLJGXBCKeHre05RvHe\n\n```bash\nexport TORIFY_API_KEY=\"your-key\"\nnpx ts-node typescript/apikey-example.ts\n```\n\n---\n\n## Examples\n\n### Wareki (era date) conversion\n\n```bash\n# Gregorian → Wareki\ncurl \"https://torify.dev/v1/wareki/convert?direction=g2w&date=2024-05-01\"\n# { \"ok\": true, \"data\": { \"era\": \"令和\", \"eraYear\": 6, \"formatted\": \"令和6年5月1日\" } }\n\n# Wareki → Gregorian (edge case: Showa ended Jan 7, 1989; Heisei started Jan 8, 1989)\ncurl \"https://torify.dev/v1/wareki/convert?direction=w2g&era=showa&eraYear=64&month=1&day=7\"\n# { \"ok\": true, \"data\": { \"gregorian\": \"1989-01-07\" } }\n```\n\n### Invoice number validation\n\n```bash\n# Format + check digit validation (no payment needed)\ncurl \"https://torify.dev/v1/invoice/validate?number=T7000012050002\"\n# { \"ok\": true, \"data\": { \"valid\": true } }\n```\n\n> **Status**: NTA registry integration is pending external API approval. Coming soon.\n\n```bash\n# NTA registry lookup — is this T-number actually registered?\ncurl \"https://torify.dev/v1/invoice/verify?number=T1180301018771\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"registered\": true, \"registrantName\": \"トヨタ自動車株式会社\", \"confidence\": 0.99 } }\n```\n\n### Corporate number lookup\n\n> **Status**: Corporate number lookup is pending external API approval. Coming soon.\n\n```bash\ncurl \"https://torify.dev/v1/houjin/lookup?number=7000012050002\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"name\": \"国税庁\", \"address\": \"東京都千代田区霞が関3丁目1番1号\", \"status\": \"active\" } }\n```\n\n### Postal code lookup\n\n```bash\ncurl \"https://torify.dev/v1/postal/lookup?zipcode=1000013\"\n# { \"ok\": true, \"data\": { \"prefecture\": \"東京都\", \"city\": \"千代田区\", \"town\": \"霞が関\" } }\n```\n\n### Phone number validation\n\n```bash\n# Tokyo (2-digit area code 03)\ncurl \"https://torify.dev/v1/phone/validate?phone=03-1234-5678\"\n# { \"ok\": true, \"data\": { \"valid\": true, \"type\": \"landline\", \"region\": \"東京\" } }\n\n# Rural (4-digit area code 0266)\ncurl \"https://torify.dev/v1/phone/validate?phone=0266-12-3456\"\n# { \"ok\": true, \"data\": { \"valid\": true, \"type\": \"landline\", \"region\": \"長野\" } }\n```\n\n### Address normalization\n\n#### Response Schema (v0.3.0+)\n\n```typescript\n{\n  prefecture: string | null,\n  city: string | null,\n  town: string | null,\n  streetNumber: string | null,\n  streetNumberHyphen: string | null,\n  streetNumberFormal: string | null,\n  addressType: 'block' | 'street' | 'rural' | 'other',   // NEW: first-class enum\n  streetRef: {                                            // NEW: Kyoto intersection\n    intersection: string;\n    direction: '上る' | '下る' | '東入' | '西入' | null;\n  } | null,\n  addressee: string | null,                               // NEW: 様方/気付/c/o separated\n}\n```\n\n#### Examples\n\n| Input | addressType | streetRef | addressee | Notes |\n|---|---|---|---|---|\n| 東京都千代田区霞が関3丁目1番1号 | `block` | `null` | `null` | 通常住所 |\n| 京都府京都市中京区烏丸通三条上る場之町 | `street` | `{\"direction\": \"上る\", \"intersection\": \"烏丸通三条上る\"}` | `null` | 京都通り名 |\n| 東京都港区赤坂2-3-4 山田様方 | `block` | `null` | `\"山田\"` | 方書 |\n| 東京都港区赤坂二丁目 | `block` | `null` | `null` | 漢数字 1-99 → Arabic 自動変換 |\n\n```bash\n# 通常住所 (block)\ncurl \"https://torify.dev/v1/address/normalize\" \\\n  --get --data-urlencode \"address=東京都千代田区霞が関3丁目1番1号\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"prefecture\": \"東京都\", \"city\": \"千代田区\", \"town\": \"霞が関\",\n#                          \"addressType\": \"block\", \"streetRef\": null, \"addressee\": null } }\n\n# 京都通り名 (street + streetRef populated)\ncurl \"https://torify.dev/v1/address/normalize\" \\\n  --get --data-urlencode \"address=京都府京都市中京区烏丸通三条上る場之町\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"prefecture\": \"京都府\", \"city\": \"京都市中京区\",\n#                          \"addressType\": \"street\",\n#                          \"streetRef\": { \"intersection\": \"烏丸通三条上る\", \"direction\": \"上る\" },\n#                          \"addressee\": null } }\n\n# 方書 — addressee 分離\ncurl \"https://torify.dev/v1/address/normalize\" \\\n  --get --data-urlencode \"address=東京都港区赤坂2-3-4 山田様方\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"prefecture\": \"東京都\", \"city\": \"港区\", \"town\": \"赤坂\",\n#                          \"addressType\": \"block\", \"streetRef\": null, \"addressee\": \"山田\" } }\n\n# 漢数字 → Arabic 自動変換\ncurl \"https://torify.dev/v1/address/normalize\" \\\n  --get --data-urlencode \"address=東京都港区赤坂二丁目\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"prefecture\": \"東京都\", \"city\": \"港区\", \"town\": \"赤坂2丁目\",\n#                          \"addressType\": \"block\", \"streetRef\": null, \"addressee\": null } }\n```\n\n### Bank lookup, search, and list (full Zengin database, 1,150+ banks)\n\n```bash\n# Look up by bank code + branch code\ncurl \"https://torify.dev/v1/bank/lookup?bankCode=0001&branchCode=001\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"bankName\": \"みずほ銀行\", \"bankNameEn\": \"Mizuho Bank\",\n#                          \"branchName\": \"東京営業部\", \"found\": true, \"branchFound\": true } }\n\n# Search banks by partial name (kanji / kana / romaji)\ncurl \"https://torify.dev/v1/bank/search\" --get --data-urlencode \"name=みずほ\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"mode\": \"bank\", \"hits\": [...], \"total\": 2 } }\n\n# Search branches within a specific bank\ncurl \"https://torify.dev/v1/bank/search?bankCode=0001\" --get --data-urlencode \"name=東京\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"mode\": \"branch\", \"hits\": [...] } }\n\n# Paginated full bank list\ncurl \"https://torify.dev/v1/bank/list?limit=5\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"total\": 1152, \"banks\": [...] } }\n```\n\n### Bank transfer validation (Zengin format)\n\n```bash\ncurl \"https://torify.dev/v1/bank/transfer/validate?bankCode=0001&branchCode=001&accountType=1&accountNumber=1234567\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"valid\": true, \"accountTypeName\": \"普通\", \"isYucho\": false } }\n```\n\n### Legal holiday check (Labor Standards Act Art. 35)\n\n```bash\n# Standard 5-day work week (Sun = legal holiday, Sat = non-legal rest day)\ncurl \"https://torify.dev/v1/legal-holiday/check?date=2024-05-05&restDays=sun,sat\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"isLegalHoliday\": true, \"overtimePremiumRate\": 0.35,\n#                          \"overtimePremiumRateLegalNonHoliday\": 0.25,\n#                          \"legalReference\": \"Labor Standards Act Article 35 (労働基準法第35条)\" } }\n```\n\n### MEXT school code validation (13-char)\n\n```bash\ncurl \"https://torify.dev/v1/school-code/validate?code=B213123456X00\" \\\n  -H \"X-API-Key: $TORIFY_API_KEY\"\n# { \"ok\": true, \"data\": { \"valid\": true, \"schoolType\": \"elementary\",\n#                          \"establishment\": \"public_prefectural\", \"prefectureJa\": \"東京都\" } }\n```\n\n### Self IP address (free, no auth)\n\n```bash\ncurl \"https://torify.dev/v1/whoami\"\n# { \"ok\": true, \"data\": { \"ip\": \"...\", \"country\": \"JP\", \"userAgent\": \"...\" } }\n```\n\n---\n\n## TypeScript with x402 (autonomous payment)\n\n```typescript\nimport { wrapFetchWithPayment } from \"x402-fetch\";\nimport { createWalletClient, http } from \"viem\";\nimport { base } from \"viem/chains\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nconst wallet = createWalletClient({\n  account: privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`),\n  chain: base,\n  transport: http()\n});\nconst fetch402 = wrapFetchWithPayment(fetch, wallet);\n\n// Agent pays $0.02 USDC automatically — no API key needed\nconst res = await fetch402(\"https://torify.dev/v1/invoice/verify?number=T1180301018771\");\nconst { ok, data } = await res.json();\nconsole.log(data.registered, data.confidence); // true, 0.99\n```\n\n## Python with API Key\n\n```python\nimport os, requests\n\nheaders = {\"X-API-Key\": os.environ[\"TORIFY_API_KEY\"]}\n\nr = requests.get(\n    \"https://torify.dev/v1/address/normalize\",\n    params={\"address\": \"東京都千代田区霞が関3丁目1番1号\"},\n    headers=headers\n)\ndata = r.json()[\"data\"]\nprint(data[\"prefecture\"], data[\"city\"], data[\"town\"])\n# 東京都 千代田区 霞が関\n```\n\n---\n\n## All Endpoints\n\nFull docs: [torify.dev/docs](https://torify.dev/docs)\n\nAll 40 endpoints (paid $0.02/call + free MCP / whoami):\n\n| Category | Endpoints |\n|----------|-----------|\n| Era & Date | wareki/convert, holiday/check, age/calculate, legal-holiday/check |\n| Legal & Tax | invoice/validate, invoice/verify, tax/calculate, eltax/check (POST), freelance/order/validate (POST) |\n| Corporate | houjin/lookup, industry/lookup |\n| Address | postal/lookup, address/normalize, region/lookup, coordinate/convert |\n| Geo | geo/geocode (address → lat/lng via GSI, PDL 1.0), geo/reverse-geocode (lat/lng → municipality + town via GSI, PDL 1.0) |\n| Legal Search | law/search (Japanese law search via e-Gov API v2, 政府標準利用規約) |\n| Text | name/romanize, name/split, name/validate, kana/convert, text/normalize, kanji/to-kana (Cloudflare Workers AI, Llama 3.3 70B), kanji/normalize (POST) |\n| Finance | bank/lookup, bank/search, bank/list, bank/transfer/validate, yucho/convert, payment/3ds/check |\n| Identity | mynumber/validate, passport/validate, insurance/validate, plate/validate, barcode/validate, phone/validate |\n| Education | school-code/validate |\n| Diagnostic | whoami (free, no auth required) |\n| Bulk | wareki/convert/bulk, invoice/validate/bulk, invoice/verify/bulk (max 300), tax/calculate/bulk (max 1000) |\n\n---\n\n## License\n\nMIT — examples only. The Torify API service is proprietary.\n\n---\n\n*Last updated: 2026-05-27*\n",
  "bytes": 12414,
  "sha": "07fd46b3563b537b8d6487809ddd983c93d91f801ad1cb6894ad7474a2a164b1",
  "repo_slug": "endennn/torify-examples",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_dev_torify_japanese_locale_mcp_222dbdef/readme"
}