# Torify — Japan Locale APIs for AI Agents

> 39 Japanese locale APIs — wareki, NTA invoice, 法人番号, postal, romanization, kanji-kana (Workers AI).

- **Type:** MCP server
- **Install:** `agentstack add mcp-endennn-torify-examples`
- **Verified:** Pending review
- **Seller:** [torify-dev](https://agentstack.voostack.com/s/torify-dev)
- **Installs:** 0
- **Category:** [Cloud & Infrastructure](https://agentstack.voostack.com/c/cloud-infrastructure)
- **Latest version:** 0.2.0
- **License:** MIT
- **Upstream author:** [torify-dev](https://github.com/torify-dev)
- **Source:** https://github.com/torify-dev/torify-examples
- **Website:** https://torify.dev

## Install

```sh
agentstack add mcp-endennn-torify-examples
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# torify-examples

Code examples for [Torify](https://torify.dev) — Japanese locale APIs for AI agents.

40 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.

[](https://torify.dev)
[](LICENSE)
[](https://smithery.ai/servers/endenibrk/torify)
[](https://mcp.so/server/torify-%E2%80%94-japanese-locale-apis-for-ai-agents/hiroki-sonoda)
[](https://registry.modelcontextprotocol.io/v0/servers/dev.torify/japanese-locale-mcp)

## Listed on

- **Smithery** — https://smithery.ai/servers/endenibrk/torify (Score 100/100)
- **MCP.so** — https://mcp.so/server/torify-%E2%80%94-japanese-locale-apis-for-ai-agents/hiroki-sonoda
- **Anthropic Official MCP Registry** — https://registry.modelcontextprotocol.io/v0/servers/dev.torify/japanese-locale-mcp
- **Cursor MCP Directory** — https://cursor.directory/mcp _(Pending review)_
- **Cline MCP Marketplace** — https://github.com/cline/mcp-marketplace/issues/1603 _(Issue #1603 · Pending review)_
- **x402scan** — https://www.x402scan.com
- **a2aregistry.org** — https://a2aregistry.org

---

## Pricing

| Plan | Price | Limit | Auth method |
|------|-------|-------|-------------|
| **Free Trial** | Free | 100 calls/month | `X-Trial-Key` (email signup) |
| **MCP** | Free | 100 req/day/IP | No auth |
| **x402** | $0.02/call | Unlimited | `X-PAYMENT` header (USDC on Base L2) |
| **Pro** | $49/mo | 10,000 calls/month | `X-API-Key` |
| **Enterprise** | $499/mo | 1,000,000 calls/month (Fair Use) | `X-API-Key` + priority support + SLA |

### Get a free trial key

```bash
curl -X POST https://torify.dev/v1/trial/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'
# { "ok": true, "data": { "trialKey": "tk_..." } }
```

Use the returned key as the `X-Trial-Key` header. Limit: 100 calls/month, resets monthly.

```bash
curl -H "X-Trial-Key: tk_..." \
  "https://torify.dev/v1/wareki/convert?direction=g2w&date=2024-05-01"
```

---

## Quick Start

### Free tier (MCP — no wallet, no signup)

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "torify": {
      "type": "http",
      "url": "https://torify-mcp.torify.workers.dev"
    }
  }
}
```

100 requests/day/IP free. Works in Claude Desktop and Cursor.

### x402 per-call ($0.02 USDC on Base L2)

```bash
npm install x402-fetch viem
export PRIVATE_KEY="0x..."
npx ts-node typescript/x402-example.ts
```

### API Key subscription ($49/mo Pro or $499/mo Enterprise)

Subscribe via Polar to receive your API key by email:

- **Pro ($49/mo)**: https://buy.polar.sh/polar_cl_N7Q6P6X3TMOlv9TqaGHrbqzviFnnmSuICsTdT06N2LW
- **Enterprise ($499/mo)**: https://buy.polar.sh/polar_cl_mWV5CA7nv6rfR0aGM1H7HJjmgVLJGXBCKeHre05RvHe

```bash
export TORIFY_API_KEY="your-key"
npx ts-node typescript/apikey-example.ts
```

---

## Examples

### Wareki (era date) conversion

```bash
# Gregorian → Wareki
curl "https://torify.dev/v1/wareki/convert?direction=g2w&date=2024-05-01"
# { "ok": true, "data": { "era": "令和", "eraYear": 6, "formatted": "令和6年5月1日" } }

# Wareki → Gregorian (edge case: Showa ended Jan 7, 1989; Heisei started Jan 8, 1989)
curl "https://torify.dev/v1/wareki/convert?direction=w2g&era=showa&eraYear=64&month=1&day=7"
# { "ok": true, "data": { "gregorian": "1989-01-07" } }
```

### Invoice number validation

```bash
# Format + check digit validation (no payment needed)
curl "https://torify.dev/v1/invoice/validate?number=T7000012050002"
# { "ok": true, "data": { "valid": true } }
```

> **Status**: NTA registry integration is pending external API approval. Coming soon.

```bash
# NTA registry lookup — is this T-number actually registered?
curl "https://torify.dev/v1/invoice/verify?number=T1180301018771" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "registered": true, "registrantName": "トヨタ自動車株式会社", "confidence": 0.99 } }
```

### Corporate number lookup

> **Status**: Corporate number lookup is pending external API approval. Coming soon.

```bash
curl "https://torify.dev/v1/houjin/lookup?number=7000012050002" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "name": "国税庁", "address": "東京都千代田区霞が関3丁目1番1号", "status": "active" } }
```

### Postal code lookup

```bash
curl "https://torify.dev/v1/postal/lookup?zipcode=1000013"
# { "ok": true, "data": { "prefecture": "東京都", "city": "千代田区", "town": "霞が関" } }
```

### Phone number validation

```bash
# Tokyo (2-digit area code 03)
curl "https://torify.dev/v1/phone/validate?phone=03-1234-5678"
# { "ok": true, "data": { "valid": true, "type": "landline", "region": "東京" } }

# Rural (4-digit area code 0266)
curl "https://torify.dev/v1/phone/validate?phone=0266-12-3456"
# { "ok": true, "data": { "valid": true, "type": "landline", "region": "長野" } }
```

### Address normalization

#### Response Schema (v0.3.0+)

```typescript
{
  prefecture: string | null,
  city: string | null,
  town: string | null,
  streetNumber: string | null,
  streetNumberHyphen: string | null,
  streetNumberFormal: string | null,
  addressType: 'block' | 'street' | 'rural' | 'other',   // NEW: first-class enum
  streetRef: {                                            // NEW: Kyoto intersection
    intersection: string;
    direction: '上る' | '下る' | '東入' | '西入' | null;
  } | null,
  addressee: string | null,                               // NEW: 様方/気付/c/o separated
}
```

#### Examples

| Input | addressType | streetRef | addressee | Notes |
|---|---|---|---|---|
| 東京都千代田区霞が関3丁目1番1号 | `block` | `null` | `null` | 通常住所 |
| 京都府京都市中京区烏丸通三条上る場之町 | `street` | `{"direction": "上る", "intersection": "烏丸通三条上る"}` | `null` | 京都通り名 |
| 東京都港区赤坂2-3-4 山田様方 | `block` | `null` | `"山田"` | 方書 |
| 東京都港区赤坂二丁目 | `block` | `null` | `null` | 漢数字 1-99 → Arabic 自動変換 |

```bash
# 通常住所 (block)
curl "https://torify.dev/v1/address/normalize" \
  --get --data-urlencode "address=東京都千代田区霞が関3丁目1番1号" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "prefecture": "東京都", "city": "千代田区", "town": "霞が関",
#                          "addressType": "block", "streetRef": null, "addressee": null } }

# 京都通り名 (street + streetRef populated)
curl "https://torify.dev/v1/address/normalize" \
  --get --data-urlencode "address=京都府京都市中京区烏丸通三条上る場之町" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "prefecture": "京都府", "city": "京都市中京区",
#                          "addressType": "street",
#                          "streetRef": { "intersection": "烏丸通三条上る", "direction": "上る" },
#                          "addressee": null } }

# 方書 — addressee 分離
curl "https://torify.dev/v1/address/normalize" \
  --get --data-urlencode "address=東京都港区赤坂2-3-4 山田様方" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "prefecture": "東京都", "city": "港区", "town": "赤坂",
#                          "addressType": "block", "streetRef": null, "addressee": "山田" } }

# 漢数字 → Arabic 自動変換
curl "https://torify.dev/v1/address/normalize" \
  --get --data-urlencode "address=東京都港区赤坂二丁目" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "prefecture": "東京都", "city": "港区", "town": "赤坂2丁目",
#                          "addressType": "block", "streetRef": null, "addressee": null } }
```

### Bank lookup, search, and list (full Zengin database, 1,150+ banks)

```bash
# Look up by bank code + branch code
curl "https://torify.dev/v1/bank/lookup?bankCode=0001&branchCode=001" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "bankName": "みずほ銀行", "bankNameEn": "Mizuho Bank",
#                          "branchName": "東京営業部", "found": true, "branchFound": true } }

# Search banks by partial name (kanji / kana / romaji)
curl "https://torify.dev/v1/bank/search" --get --data-urlencode "name=みずほ" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "mode": "bank", "hits": [...], "total": 2 } }

# Search branches within a specific bank
curl "https://torify.dev/v1/bank/search?bankCode=0001" --get --data-urlencode "name=東京" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "mode": "branch", "hits": [...] } }

# Paginated full bank list
curl "https://torify.dev/v1/bank/list?limit=5" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "total": 1152, "banks": [...] } }
```

### Bank transfer validation (Zengin format)

```bash
curl "https://torify.dev/v1/bank/transfer/validate?bankCode=0001&branchCode=001&accountType=1&accountNumber=1234567" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "valid": true, "accountTypeName": "普通", "isYucho": false } }
```

### Legal holiday check (Labor Standards Act Art. 35)

```bash
# Standard 5-day work week (Sun = legal holiday, Sat = non-legal rest day)
curl "https://torify.dev/v1/legal-holiday/check?date=2024-05-05&restDays=sun,sat" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "isLegalHoliday": true, "overtimePremiumRate": 0.35,
#                          "overtimePremiumRateLegalNonHoliday": 0.25,
#                          "legalReference": "Labor Standards Act Article 35 (労働基準法第35条)" } }
```

### MEXT school code validation (13-char)

```bash
curl "https://torify.dev/v1/school-code/validate?code=B213123456X00" \
  -H "X-API-Key: $TORIFY_API_KEY"
# { "ok": true, "data": { "valid": true, "schoolType": "elementary",
#                          "establishment": "public_prefectural", "prefectureJa": "東京都" } }
```

### Self IP address (free, no auth)

```bash
curl "https://torify.dev/v1/whoami"
# { "ok": true, "data": { "ip": "...", "country": "JP", "userAgent": "..." } }
```

---

## TypeScript with x402 (autonomous payment)

```typescript
import { wrapFetchWithPayment } from "x402-fetch";
import { createWalletClient, http } from "viem";
import { base } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";

const wallet = createWalletClient({
  account: privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`),
  chain: base,
  transport: http()
});
const fetch402 = wrapFetchWithPayment(fetch, wallet);

