modelslab-account-management について
ModelsLab Account Managementは、Agent Control Plane APIでModelsLabアカウントを管理するスキルです。認証、トークン、プロフィール、APIキー、チームを扱い、ブラウザーを使わないメール認証にも対応します。これらの機能はMCPサーバーからも利用できます。
主な機能
- 01登録、ログイン、メール認証
- 02トークンの発行、更新、失効
- 03プロフィールとパスワードの管理
- 04APIキーの作成と管理
- 05チームメンバーの招待と管理
活用シーン
- 01ブラウザーなしでのアカウント作成と認証
- 02エージェントのアクセストークン更新
- 03生成エンドポイント用APIキーの管理
- 04チームメンバーの招待や削除
MCP 対応
MCPサーバーは https://modelslab.com/mcp/agents で提供され、アカウント、トークン、プロフィール、APIキー、チーム管理のツールを公開します。Bearerトークンで認証します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ modelslab/ skills --skill modelslab-account-managementインストール後、Claude Code で/modelslab-account-managementを入力して読み込まれたか確認します。
詳細
ModelsLab アカウント管理
Agent Control Plane API を通じて、認証、トークン、プロフィール、API キー、チームなど、ModelsLab アカウントのライフサイクル全般を管理します。
このスキルを使用する場面
- ModelsLab にプログラムから登録またはログインする
- 生成エンドポイント用の API キーを作成、管理する
- ユーザープロフィール、パスワード、ソーシャルリンクを更新する
- アクセストークンを管理する(一覧表示、無効化、チームアカウントの切り替え)
- チームメンバーを招待、更新、削除する
- アカウントの初期設定が必要なエージェントのワークフローを構築する
認証
Agent Control Plane では ベアラートークン(API キーではありません)を使用します。一部のエンドポイント(登録、ログイン、パスワードを忘れた場合)は、トークンなしで利用できます。
Base URL: https://modelslab.com/api/agents/v1
Authorization: Bearer <agent_access_token>
認証:登録とログイン
登録
import requests
def signup(email, password, name=None):
"""Create a new ModelsLab account."""
response = requests.post(
"https://modelslab.com/api/agents/v1/auth/signup",
json={
"email": email,
"password": password,
"name": name or ""
}
)
data = response.json()
if "error" in data:
raise Exception(data["error"])
return data["data"] # Contains access_token
# Usage
result = signup("[email protected]", "securepass123", "My Agent")
token = result["access_token"]
print(f"Signed up! Token: {token}")
ログイン
def login(email, password, token_expiry="1_month"):
"""Log in and get a bearer token.
Args:
token_expiry: "1_week", "1_month" (default), "3_months", "never"
"""
response = requests.post(
"https://modelslab.com/api/agents/v1/auth/login",
json={
"email": email,
"password": password,
"device_name": "my-agent",
"token_expiry": token_expiry
}
)
data = response.json()
if "error" in data:
raise Exception(data["error"])
return data["data"]["access_token"]
# Usage
token = login("[email protected]", "securepass123")
ログアウト
def logout(token):
"""Revoke current token."""
requests.post(
"https://modelslab.com/api/agents/v1/auth/logout",
headers={"Authorization": f"Bearer {token}"}
)
def logout_all(token):
"""Revoke all tokens for this account."""
requests.post(
"https://modelslab.com/api/agents/v1/auth/logout-all",
headers={"Authorization": f"Bearer {token}"}
)
メールアドレスの確認(ヘッドレス)
登録後、ユーザーはメールで verification_code を受け取ります。ブラウザーを使わずに確認します。
def verify_email(verification_code):
"""Verify email with the code from the verification email.
Returns an access_token and api_key — no browser required.
"""
response = requests.post(
"https://modelslab.com/api/agents/v1/auth/verify-email",
json={"verification_code": verification_code}
)
data = response.json()
if "error" in data:
raise Exception(data["error"])
return data["data"]
# Usage — complete headless signup flow
result = verify_email("the_code_from_email")
token = result["access_token"]
api_key = result["api_key"]
print(f"Verified! Token: {token}, API Key: {api_key}")
トークンの更新
再認証せずに、現在のベアラートークンをローテーションします。
def refresh_token(token, token_expiry="1_month"):
"""Refresh/rotate the current access token.
The old token is revoked and a new one is issued.
Args:
token_expiry: "1_week", "1_month" (default), "3_months", "never"
"""
response = requests.post(
"https://modelslab.com/api/agents/v1/auth/refresh",
headers={"Authorization": f"Bearer {token}"},
json={"token_expiry": token_expiry}
)
data = response.json()
if "error" in data:
raise Exception(data["error"])
return data["data"]["access_token"]
# Usage — rotate token before it expires
new_token = refresh_token(old_token, token_expiry="1_month")
パスワードのリセット
def forgot_password(email):
"""Request a password reset email."""
requests.post(
"https://modelslab.com/api/agents/v1/auth/forgot-password",
json={"email": email}
)
def reset_password(email, token, new_password):
"""Reset password using the reset token from email."""
requests.post(
"https://modelslab.com/api/agents/v1/auth/reset-password",
json={
"email": email,
"token": token,
"password": new_password,
"password_confirmation": new_password
}
)
トークン管理
def make_headers(token):
return {"Authorization": f"Bearer {token}"}
def list_tokens(token):
"""List all active tokens."""
resp = requests.get(
"https://modelslab.com/api/agents/v1/auth/tokens",
headers=make_headers(token)
)
return resp.json()["data"]
def revoke_token(token, token_id):
"""Revoke a specific token by ID."""
requests.delete(
f"https://modelslab.com/api/agents/v1/auth/tokens/{token_id}",
headers=make_headers(token)
)
def revoke_other_tokens(token):
"""Revoke all tokens except the current one."""
requests.post(
"https://modelslab.com/api/agents/v1/auth/tokens/revoke-others",
headers=make_headers(token)
)
def switch_account(token, team_username):
"""Switch to a team account context. Returns new token."""
resp = requests.post(
"https://modelslab.com/api/agents/v1/auth/switch-account",
headers=make_headers(token),
json={"account_username": team_username}
)
return resp.json()["data"]["access_token"]
プロフィール管理
プロフィールの取得
def get_profile(token):
"""Get the authenticated user's profile."""
resp = requests.get(
"https://modelslab.com/api/agents/v1/me",
headers=make_headers(token)
)
return resp.json()["data"]
# Usage
profile = get_profile(token)
print(f"Name: {profile['name']}, Email: {profile['email']}")
print(f"Wallet: ${profile.get('wallet_balance', 0)}")
プロフィールの更新
def update_profile(token, name=None, username=None, about_me=None):
"""Update profile fields."""
payload = {}
if name: payload["name"] = name
if username: payload["username"] = username
if about_me: payload["about_me"] = about_me
resp = requests.patch(
"https://modelslab.com/api/agents/v1/me",
headers=make_headers(token),
json=payload
)
return resp.json()["data"]
def update_password(token, current_password, new_password):
"""Change account password."""
requests.patch(
"https://modelslab.com/api/agents/v1/me/password",
headers=make_headers(token),
json={
"current_password": current_password,
"password": new_password,
"password_confirmation": new_password
}
)
def update_socials(token, github=None, twitter=None, discord=None):
"""Update social media links."""
payload = {}
if github: payload["github"] = github
if twitter: payload["twitter"] = twitter
if discord: payload["discord"] = discord
requests.patch(
"https://modelslab.com/api/agents/v1/me/socials",
headers=make_headers(token),
json=payload
)
def update_preferences(token, nsfw_content=None, wallet_notification_enabled=None):
"""Update account preferences."""
payload = {}
if nsfw_content is not None: payload["nsfw_content"] = nsfw_content
if wallet_notification_enabled is not None:
payload["wallet_notification_enabled"] = wallet_notification_enabled
requests.patch(
"https://modelslab.com/api/agents/v1/me/preferences",
headers=make_headers(token),
json=payload
)
API キー管理
API キーは生成エンドポイント(/api/v6、/api/v7、/api/v8)で使用します。
API キーの一覧表示
def list_api_keys(token):
"""List all API keys."""
resp = requests.get(
"https://modelslab.com/api/agents/v1/api-keys",
headers=make_headers(token)
)
return resp.json()["data"]
API キーの作成
def create_api_key(token, name, notes=None):
"""Create a new API key for generation endpoints.
Returns the full key — store it securely, it won't be shown again.
"""
payload = {"name": name}
if notes: payload["notes"] = notes
resp = requests.post(
"https://modelslab.com/api/agents/v1/api-keys",
headers=make_headers(token),
json=payload
)
return resp.json()["data"]
# Usage
key_data = create_api_key(token, "production-key", notes="Used by CI/CD")
api_key = key_data["key"]
print(f"API Key: {api_key}")
API キーの取得、更新、削除
def get_api_key(token, key_id):
"""Get details of a specific API key."""
resp = requests.get(
f"https://modelslab.com/api/agents/v1/api-keys/{key_id}",
headers=make_headers(token)
)
return resp.json()["data"]
def update_api_key(token, key_id, name=None, notes=None):
"""Update an API key's name or notes."""
payload = {}
if name: payload["name"] = name
if notes: payload["notes"] = notes
resp = requests.put(
f"https://modelslab.com/api/agents/v1/api-keys/{key_id}",
headers=make_headers(token),
json=payload
)
return resp.json()["data"]
def delete_api_key(token, key_id):
"""Delete an API key."""
requests.delete(
f"https://modelslab.com/api/agents/v1/api-keys/{key_id}",
headers=make_headers(token)
)
チーム管理
チームメンバーの一覧表示
def list_team_members(token):
"""List all team members and pending invites."""
resp = requests.get(
"https://modelslab.com/api/agents/v1/teams",
headers=make_headers(token)
)
return resp.json()["data"]
チームメンバーの招待
def invite_team_member(token, email):
"""Send a team invite to an email address."""
resp = requests.post(
"https://modelslab.com/api/agents/v1/teams",
headers=make_headers(token),
json={"email": email}
)
return resp.json()["data"]
# Usage
invite_team_member(token, "[email protected]")
メンバーの管理
def get_team_member(token, member_id):
"""Get details of a team member."""
resp = requests.get(
f"https://modelslab.com/api/agents/v1/teams/{member_id}",
headers=make_headers(token)
)
return resp.json()["data"]
def update_team_member(token, member_id, role=None, permissions=None):
"""Update a team member's role or permissions."""
payload = {}
if role: payload["role"] = role
if permissions: payload["permissions"] = permissions
resp = requests.put(
f"https://modelslab.com/api/agents/v1/teams/{member_id}",
headers=make_headers(token),
json=payload
)
return resp.json()["data"]
def remove_team_member(token, member_id):
"""Remove a member from the team."""
requests.delete(
f"https://modelslab.com/api/agents/v1/teams/{member_id}",
headers=make_headers(token)
)
def resend_invite(token, member_id):
"""Resend a pending team invite."""
requests.post(
f"https://modelslab.com/api/agents/v1/teams/{member_id}/resend-invite",
headers=make_headers(token)
)
def accept_invite(token, invite_id):
"""Accept a team invitation."""
requests.post(
f"https://modelslab.com/api/agents/v1/teams/invitations/{invite_id}/accept",
headers=make_headers(token)
)
エージェントの完全な初期設定例
import requests
class ModelsLabAgent:
"""Bootstrap a ModelsLab account for an AI agent."""
BASE = "https://modelslab.com/api/agents/v1"
def __init__(self):
self.token = None
self.api_key = None
def _headers(self):
return {"Authorization": f"Bearer {self.token}"}
def login(self, email, password):
"""Step 1: Authenticate."""
resp = requests.post(f"{self.BASE}/auth/login", json={
"email": email,
"password": password,
"token_expiry": "1_month"
})
self.token = resp.json()["data"]["access_token"]
return self
def get_or_create_api_key(self, name="agent-key"):
"""Step 2: Get existing key or create one."""
keys = requests.get(
f"{self.BASE}/api-keys",
headers=self._headers()
).json()["data"]
for key in keys:
if key["name"] == name:
self.api_key = key["key"]
return self.api_key
new_key = requests.post(
f"{self.BASE}/api-keys",
headers=self._headers(),
json={"name": name}
).json()["data"]
self.api_key = new_key["key"]
return self.api_key
def check_ready(self):
"""Step 3: Verify account is ready for generation."""
profile = requests.get(
f"{self.BASE}/me",
headers=self._headers()
).json()["data"]
print(f"Account: {profile['name']} ({profile['email']})")
print(f"API Key: {self.api_key[:8]}...")
return True
# Usage
agent = ModelsLabAgent()
agent.login("[email protected]", "password")
agent.get_or_create_api_key("production")
agent.check_ready()
# Now use agent.api_key with generation endpoints
ヘッドレスエージェントのフロー(ブラウザー不要)
ブラウザーを操作せずに、登録、確認、支払い方法の追加、サブスクリプションの登録、コンテンツの生成を行う必要があるエージェント向けの完全なフローです。3 種類すべての支払い方法(ヘッドレス、Setup Intent、人による操作)については、modelslab-billing-subscriptions を参照してください。
import requests
BASE = "https://modelslab.com/api/agents/v1"
# Fetch Stripe publishable key dynamically
config_resp = requests.get(f"{BASE}/billing/stripe-config",
headers={"Authorization": f"Bearer {token}"})
STRIPE_PK = config_resp.json()["publishable_key"]
# 1. Sign up
signup_resp = requests.post(f"{BASE}/auth/signup", json={
"email": "[email protected]",
"password": "securepass123",
"name": "My Agent"
})
# -> User receives verification_code in email
# 2. Verify email with code from email (no browser needed)
verify_resp = requests.post(f"{BASE}/auth/verify-email", json={
"verification_code": "the_code_from_email"
})
token = verify_resp.json()["data"]["access_token"]
api_key = verify_resp.json()["data"]["api_key"]
hdrs = {"Authorization": f"Bearer {token}"}
# 3a. Option A: Headless card tokenization via Stripe API (recommended)
# Or fetch key dynamically: GET /billing/stripe-config
pm_resp = requests.post(
"https://api.stripe.com/v1/payment_methods",
auth=(STRIPE_PK, ""),
data={
"type": "card",
"card[number]": "4242424242424242",
"card[exp_month]": 12,
"card[exp_year]": 2027,
"card[cvc]": "123",
}
)
pm_id = pm_resp.json()["id"]
# 3b. Option B: Setup Intent flow (save card for future use)
# setup_resp = requests.post(f"{BASE}/billing/setup-intent", headers=hdrs)
# -> Confirm with Stripe API, then use the resulting pm_id
# 3c. Option C: Human-assisted payment link
# link = requests.post(f"{BASE}/billing/payment-link", headers=hdrs, json={
# "purpose": "subscribe", "plan_id": 123
# }).json()["data"]
# -> Forward link["payment_url"] to human, then confirm-checkout
# 4. Attach the payment method
requests.post(f"{BASE}/billing/payment-methods", headers=hdrs, json={
"payment_method_id": pm_id,
"make_default": True
})
# 5. Subscribe headlessly with payment_method_id (no Checkout redirect)
sub_resp = requests.post(f"{BASE}/subscriptions", headers=hdrs, json={
"plan_id": 123,
"payment_method_id": pm_id
})
# 6. Generate content using existing APIs with the api_key from step 2
gen_resp = requests.post("https://modelslab.com/api/v6/images/text2img", json={
"key": api_key,
"model_id": "flux-dev",
"prompt": "A sunset over mountains",
"width": 1024,
"height": 1024
})
MCP サーバーへのアクセス
これらと同じ機能は、Agent Control Plane の MCP サーバーからも利用できます。
- URL:
https://modelslab.com/mcp/agents - 認証:
Authorization: Bearer <token> - ツール:
agent-auth、agent-tokens、agent-profile、agent-api-keys、agent-teams
参照先:https://docs.modelslab.com/mcp-web-api/agent-control-plane
API エンドポイントのリファレンス
| Method | Endpoint | Description |
|---|---|---|
| POST | /auth/signup | アカウントを作成 |
| POST | /auth/login | ベアラートークンを取得 |
| POST | /auth/verify-email | コードを使用してメールアドレスを確認(ヘッドレス) |
| POST | /auth/refresh | アクセストークンを更新/ローテーション |
| POST | /auth/logout | 現在のトークンを無効化 |
| POST | /auth/logout-all | すべてのトークンを無効化 |
| POST | /auth/forgot-password | リセット用メールをリクエスト |
| POST | /auth/reset-password | トークンを使用してリセット |
| POST | /auth/resend-verification | 確認メールを再送信 |
| GET | /auth/tokens | 有効なトークンを一覧表示 |
| DELETE | /auth/tokens/{id} | 指定したトークンを無効化 |
| POST | /auth/tokens/revoke-others | ほかのトークンを無効化 |
| POST | /auth/switch-account | チームのコンテキストを切り替え |
| GET | /me | プロフィールを取得 |
| PATCH | /me | プロフィールを更新 |
| PATCH | /me/password | パスワードを変更 |
| PATCH | /me/socials | ソーシャルリンクを更新 |
| PATCH | /me/preferences | 設定を更新 |
| GET | /api-keys | API キーを一覧表示 |
| POST | /api-keys | API キーを作成 |
| GET | /api-keys/{id} | API キーを取得 |
| PUT | /api-keys/{id} | API キーを更新 |
| DELETE | /api-keys/{id} | API キーを削除 |
| GET | /teams | チームメンバーを一覧表示 |
| POST | /teams | メンバーを招待 |
| GET | /teams/{id} | メンバーの詳細を取得 |
| PUT | /teams/{id} | メンバーを更新 |
| DELETE | /teams/{id} | メンバーを削除 |
| POST | /teams/{id}/resend-invite | 招待を再送信 |
| POST | /teams/invitations/{id}/accept | 招待を承認 |
ベストプラクティス
1. トークンを安全に保管する
import os
# Use environment variables, not hardcoded values
token = os.getenv("MODELSLAB_AGENT_TOKEN")
2. トークンの有効期限を適切に利用する
# Short-lived for CI/CD
login(email, password, token_expiry="1_week")
# Long-lived for persistent agents
login(email, password, token_expiry="never")
3. 内容がわかりやすい API キーを作成する
create_api_key(token, "staging-backend", notes="Used by staging environment")
create_api_key(token, "ci-tests", notes="Used by GitHub Actions")
4. 古いトークンを削除する
# Revoke all other tokens when rotating
revoke_other_tokens(token)
リソース
- API ドキュメント: https://docs.modelslab.com/agents-api/overview
- MCP サーバー: https://docs.modelslab.com/mcp-web-api/agent-control-plane
- ダッシュボード: https://modelslab.com/dashboard
- Discord: https://discord.gg/modelslab
関連スキル
modelslab-billing-subscriptions- 請求、ウォレット、サブスクリプションの管理modelslab-model-discovery- モデルの検索と使用状況の分析modelslab-training- モデルのトレーニングとファインチューニングmodelslab-servers- 専用 GPU サーバーのデプロイmodelslab-image-generation- 画像生成に API キーを使用