最初に試す4つの呼び出し
ステップを1つずつ開いて進めてください。ステップ1で設定するTUTORFLOW_KEYとCLASSROOM_IDは、以降のステップでも使います。
curlとjqが必要です。実行前にslugとメールアドレスを変更してください。
1エージェントを登録
キーなしで1回呼び出すだけです。レスポンスにはcontentApiKey、defaultClassroomId、50の体験クレジットが含まれます。キーは一度しか表示されないので、必ず保存してください。
RESPONSE=$(curl -s -X POST https://api.tutorflow.io/v1/platform/agent/register \
-H "Content-Type: application/json" \
-d '{"name":"My Agent","slug":"my-agent-2048","email":"you@example.com"}')
export TUTORFLOW_KEY=$(echo "$RESPONSE" | jq -r .contentApiKey)
export CLASSROOM_ID=$(echo "$RESPONSE" | jq -r .defaultClassroomId)2コース生成を開始
TutorFlowがバックグラウンドでコースを作成し、202とrunIdを返します。1レッスンのコースは6クレジットです。
RUN_ID=$(curl -s -X POST \
"https://api.tutorflow.io/v1/content/classrooms/$CLASSROOM_ID/courses/generate" \
-H "Authorization: Bearer $TUTORFLOW_KEY" \
-H "Content-Type: application/json" \
-d '{"topic":"Fractions for grade 4","lessonCount":1}' | jq -r .runId)3進捗を確認
statusがcompletedかfailedになるまで、20〜30秒ごとに生成状況を取得してください。完了すると、resourceIdに新しいコースのIDが入ります。
curl -s "https://api.tutorflow.io/v1/content/classrooms/$CLASSROOM_ID/runs/$RUN_ID" \
-H "Authorization: Bearer $TUTORFLOW_KEY" | jq '{status, resourceId, error}'4回答を採点
採点結果はすぐに返ります。スコア、良い点、改善の提案が含まれ、1回につき1クレジットです。
リクエスト
curl -s -X POST "https://api.tutorflow.io/v1/content/classrooms/$CLASSROOM_ID/evaluations" \
-H "Authorization: Bearer $TUTORFLOW_KEY" \
-H "Content-Type: application/json" \
-d '{
"evaluationType": "open_ended",
"questionText": "Explain photosynthesis",
"learnerAnswer": "Plants use sunlight to convert CO2 and water into glucose.",
"maxScore": 10,
"language": "en",
"learnerExternalId": "learner-42"
}'レスポンス
{
"id": "5023...",
"status": "COMPLETED",
"evaluationType": "open_ended",
"learner": { "externalId": "learner-42", "name": null },
"score": 7,
"maxScore": 10,
"normalizedScore": 70,
"strengths": ["Correctly identifies sunlight as key factor"],
"suggestions": ["Mention the role of chlorophyll", "Explain the chemical equation"],
"feedbackSummary": "Good foundational understanding. To improve, include the role of chlorophyll."
}ターミナル派ならCLIで
@tutorflow/cliからも同じ呼び出しができます。agent registerでキーが~/.tutorflow/config.jsonに保存されるので、以降のコマンドではキーや教室を指定する必要はありません。
npm install -g @tutorflow/cli
tutorflow agent register --name "My Agent" --slug my-agent-2048 --email you@example.com
tutorflow course generate "Fractions for grade 4" --lessons 1 --wait
tutorflow evaluate --type open-ended --question "Explain photosynthesis" \
--student-answer "Plants use sunlight to make glucose." --learner-id learner-42人の手を借りずに、エージェントが進められること
Content APIキー1つで、REST、MCP、CLIのどれからでも使えます。RESTではすべての機能を、MCPでは登録、支払い、コース、採点を扱えます。
学習者の回答を採点
回答とルーブリックまたは模範解答を送ると、スコア、良い点、改善点が型付きのフィールドで返ってきます。
教材を作る
コース、試験、スライド、動画、モジュールを1回の呼び出しで作り始め、完了するまで進行状況を確認できます。
MCPツールとして呼び出す
サーバーURLとキーを追加するだけで、Claude CodeなどのMCPクライアントがTutorFlowをツールとして使えます。
人を介さずに登録
エージェントが自分でアカウントを作ると、キー、オンライン教室、50の体験クレジットが1回の応答でそろいます。
呼び出しごとの費用が明確
作業ごとに決まった数のクレジット(1クレジット2セント)が1つの残高から引かれます。実行前にestimatedCreditsで費用を確認でき、レート制限はレスポンスヘッダーで返ります。
用途ごとにキーを分ける
テストキーと本番キーを分け、キーごとに権限を絞り、必要に応じてローテーションできます。テストキーはサンドボックスのオンライン教室で動き、クレジットを消費しません。
処理が終わったら通知
Webhookを登録すると、生成、動画のレンダリング、採点が終わった時点で署名付きリクエストが届きます。
エージェントが指定した言語で
コンテンツもフィードバックも、エージェントが指定した言語で返します。
人だけでなく エージェントのためにも。
エージェントはTutorFlowのツールを自分で見つけて使います。登録、残高の確認、コースの生成、進行状況の確認、回答の採点まで、HTTPのコードを書く必要はありません。
- MCPクライアントの設定にサーバーを1つ追加すれば、Claude、GeminiなどどのMCPクライアントからでも接続できます
- エージェントが自分で登録し、同じ呼び出しでキーを受け取ります
- クレジットが残り少なくなると、人に決済リンクを送るか、x402が有効な環境ではUSDCで自ら支払います
- 入力は型付きなので、呼び出しが間違っていれば理由が返ってきます
Claude Code
// .mcp.json: add to your project root
{
"mcpServers": {
"tutorflow": {
"type": "http",
"url": "https://mcp.tutorflow.io/api/mcp",
"headers": {
"Authorization": "Bearer tf_content_..."
}
}
}
}MCP SDK
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
const transport = new StreamableHTTPClientTransport(
new URL('https://mcp.tutorflow.io/api/mcp'),
{
requestInit: {
headers: { Authorization: 'Bearer tf_content_...' },
},
},
)
const client = new Client({ name: 'my-agent', version: '1.0.0' })
await client.connect(transport)
// Call tools directly
const result = await client.callTool('run_evaluation', {
evaluationType: 'open_ended',
questionText: 'Explain photosynthesis',
learnerAnswer: 'Plants use sunlight to make glucose...',
})自己登録
// No auth needed: agents register themselves
POST https://api.tutorflow.io/v1/platform/agent/register
{
"name": "My AI Tutor",
"slug": "my-ai-tutor",
"email": "agent@example.com",
"agentIdentity": "claude-3-5-sonnet"
}
// Returns a Content API key and the classroom it works in
// { "contentApiKey": "tf_content_...", "defaultClassroomId": "...", "trialContentCredits": 50 }エージェントが作った分だけお支払い
すべての呼び出しはアカウントのクレジット残高1つから差し引かれ、1クレジットは2セントです。以下はエージェントに実際に適用される最新の料金表です。
| 作成するもの | クレジット | 米ドル |
|---|---|---|
| 構成とすべてのレッスンを含むコース | 3クレジット + レッスンあたり6クレジット | $0.06 + レッスンあたり$0.12 |
| レッスンモジュール1つ | レッスンあたり6クレジット | レッスンあたり$0.12 |
| 自動採点の設問を含む試験 | 試験あたり3クレジット | 試験あたり$0.06 |
| スライドのテキストページ | テキストページあたり1クレジット | テキストページあたり$0.02 |
| AI画像入りのスライドページ | 画像ページあたり3クレジット | 画像ページあたり$0.06 |
| 動画シーンのナレーション | シーンあたり1クレジット | シーンあたり$0.02 |
| 動画のMP4レンダリング | レンダリングあたり3クレジット | レンダリングあたり$0.06 |
| すぐに遊べるゲーム | ゲームあたり41クレジット | ゲームあたり$0.82 |
| 回答1件の採点 | リクエストあたり1クレジット | リクエストあたり$0.02 |
請求のしくみ
- メール認証が済めば、カードまたはBase上のUSDCで5ドルからチャージできます。
- カードを登録しておくと、クレジットがなくなっても作業を続けられ、その分はカードに請求されます。
- 新しいアカウントには50クレジットが無料で付与されます。
- テストキーはサンドボックスのオンライン教室でのみ使え、クレジットを消費しません。