// Agent pays $0.02 USDC automatically — no API key needed
const res = await fetch402("https://torify.dev/v1/invoice/verify?number=T1180301018771");
const { ok, data } = await res.json();
console.log(data.registered, data.confidence); // true, 0.99
```

## Python with API Key

```python
import os, requests

headers = {"X-API-Key": os.environ["TORIFY_API_KEY"]}

r = requests.get(
    "https://torify.dev/v1/address/normalize",
    params={"address": "東京都千代田区霞が関3丁目1番1号"},
    headers=headers
)
data = r.json()["data"]
print(data["prefecture"], data["city"], data["town"])
# 東京都 千代田区 霞が関
```

---

## All Endpoints

Full docs: [torify.dev/docs](https://torify.dev/docs)

All 40 endpoints (paid $0.02/call + free MCP / whoami):

| Category | Endpoints |
|----------|-----------|
| Era & Date | wareki/convert, holiday/check, age/calculate, legal-holiday/check |
| Legal & Tax | invoice/validate, invoice/verify, tax/calculate, eltax/check (POST), freelance/order/validate (POST) |
| Corporate | houjin/lookup, industry/lookup |
| Address | postal/lookup, address/normalize, region/lookup, coordinate/convert |
| Geo | geo/geocode (address → lat/lng via GSI, PDL 1.0), geo/reverse-geocode (lat/lng → municipality + town via GSI, PDL 1.0) |
| Legal Search | law/search (Japanese law search via e-Gov API v2, 政府標準利用規約) |
| Text | name/romanize, name/split, name/validate, kana/convert, text/normalize, kanji/to-kana (Cloudflare Workers AI, Llama 3.3 70B), kanji/normalize (POST) |
| Finance | bank/lookup, bank/search, bank/list, bank/transfer/validate, yucho/convert, payment/3ds/check |
| Identity | mynumber/validate, passport/validate, insurance/validate, plate/validate, barcode/validate, phone/validate |
| Education | school-code/validate |
| Diagnostic | whoami (free, no auth required) |
| Bulk | wareki/convert/bulk, invoice/validate/bulk, invoice/verify/bulk (max 300), tax/calculate/bulk (max 1000) |

---

## License

MIT — examples only. The Torify API service is proprietary.

---

*Last updated: 2026-05-27*

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [torify-dev](https://github.com/torify-dev)
- **Source:** [torify-dev/torify-examples](https://github.com/torify-dev/torify-examples)
- **License:** MIT
- **Homepage:** https://torify.dev

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Versions

- **0.2.0** — security scan: flagged — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-endennn-torify-examples
- Seller: https://agentstack.voostack.com/s/torify-dev
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
