# avacast

> 写真から作ったアバターをリアルタイムに喋らせる API (日本製)。会話の開始・発話・利用状況を tool で扱う。管理画面のアカウントでログインしてつなぐ (OAuth)。API キーでもつなげる

- name: jp.avacast/avacast
- version: 1.2.1
- connection class: R2 (oauth_consent_once)
- trust: 95/100
- quality: 81/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/jp.avacast%2Favacast
- tools: https://api.protogrid.dev/v1/servers/jp.avacast%2Favacast/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "avacast": {
      "type": "http",
      "url": "https://api.avacast.jp/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${AVACAST_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${AVACAST_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-98% +updated-15d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 81/100 (good)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 100 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- pass `auth.cimd`: Client ID Metadata Documents supported
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 19 of 19 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,061 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 25 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 19, about 2,061 tokens to load them all
- tool set hash: 88bb96ba4bf86d523e040d19458eafa5
- tools last changed: 2026-10-05T07:21:44.528Z
- badge: [![protogrid quality](https://protogrid.dev/badge/jp.avacast/avacast.svg)](https://protogrid.dev/servers/jp.avacast/avacast)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-05 `list_voices` changed (description)
  - before: 使える声 (voice_id) の一覧。create_session の voice_id や create_avatar の voice_id に使います。日本語の標準 2 声は無料、年代つきの声は Gemini-TTS です。 (api_key が必要: 管理画面で発行したキー)
  - after: 使える声 (voice_id) の一覧。create_session の voice_id や create_avatar の voice_id に使います。日本語の標準 2 声と、年代つきの声 (Gemini-TTS) があります。声によって料金は変わりません。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `resend_verification` removed
  - メール未確認のテナントの確認リンクを再発行して返し、メールにも送ります。利用者に開いてもらうと無料枠の上限になります。 (api_key が必要: signup で受け取ったキー)
- 2026-09-30 `signup` removed
  - メールアドレスで avacast のアカウントを作り、その場で API キーと確認リンク (verify_url) を返します (パスワード不要)。受け取ったキーで接続し直せばすぐ使えます。利用者に verify_url を開いてもらうと無料枠の上限 (同時 2・月 30 分・アバター作成可) に広がります。開かれないと 1 時間で消えます。
- 2026-09-30 `delete_avatar` changed (description, annotations)
  - before: 自分で作ったアバターを消します (プリセットは消せません)。過去のセッションの記録は残ります。 (api_key が必要: signup で受け取ったキー)
  - after: 自分で作ったアバターを消します (プリセットは消せません)。過去のセッションの記録は残ります。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `get_avatar` changed (description, annotations)
  - before: 自分で作ったアバターの状態 (preparing / ready / failed) と失敗理由を返します。 (api_key が必要: signup で受け取ったキー)
  - after: 自分で作ったアバターの状態 (preparing / ready / failed) と失敗理由を返します。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `create_avatar` changed (description, inputSchema, annotations)
  - before: 正面・明るい・口を閉じた 1 人の写真 (PNG/JPEG、6MB まで) からアバターを作ります。生成に 2〜3 分かかるので get_avatar で ready になるのを待ってください。メール確認済みのテナントでのみ作れます。プランごとに作れる数に上限があります。 (api_key が必要: signup で受け取ったキー)
  - after: 正面・明るい・口を閉じた 1 人の写真 (PNG/JPEG、6MB まで) からアバターを作ります。生成に 2〜3 分かかるので get_avatar で ready になるのを待ってください。メール確認済みのテナントでのみ作れます。プランごとに作れる数に上限があります。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `get_billing_portal` changed (description, annotations)
  - before: Stripe の顧客ポータルの URL を返します (支払い方法の変更・領収書・解約)。有料プランの契約後に使えます。 (api_key が必要: signup で受け取ったキー)
  - after: Stripe の顧客ポータルの URL を返します (支払い方法の変更・領収書・解約)。有料プランの契約後に使えます。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `list_voices` changed (description, annotations)
  - before: 使える声 (voice_id) の一覧。create_session の voice_id や create_avatar の voice_id に使います。日本語の標準 2 声は無料、年代つきの声は Gemini-TTS です。 (api_key が必要: signup で受け取ったキー)
  - after: 使える声 (voice_id) の一覧。create_session の voice_id や create_avatar の voice_id に使います。日本語の標準 2 声は無料、年代つきの声は Gemini-TTS です。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `list_sessions` changed (description, annotations)
  - before: 直近のセッション (最大 50 件) と状態・終了理由・接続秒数を返します。繋がらない・すぐ切れる問題の切り分けに使います。 (api_key が必要: signup で受け取ったキー)
  - after: 直近のセッション (最大 50 件) と状態・終了理由・接続秒数を返します。繋がらない・すぐ切れる問題の切り分けに使います。 (api_key が必要: 管理画面で発行したキー)
- 2026-09-30 `get_account` changed (description, annotations)
  - before: テナント名・プラン・上限・メール確認の有無・API キーの一覧を返します。セッションやアバターが作れないときは、まずこれで上限と確認状態を見てください。 (api_key が必要: signup で受け取ったキー)
  - after: テナント名・プラン・上限・API キーの一覧を返します。セッションやアバターが作れないときは、まずこれで上限を見てください。 (api_key が必要: 管理画面で発行したキー)

Full history: https://api.protogrid.dev/v1/servers/jp.avacast%2Favacast/changes

## Remotes

- https://api.avacast.jp/api/v1/mcp (streamable-http, auth oauth2, reachable true, uptime30d 0.982906)

## Packages

_none_

## Tools (19)

- `create_api_key`: このテナントに API キーをもう 1 本発行します (本番用 live / テスト用 test)。平文は今回だけ返します。 (api_key が必要: 管理画面で発行したキー)
- `create_avatar`: 正面・明るい・口を閉じた 1 人の写真 (PNG/JPEG、6MB まで) からアバターを作ります。生成に 2〜3 分かかるので get_avatar で ready になるのを待ってください。メール確認済みのテナントでのみ作れます。プランごとに作れる数に上限があります。 (api_key が必要: 管理画面で発行したキー)
- `create_checkout`: 有料プラン (starter / standard / business) の申し込みと、プランの変更の URL を返します。まだ有料プランでなければ Stripe Checkout の URL、既に有料プランなら管理画面の変更の確認画面の URL です。どちらも利用者にブラウザで開いてもらい、利用者がその画面で確定します。金額は税抜の月額で、超過分は従量です。 (api_key が必要: 管理画面で発行したキー)
- `create_session`: アバターの枠を確保し、ブラウザへ渡す client_token と WebRTC の接続情報を返します。課金はセッションが開いていた時間で数えるので、終わったら end_session してください。 (api_key が必要: 管理画面で発行したキー)
- `delete_avatar`: 自分で作ったアバターを消します (プリセットは消せません)。過去のセッションの記録は残ります。 (api_key が必要: 管理画面で発行したキー)
- `end_session`: セッションを閉じて GPU の枠を返します。閉じ忘れは請求に乗ります。 (api_key が必要: 管理画面で発行したキー)
- `get_account`: テナント名・プラン・上限・API キーの一覧を返します。セッションやアバターが作れないときは、まずこれで上限を見てください。 (api_key が必要: 管理画面で発行したキー)
- `get_avatar`: 自分で作ったアバターの状態 (preparing / ready / failed) と失敗理由を返します。 (api_key が必要: 管理画面で発行したキー)
- `get_billing_portal`: Stripe の顧客ポータルの URL を返します (支払い方法の変更・領収書・解約)。有料プランの契約後に使えます。 (api_key が必要: 管理画面で発行したキー)
- `get_integration_guide`: avacast の組み込み方 (セッションの作り方、ブラウザ SDK、REST API の全エンドポイント、エラーコード) を Markdown で返します。コードを書く前に一度読んでください。 (api_key が必要: 管理画面で発行したキー)
- `get_session`: セッションの状態 (active/ended)、キューの長さ、接続時間、有効期限を返します。 (api_key が必要: 管理画面で発行したキー)
- `get_usage`: 当月の接続時間 (請求の根拠)、発話時間、セッション数と、プランの上限を返します。cap_period は上限を数える期間 (有料プランは請求期間) の接続時間と、止まる上限 (プランの上限と set_spending_cap の小さい方) です。 (api_key が必要: 管理画面で発行したキー)
- `interrupt`: 発話中の文を止め、キューに残っている文を捨てます。 (api_key が必要: 管理画面で発行したキー)
- `list_avatars`: 使えるアバター (プリセットと、このテナントで作った ready のもの) を返します。create_session の avatar_id にはここの id を使います。 (api_key が必要: 管理画面で発行したキー)
- `list_plans`: プランごとの月額・含まれる接続分数・同時セッション数・1 セッションの最大長・アバター数・超過単価を返します。get_usage の使用量と比べてプランを選んでください。 (api_key が必要: 管理画面で発行したキー)
- `list_sessions`: 直近のセッション (最大 50 件) と状態・終了理由・接続秒数を返します。繋がらない・すぐ切れる問題の切り分けに使います。 (api_key が必要: 管理画面で発行したキー)
- `list_voices`: 使える声 (voice_id) の一覧。create_session の voice_id や create_avatar の voice_id に使います。日本語の標準 2 声と、年代つきの声 (Gemini-TTS) があります。声によって料金は変わりません。 (api_key が必要: 管理画面で発行したキー)
- `set_spending_cap`: 月間 (有料プランは請求期間) の接続時間の上限を分で決めます。上限に達すると新しいセッションは作れなくなり、上限を超える料金は発生しません。ここで設定できるのは今の上限以下の値だけです。上限を上げる・外すときは、返る settings_url を利用者に開いてもらい、管理画面で設定してもらってください。 (api_key が必要: 管理画面で発行したキー)
- `speak`: セッションのアバターにテキストを喋らせます (キューに積まれ、順に発話)。ブラウザ SDK が接続 (session.start) してから呼んでください。接続前は session_not_connected になります。 (api_key が必要: 管理画面で発行したキー)
