@1claw/mcp 0.61.0 → 0.63.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -2
- package/dist/client/admin.d.ts +96 -0
- package/dist/client/admin.d.ts.map +1 -0
- package/dist/client/admin.js +67 -0
- package/dist/client/admin.js.map +1 -0
- package/dist/client/approvals.d.ts +52 -0
- package/dist/client/approvals.d.ts.map +1 -0
- package/dist/client/approvals.js +40 -0
- package/dist/client/approvals.js.map +1 -0
- package/dist/client/automations.d.ts +15 -0
- package/dist/client/automations.d.ts.map +1 -0
- package/dist/client/automations.js +21 -0
- package/dist/client/automations.js.map +1 -0
- package/dist/client/cards.d.ts +20 -0
- package/dist/client/cards.d.ts.map +1 -0
- package/dist/client/cards.js +23 -0
- package/dist/client/cards.js.map +1 -0
- package/dist/client/chat.d.ts +26 -0
- package/dist/client/chat.d.ts.map +1 -0
- package/dist/client/chat.js +31 -0
- package/dist/client/chat.js.map +1 -0
- package/dist/client/core.d.ts +96 -0
- package/dist/client/core.d.ts.map +1 -0
- package/dist/client/core.js +281 -0
- package/dist/client/core.js.map +1 -0
- package/dist/client/delegation.d.ts +17 -0
- package/dist/client/delegation.d.ts.map +1 -0
- package/dist/client/delegation.js +18 -0
- package/dist/client/delegation.js.map +1 -0
- package/dist/client/directory.d.ts +18 -0
- package/dist/client/directory.d.ts.map +1 -0
- package/dist/client/directory.js +37 -0
- package/dist/client/directory.js.map +1 -0
- package/dist/client/error.d.ts +7 -0
- package/dist/client/error.d.ts.map +1 -0
- package/dist/client/error.js +12 -0
- package/dist/client/error.js.map +1 -0
- package/dist/client/execute.d.ts +37 -0
- package/dist/client/execute.d.ts.map +1 -0
- package/dist/client/execute.js +57 -0
- package/dist/client/execute.js.map +1 -0
- package/dist/client/index.d.ts +44 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +40 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/intents.d.ts +148 -0
- package/dist/client/intents.d.ts.map +1 -0
- package/dist/client/intents.js +110 -0
- package/dist/client/intents.js.map +1 -0
- package/dist/client/memory.d.ts +18 -0
- package/dist/client/memory.d.ts.map +1 -0
- package/dist/client/memory.js +24 -0
- package/dist/client/memory.js.map +1 -0
- package/dist/client/platform.d.ts +157 -0
- package/dist/client/platform.d.ts.map +1 -0
- package/dist/client/platform.js +211 -0
- package/dist/client/platform.js.map +1 -0
- package/dist/client/runtimes.d.ts +15 -0
- package/dist/client/runtimes.d.ts.map +1 -0
- package/dist/client/runtimes.js +19 -0
- package/dist/client/runtimes.js.map +1 -0
- package/dist/client/secrets.d.ts +41 -0
- package/dist/client/secrets.d.ts.map +1 -0
- package/dist/client/secrets.js +68 -0
- package/dist/client/secrets.js.map +1 -0
- package/dist/client/treasury.d.ts +19 -0
- package/dist/client/treasury.d.ts.map +1 -0
- package/dist/client/treasury.js +16 -0
- package/dist/client/treasury.js.map +1 -0
- package/dist/client/vault-facade.d.ts +14 -0
- package/dist/client/vault-facade.d.ts.map +1 -0
- package/dist/client/vault-facade.js +24 -0
- package/dist/client/vault-facade.js.map +1 -0
- package/dist/client.d.ts +5 -642
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -909
- package/dist/client.js.map +1 -1
- package/dist/core/server.d.ts +27 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +594 -0
- package/dist/core/server.js.map +1 -0
- package/dist/core/session.d.ts +79 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +205 -0
- package/dist/core/session.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -754
- package/dist/index.js.map +1 -1
- package/dist/security/index.d.ts +7 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +26 -11
- package/dist/security/index.js.map +1 -1
- package/dist/tools/cancel_automation_run.d.ts +1 -1
- package/dist/tools/cancel_automation_run.d.ts.map +1 -1
- package/dist/tools/cancel_automation_run.js +1 -1
- package/dist/tools/cancel_automation_run.js.map +1 -1
- package/dist/tools/create_agent_automation.d.ts +1 -1
- package/dist/tools/create_agent_automation.d.ts.map +1 -1
- package/dist/tools/create_agent_automation.js +1 -1
- package/dist/tools/create_agent_automation.js.map +1 -1
- package/dist/tools/create_binding.d.ts +3 -3
- package/dist/tools/create_binding.d.ts.map +1 -1
- package/dist/tools/create_binding.js +1 -1
- package/dist/tools/create_binding.js.map +1 -1
- package/dist/tools/create_channel.d.ts +3 -3
- package/dist/tools/create_channel.d.ts.map +1 -1
- package/dist/tools/create_channel.js +1 -1
- package/dist/tools/create_channel.js.map +1 -1
- package/dist/tools/create_sub_org.d.ts +1 -1
- package/dist/tools/create_sub_org.d.ts.map +1 -1
- package/dist/tools/create_sub_org.js +1 -1
- package/dist/tools/create_sub_org.js.map +1 -1
- package/dist/tools/delegate_task.d.ts +1 -1
- package/dist/tools/delegate_task.d.ts.map +1 -1
- package/dist/tools/delegate_task.js +1 -1
- package/dist/tools/delegate_task.js.map +1 -1
- package/dist/tools/delegation.d.ts +1 -1
- package/dist/tools/delegation.d.ts.map +1 -1
- package/dist/tools/delegation.js +1 -1
- package/dist/tools/delegation.js.map +1 -1
- package/dist/tools/delete_memory.d.ts +3 -3
- package/dist/tools/delete_memory.d.ts.map +1 -1
- package/dist/tools/delete_memory.js +1 -1
- package/dist/tools/delete_memory.js.map +1 -1
- package/dist/tools/delete_secret.d.ts +1 -1
- package/dist/tools/delete_secret.d.ts.map +1 -1
- package/dist/tools/delete_secret.js +1 -1
- package/dist/tools/delete_secret.js.map +1 -1
- package/dist/tools/describe_secret.d.ts +1 -1
- package/dist/tools/describe_secret.d.ts.map +1 -1
- package/dist/tools/describe_secret.js +1 -1
- package/dist/tools/describe_secret.js.map +1 -1
- package/dist/tools/directory_jobs.d.ts +2 -2
- package/dist/tools/env.d.ts +43 -0
- package/dist/tools/env.d.ts.map +1 -0
- package/dist/tools/env.js +62 -0
- package/dist/tools/env.js.map +1 -0
- package/dist/tools/execute_http.d.ts +1 -1
- package/dist/tools/execute_http.d.ts.map +1 -1
- package/dist/tools/execute_http.js +1 -1
- package/dist/tools/execute_http.js.map +1 -1
- package/dist/tools/execute_intent.d.ts +3 -3
- package/dist/tools/execute_intent.d.ts.map +1 -1
- package/dist/tools/execute_intent.js +1 -1
- package/dist/tools/execute_intent.js.map +1 -1
- package/dist/tools/get_approval.d.ts +1 -1
- package/dist/tools/get_approval.d.ts.map +1 -1
- package/dist/tools/get_approval.js +1 -1
- package/dist/tools/get_approval.js.map +1 -1
- package/dist/tools/get_approval_status.d.ts +1 -1
- package/dist/tools/get_approval_status.d.ts.map +1 -1
- package/dist/tools/get_approval_status.js +1 -1
- package/dist/tools/get_approval_status.js.map +1 -1
- package/dist/tools/get_memory.d.ts +3 -3
- package/dist/tools/get_memory.d.ts.map +1 -1
- package/dist/tools/get_memory.js +1 -1
- package/dist/tools/get_memory.js.map +1 -1
- package/dist/tools/get_peer_context.d.ts +1 -1
- package/dist/tools/get_peer_context.d.ts.map +1 -1
- package/dist/tools/get_peer_context.js +1 -1
- package/dist/tools/get_peer_context.js.map +1 -1
- package/dist/tools/get_secret.d.ts +1 -1
- package/dist/tools/get_secret.d.ts.map +1 -1
- package/dist/tools/get_secret.js +1 -1
- package/dist/tools/get_secret.js.map +1 -1
- package/dist/tools/get_signing_key_balance.d.ts +1 -1
- package/dist/tools/get_signing_key_balance.d.ts.map +1 -1
- package/dist/tools/get_signing_key_balance.js +1 -1
- package/dist/tools/get_signing_key_balance.js.map +1 -1
- package/dist/tools/get_transaction.d.ts +2 -2
- package/dist/tools/get_transaction.d.ts.map +1 -1
- package/dist/tools/get_transaction.js +1 -1
- package/dist/tools/get_transaction.js.map +1 -1
- package/dist/tools/import_signing_key.d.ts +1 -1
- package/dist/tools/import_signing_key.d.ts.map +1 -1
- package/dist/tools/import_signing_key.js +1 -1
- package/dist/tools/import_signing_key.js.map +1 -1
- package/dist/tools/import_smart_account.d.ts +1 -1
- package/dist/tools/import_smart_account.d.ts.map +1 -1
- package/dist/tools/import_smart_account.js +1 -1
- package/dist/tools/import_smart_account.js.map +1 -1
- package/dist/tools/lease_bankr_key.d.ts +1 -1
- package/dist/tools/lease_bankr_key.d.ts.map +1 -1
- package/dist/tools/lease_bankr_key.js +1 -1
- package/dist/tools/lease_bankr_key.js.map +1 -1
- package/dist/tools/list_approvals.d.ts +1 -1
- package/dist/tools/list_approvals.d.ts.map +1 -1
- package/dist/tools/list_approvals.js +1 -1
- package/dist/tools/list_approvals.js.map +1 -1
- package/dist/tools/list_automation_presets.d.ts +1 -1
- package/dist/tools/list_automation_presets.d.ts.map +1 -1
- package/dist/tools/list_automation_presets.js +1 -1
- package/dist/tools/list_automation_presets.js.map +1 -1
- package/dist/tools/list_automations.d.ts +1 -1
- package/dist/tools/list_automations.d.ts.map +1 -1
- package/dist/tools/list_automations.js +1 -1
- package/dist/tools/list_automations.js.map +1 -1
- package/dist/tools/list_bindings.d.ts +1 -1
- package/dist/tools/list_bindings.d.ts.map +1 -1
- package/dist/tools/list_bindings.js +1 -1
- package/dist/tools/list_bindings.js.map +1 -1
- package/dist/tools/list_cards.d.ts +3 -3
- package/dist/tools/list_cards.d.ts.map +1 -1
- package/dist/tools/list_cards.js +1 -1
- package/dist/tools/list_cards.js.map +1 -1
- package/dist/tools/list_channels.d.ts +1 -1
- package/dist/tools/list_channels.d.ts.map +1 -1
- package/dist/tools/list_channels.js +1 -1
- package/dist/tools/list_channels.js.map +1 -1
- package/dist/tools/list_chat_conversations.d.ts +1 -1
- package/dist/tools/list_chat_conversations.d.ts.map +1 -1
- package/dist/tools/list_chat_conversations.js +1 -1
- package/dist/tools/list_chat_conversations.js.map +1 -1
- package/dist/tools/list_connector_presets.d.ts +1 -1
- package/dist/tools/list_connector_presets.d.ts.map +1 -1
- package/dist/tools/list_connector_presets.js +1 -1
- package/dist/tools/list_connector_presets.js.map +1 -1
- package/dist/tools/list_executions.d.ts +1 -1
- package/dist/tools/list_executions.d.ts.map +1 -1
- package/dist/tools/list_executions.js +1 -1
- package/dist/tools/list_executions.js.map +1 -1
- package/dist/tools/list_installed_connectors.d.ts +1 -1
- package/dist/tools/list_installed_connectors.d.ts.map +1 -1
- package/dist/tools/list_installed_connectors.js +1 -1
- package/dist/tools/list_installed_connectors.js.map +1 -1
- package/dist/tools/list_memory.d.ts +1 -1
- package/dist/tools/list_memory.d.ts.map +1 -1
- package/dist/tools/list_memory.js +1 -1
- package/dist/tools/list_memory.js.map +1 -1
- package/dist/tools/list_notification_targets.d.ts +1 -1
- package/dist/tools/list_notification_targets.d.ts.map +1 -1
- package/dist/tools/list_notification_targets.js +1 -1
- package/dist/tools/list_notification_targets.js.map +1 -1
- package/dist/tools/list_oauth_connections.d.ts +1 -1
- package/dist/tools/list_oauth_connections.d.ts.map +1 -1
- package/dist/tools/list_oauth_connections.js +1 -1
- package/dist/tools/list_oauth_connections.js.map +1 -1
- package/dist/tools/list_oauth_providers.d.ts +1 -1
- package/dist/tools/list_oauth_providers.d.ts.map +1 -1
- package/dist/tools/list_oauth_providers.js +1 -1
- package/dist/tools/list_oauth_providers.js.map +1 -1
- package/dist/tools/list_runtimes.d.ts +1 -1
- package/dist/tools/list_runtimes.d.ts.map +1 -1
- package/dist/tools/list_runtimes.js +1 -1
- package/dist/tools/list_runtimes.js.map +1 -1
- package/dist/tools/list_signing_keys.d.ts +1 -1
- package/dist/tools/list_signing_keys.d.ts.map +1 -1
- package/dist/tools/list_signing_keys.js +1 -1
- package/dist/tools/list_signing_keys.js.map +1 -1
- package/dist/tools/list_transactions.d.ts +1 -1
- package/dist/tools/list_transactions.d.ts.map +1 -1
- package/dist/tools/list_transactions.js +1 -1
- package/dist/tools/list_transactions.js.map +1 -1
- package/dist/tools/manage_runtime.d.ts +1 -1
- package/dist/tools/manage_runtime.d.ts.map +1 -1
- package/dist/tools/manage_runtime.js +1 -1
- package/dist/tools/manage_runtime.js.map +1 -1
- package/dist/tools/oauth_revoke_consent.d.ts +1 -1
- package/dist/tools/oauth_revoke_consent.d.ts.map +1 -1
- package/dist/tools/oauth_revoke_consent.js +1 -1
- package/dist/tools/oauth_revoke_consent.js.map +1 -1
- package/dist/tools/oauth_revoke_token.d.ts +1 -1
- package/dist/tools/oauth_revoke_token.d.ts.map +1 -1
- package/dist/tools/oauth_revoke_token.js +1 -1
- package/dist/tools/oauth_revoke_token.js.map +1 -1
- package/dist/tools/order_card.d.ts +1 -1
- package/dist/tools/order_card.d.ts.map +1 -1
- package/dist/tools/order_card.js +1 -1
- package/dist/tools/order_card.js.map +1 -1
- package/dist/tools/platform_app_stats.d.ts +1 -1
- package/dist/tools/platform_app_stats.d.ts.map +1 -1
- package/dist/tools/platform_app_stats.js +1 -1
- package/dist/tools/platform_app_stats.js.map +1 -1
- package/dist/tools/platform_bootstrap_user.d.ts +1 -1
- package/dist/tools/platform_bootstrap_user.d.ts.map +1 -1
- package/dist/tools/platform_bootstrap_user.js +1 -1
- package/dist/tools/platform_bootstrap_user.js.map +1 -1
- package/dist/tools/platform_create_app.d.ts +1 -1
- package/dist/tools/platform_create_app.d.ts.map +1 -1
- package/dist/tools/platform_create_app.js +1 -1
- package/dist/tools/platform_create_app.js.map +1 -1
- package/dist/tools/platform_create_template.d.ts +1 -1
- package/dist/tools/platform_create_template.d.ts.map +1 -1
- package/dist/tools/platform_create_template.js +1 -1
- package/dist/tools/platform_create_template.js.map +1 -1
- package/dist/tools/platform_expansion.d.ts +81 -17
- package/dist/tools/platform_expansion.d.ts.map +1 -1
- package/dist/tools/platform_expansion.js +86 -1
- package/dist/tools/platform_expansion.js.map +1 -1
- package/dist/tools/platform_fleet.d.ts +6 -6
- package/dist/tools/platform_grant_access.d.ts +1 -1
- package/dist/tools/platform_grant_access.d.ts.map +1 -1
- package/dist/tools/platform_grant_access.js +1 -1
- package/dist/tools/platform_grant_access.js.map +1 -1
- package/dist/tools/platform_marketplace.d.ts +2 -2
- package/dist/tools/platform_reissue_claim.d.ts +1 -1
- package/dist/tools/platform_reissue_claim.d.ts.map +1 -1
- package/dist/tools/platform_reissue_claim.js +1 -1
- package/dist/tools/platform_reissue_claim.js.map +1 -1
- package/dist/tools/platform_rotate_key.d.ts +1 -1
- package/dist/tools/platform_rotate_key.d.ts.map +1 -1
- package/dist/tools/platform_rotate_key.js +1 -1
- package/dist/tools/platform_rotate_key.js.map +1 -1
- package/dist/tools/platform_rotate_webhook_secret.d.ts +1 -1
- package/dist/tools/platform_rotate_webhook_secret.d.ts.map +1 -1
- package/dist/tools/platform_rotate_webhook_secret.js +1 -1
- package/dist/tools/platform_rotate_webhook_secret.js.map +1 -1
- package/dist/tools/provision_signing_key.d.ts +1 -1
- package/dist/tools/provision_signing_key.d.ts.map +1 -1
- package/dist/tools/provision_signing_key.js +1 -1
- package/dist/tools/provision_signing_key.js.map +1 -1
- package/dist/tools/put_memory.d.ts +3 -3
- package/dist/tools/put_memory.d.ts.map +1 -1
- package/dist/tools/put_memory.js +1 -1
- package/dist/tools/put_memory.js.map +1 -1
- package/dist/tools/request_approval.d.ts +5 -5
- package/dist/tools/request_approval.d.ts.map +1 -1
- package/dist/tools/request_approval.js +1 -1
- package/dist/tools/request_approval.js.map +1 -1
- package/dist/tools/runtime_logs.d.ts +1 -1
- package/dist/tools/runtime_logs.d.ts.map +1 -1
- package/dist/tools/runtime_logs.js +1 -1
- package/dist/tools/runtime_logs.js.map +1 -1
- package/dist/tools/runtime_status.d.ts +1 -1
- package/dist/tools/runtime_status.d.ts.map +1 -1
- package/dist/tools/runtime_status.js +1 -1
- package/dist/tools/runtime_status.js.map +1 -1
- package/dist/tools/safe_accounts.js +1 -1
- package/dist/tools/safe_accounts.js.map +1 -1
- package/dist/tools/search_memory.d.ts +1 -1
- package/dist/tools/search_memory.d.ts.map +1 -1
- package/dist/tools/search_memory.js +1 -1
- package/dist/tools/search_memory.js.map +1 -1
- package/dist/tools/secret_versions.d.ts +73 -0
- package/dist/tools/secret_versions.d.ts.map +1 -0
- package/dist/tools/secret_versions.js +52 -0
- package/dist/tools/secret_versions.js.map +1 -0
- package/dist/tools/send_channel_message.d.ts +3 -3
- package/dist/tools/send_channel_message.d.ts.map +1 -1
- package/dist/tools/send_channel_message.js +1 -1
- package/dist/tools/send_channel_message.js.map +1 -1
- package/dist/tools/send_chat_message.d.ts +3 -3
- package/dist/tools/send_chat_message.d.ts.map +1 -1
- package/dist/tools/send_chat_message.js +1 -1
- package/dist/tools/send_chat_message.js.map +1 -1
- package/dist/tools/sign_digest.d.ts +1 -1
- package/dist/tools/sign_digest.d.ts.map +1 -1
- package/dist/tools/sign_digest.js +1 -1
- package/dist/tools/sign_digest.js.map +1 -1
- package/dist/tools/sign_message.d.ts +1 -1
- package/dist/tools/sign_message.d.ts.map +1 -1
- package/dist/tools/sign_message.js +1 -1
- package/dist/tools/sign_message.js.map +1 -1
- package/dist/tools/sign_transaction.d.ts +7 -7
- package/dist/tools/sign_transaction.d.ts.map +1 -1
- package/dist/tools/sign_transaction.js +1 -1
- package/dist/tools/sign_transaction.js.map +1 -1
- package/dist/tools/sign_typed_data.d.ts +1 -1
- package/dist/tools/sign_typed_data.d.ts.map +1 -1
- package/dist/tools/sign_typed_data.js +1 -1
- package/dist/tools/sign_typed_data.js.map +1 -1
- package/dist/tools/simulate_bundle.d.ts +13 -13
- package/dist/tools/simulate_bundle.d.ts.map +1 -1
- package/dist/tools/simulate_bundle.js +1 -1
- package/dist/tools/simulate_bundle.js.map +1 -1
- package/dist/tools/simulate_transaction.d.ts +5 -5
- package/dist/tools/simulate_transaction.d.ts.map +1 -1
- package/dist/tools/simulate_transaction.js +1 -1
- package/dist/tools/simulate_transaction.js.map +1 -1
- package/dist/tools/spend_from_passkey_safe.d.ts +40 -0
- package/dist/tools/spend_from_passkey_safe.d.ts.map +1 -0
- package/dist/tools/spend_from_passkey_safe.js +50 -0
- package/dist/tools/spend_from_passkey_safe.js.map +1 -0
- package/dist/tools/submit_transaction.d.ts +7 -7
- package/dist/tools/submit_transaction.d.ts.map +1 -1
- package/dist/tools/submit_transaction.js +1 -1
- package/dist/tools/submit_transaction.js.map +1 -1
- package/dist/tools/test_binding.d.ts +1 -1
- package/dist/tools/test_binding.d.ts.map +1 -1
- package/dist/tools/test_binding.js +1 -1
- package/dist/tools/test_binding.js.map +1 -1
- package/dist/tools/treasury_sign_proposal.d.ts +1 -1
- package/dist/tools/trigger_automation.d.ts +1 -1
- package/dist/tools/trigger_automation.d.ts.map +1 -1
- package/dist/tools/trigger_automation.js +1 -1
- package/dist/tools/trigger_automation.js.map +1 -1
- package/dist/toolsets/admin.d.ts +4 -0
- package/dist/toolsets/admin.d.ts.map +1 -0
- package/dist/toolsets/admin.js +40 -0
- package/dist/toolsets/admin.js.map +1 -0
- package/dist/toolsets/approvals.d.ts +4 -0
- package/dist/toolsets/approvals.d.ts.map +1 -0
- package/dist/toolsets/approvals.js +18 -0
- package/dist/toolsets/approvals.js.map +1 -0
- package/dist/toolsets/automations.d.ts +4 -0
- package/dist/toolsets/automations.d.ts.map +1 -0
- package/dist/toolsets/automations.js +18 -0
- package/dist/toolsets/automations.js.map +1 -0
- package/dist/toolsets/cards.d.ts +4 -0
- package/dist/toolsets/cards.d.ts.map +1 -0
- package/dist/toolsets/cards.js +15 -0
- package/dist/toolsets/cards.js.map +1 -0
- package/dist/toolsets/channels.d.ts +4 -0
- package/dist/toolsets/channels.d.ts.map +1 -0
- package/dist/toolsets/channels.js +14 -0
- package/dist/toolsets/channels.js.map +1 -0
- package/dist/toolsets/chat.d.ts +4 -0
- package/dist/toolsets/chat.d.ts.map +1 -0
- package/dist/toolsets/chat.js +12 -0
- package/dist/toolsets/chat.js.map +1 -0
- package/dist/toolsets/delegation.d.ts +4 -0
- package/dist/toolsets/delegation.d.ts.map +1 -0
- package/dist/toolsets/delegation.js +16 -0
- package/dist/toolsets/delegation.js.map +1 -0
- package/dist/toolsets/directory.d.ts +4 -0
- package/dist/toolsets/directory.d.ts.map +1 -0
- package/dist/toolsets/directory.js +14 -0
- package/dist/toolsets/directory.js.map +1 -0
- package/dist/toolsets/execute.d.ts +4 -0
- package/dist/toolsets/execute.d.ts.map +1 -0
- package/dist/toolsets/execute.js +22 -0
- package/dist/toolsets/execute.js.map +1 -0
- package/dist/toolsets/index.d.ts +9 -0
- package/dist/toolsets/index.d.ts.map +1 -0
- package/dist/toolsets/index.js +40 -0
- package/dist/toolsets/index.js.map +1 -0
- package/dist/toolsets/intents.d.ts +4 -0
- package/dist/toolsets/intents.d.ts.map +1 -0
- package/dist/toolsets/intents.js +45 -0
- package/dist/toolsets/intents.js.map +1 -0
- package/dist/toolsets/memory.d.ts +4 -0
- package/dist/toolsets/memory.d.ts.map +1 -0
- package/dist/toolsets/memory.js +20 -0
- package/dist/toolsets/memory.js.map +1 -0
- package/dist/toolsets/notification.d.ts +4 -0
- package/dist/toolsets/notification.d.ts.map +1 -0
- package/dist/toolsets/notification.js +10 -0
- package/dist/toolsets/notification.js.map +1 -0
- package/dist/toolsets/platform.d.ts +4 -0
- package/dist/toolsets/platform.d.ts.map +1 -0
- package/dist/toolsets/platform.js +71 -0
- package/dist/toolsets/platform.js.map +1 -0
- package/dist/toolsets/runtimes.d.ts +4 -0
- package/dist/toolsets/runtimes.d.ts.map +1 -0
- package/dist/toolsets/runtimes.js +16 -0
- package/dist/toolsets/runtimes.js.map +1 -0
- package/dist/toolsets/secret-tools.d.ts +9 -0
- package/dist/toolsets/secret-tools.d.ts.map +1 -0
- package/dist/toolsets/secret-tools.js +9 -0
- package/dist/toolsets/secret-tools.js.map +1 -0
- package/dist/toolsets/treasury.d.ts +4 -0
- package/dist/toolsets/treasury.d.ts.map +1 -0
- package/dist/toolsets/treasury.js +14 -0
- package/dist/toolsets/treasury.js.map +1 -0
- package/dist/toolsets/types.d.ts +25 -0
- package/dist/toolsets/types.d.ts.map +1 -0
- package/dist/toolsets/types.js +2 -0
- package/dist/toolsets/types.js.map +1 -0
- package/dist/toolsets/vault.d.ts +4 -0
- package/dist/toolsets/vault.d.ts.map +1 -0
- package/dist/toolsets/vault.js +41 -0
- package/dist/toolsets/vault.js.map +1 -0
- package/dist/toolsets.d.ts +95 -0
- package/dist/toolsets.d.ts.map +1 -0
- package/dist/toolsets.js +217 -0
- package/dist/toolsets.js.map +1 -0
- package/package.json +4 -2
package/dist/index.js
CHANGED
|
@@ -1,762 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
// 1claw MCP server — umbrella entrypoint: every toolset, the full client.
|
|
2
3
|
import { readFileSync } from "node:fs";
|
|
3
4
|
import { fileURLToPath } from "node:url";
|
|
4
5
|
import { dirname, join } from "node:path";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import { getSecretTool } from "./tools/get_secret.js";
|
|
10
|
-
import { putSecretTool } from "./tools/put_secret.js";
|
|
11
|
-
import { deleteSecretTool } from "./tools/delete_secret.js";
|
|
12
|
-
import { describeSecretTool } from "./tools/describe_secret.js";
|
|
13
|
-
import { createVaultTool } from "./tools/create_vault.js";
|
|
14
|
-
import { listVaultsTool } from "./tools/list_vaults.js";
|
|
15
|
-
import { grantAccessTool } from "./tools/grant_access.js";
|
|
16
|
-
import { shareSecretTool } from "./tools/share_secret.js";
|
|
17
|
-
import { simulateTransactionTool } from "./tools/simulate_transaction.js";
|
|
18
|
-
import { simulateBundleTool } from "./tools/simulate_bundle.js";
|
|
19
|
-
import { submitTransactionTool } from "./tools/submit_transaction.js";
|
|
20
|
-
import { signTransactionTool } from "./tools/sign_transaction.js";
|
|
21
|
-
import { listTransactionsTool } from "./tools/list_transactions.js";
|
|
22
|
-
import { getTransactionTool } from "./tools/get_transaction.js";
|
|
23
|
-
import { provisionSigningKeyTool } from "./tools/provision_signing_key.js";
|
|
24
|
-
import { listSigningKeysTool } from "./tools/list_signing_keys.js";
|
|
25
|
-
import { signMessageTool } from "./tools/sign_message.js";
|
|
26
|
-
import { signTypedDataTool } from "./tools/sign_typed_data.js";
|
|
27
|
-
import { signDigestTool } from "./tools/sign_digest.js";
|
|
28
|
-
import { leaseBankrKeyTool } from "./tools/lease_bankr_key.js";
|
|
29
|
-
import { orderCardTool, orderGiftCardTool } from "./tools/order_card.js";
|
|
30
|
-
import { listCardsTool, getCardStatusTool, searchGiftCardsTool, } from "./tools/list_cards.js";
|
|
31
|
-
import { getSigningKeyBalanceTool } from "./tools/get_signing_key_balance.js";
|
|
32
|
-
import { inspectContentTool } from "./tools/inspect_content.js";
|
|
33
|
-
import { platformListAppsTool } from "./tools/platform_list_apps.js";
|
|
34
|
-
import { platformCreateAppTool } from "./tools/platform_create_app.js";
|
|
35
|
-
import { platformBootstrapUserTool } from "./tools/platform_bootstrap_user.js";
|
|
36
|
-
import { platformReissueClaimTool } from "./tools/platform_reissue_claim.js";
|
|
37
|
-
import { platformRotateKeyTool } from "./tools/platform_rotate_key.js";
|
|
38
|
-
import { platformListTemplatesTool } from "./tools/platform_list_templates.js";
|
|
39
|
-
import { listDirectoryJobsTool, getDirectoryJobTool, submitDirectoryJobBidTool, } from "./tools/directory_jobs.js";
|
|
40
|
-
import { platformGetFleetTool, platformListFleetAgentsTool, platformPlanFleetRolloutTool, } from "./tools/platform_fleet.js";
|
|
41
|
-
import { platformCreateTemplateTool } from "./tools/platform_create_template.js";
|
|
42
|
-
import { platformListUsersTool } from "./tools/platform_list_users.js";
|
|
43
|
-
import { platformGrantAccessTool } from "./tools/platform_grant_access.js";
|
|
44
|
-
import { platformListGrantsTool } from "./tools/platform_list_grants.js";
|
|
45
|
-
import { listApprovalsTool } from "./tools/list_approvals.js";
|
|
46
|
-
import { getApprovalTool } from "./tools/get_approval.js";
|
|
47
|
-
import { getApprovalStatusTool } from "./tools/get_approval_status.js";
|
|
48
|
-
import { requestApprovalTool } from "./tools/request_approval.js";
|
|
49
|
-
import { treasuryProposeTool } from "./tools/treasury_propose.js";
|
|
50
|
-
import { treasurySignProposalTool } from "./tools/treasury_sign_proposal.js";
|
|
51
|
-
import { treasuryListProposalsTool } from "./tools/treasury_list_proposals.js";
|
|
52
|
-
import { executeHttpTool } from "./tools/execute_http.js";
|
|
53
|
-
import { executeIntentTool } from "./tools/execute_intent.js";
|
|
54
|
-
import { listBindingsTool } from "./tools/list_bindings.js";
|
|
55
|
-
import { createBindingTool } from "./tools/create_binding.js";
|
|
56
|
-
import { testBindingTool } from "./tools/test_binding.js";
|
|
57
|
-
import { listExecutionsTool } from "./tools/list_executions.js";
|
|
58
|
-
import { putMemoryTool } from "./tools/put_memory.js";
|
|
59
|
-
import { getMemoryTool } from "./tools/get_memory.js";
|
|
60
|
-
import { listMemoryTool } from "./tools/list_memory.js";
|
|
61
|
-
import { deleteMemoryTool } from "./tools/delete_memory.js";
|
|
62
|
-
import { listAutomationsTool } from "./tools/list_automations.js";
|
|
63
|
-
import { createAgentAutomationTool } from "./tools/create_agent_automation.js";
|
|
64
|
-
import { listAutomationPresetsTool } from "./tools/list_automation_presets.js";
|
|
65
|
-
import { triggerAutomationTool } from "./tools/trigger_automation.js";
|
|
66
|
-
import { cancelAutomationRunTool } from "./tools/cancel_automation_run.js";
|
|
67
|
-
import { listRuntimesTool } from "./tools/list_runtimes.js";
|
|
68
|
-
import { manageRuntimeTool } from "./tools/manage_runtime.js";
|
|
69
|
-
import { searchDirectoryTool } from "./tools/search_directory.js";
|
|
70
|
-
import { searchMemoryTool } from "./tools/search_memory.js";
|
|
71
|
-
import { runtimeStatusTool } from "./tools/runtime_status.js";
|
|
72
|
-
import { runtimeLogsTool } from "./tools/runtime_logs.js";
|
|
73
|
-
import { sendChatMessageTool } from "./tools/send_chat_message.js";
|
|
74
|
-
import { listChatConversationsTool } from "./tools/list_chat_conversations.js";
|
|
75
|
-
import { createChannelTool } from "./tools/create_channel.js";
|
|
76
|
-
import { listChannelsTool } from "./tools/list_channels.js";
|
|
77
|
-
import { sendChannelMessageTool } from "./tools/send_channel_message.js";
|
|
78
|
-
import { listConnectorPresetsTool } from "./tools/list_connector_presets.js";
|
|
79
|
-
import { listNotificationTargetsTool } from "./tools/list_notification_targets.js";
|
|
80
|
-
import { getPeerContextTool } from "./tools/get_peer_context.js";
|
|
81
|
-
import { listInstalledConnectorsTool } from "./tools/list_installed_connectors.js";
|
|
82
|
-
import { listOAuthProvidersTool } from "./tools/list_oauth_providers.js";
|
|
83
|
-
import { listOAuthConnectionsTool } from "./tools/list_oauth_connections.js";
|
|
84
|
-
import { oauthRevokeTokenTool } from "./tools/oauth_revoke_token.js";
|
|
85
|
-
import { oauthRevokeConsentTool } from "./tools/oauth_revoke_consent.js";
|
|
86
|
-
import { orgDirectoryTool } from "./tools/org_directory.js";
|
|
87
|
-
import { delegateTaskTool } from "./tools/delegate_task.js";
|
|
88
|
-
import { listDelegationsTool, createDelegationTool, getEffectiveDelegationsTool } from "./tools/delegation.js";
|
|
89
|
-
import { platformMarketplaceTool } from "./tools/platform_marketplace.js";
|
|
90
|
-
import { platformAppStatsTool } from "./tools/platform_app_stats.js";
|
|
91
|
-
import { platformRotateWebhookSecretTool } from "./tools/platform_rotate_webhook_secret.js";
|
|
92
|
-
import { platformSiweChallengeTool, platformGetConnectionTool, platformConnectionUsageTool, platformListEntitlementsTool, platformPreviewTemplateTool, platformTransferOwnershipTool, platformDeleteAppTool, platformGetSpendPolicyTool, platformGetConnectionSpendPolicyTool, platformListConnectionApprovalsTool, platformGetConnectionApprovalTool, platformListConnectionPendingApprovalsTool, platformGetTemplateTool, platformSetConnectionSpendPolicyTool, platformCreateConnectionRuntimeTool, platformGetConnectionRuntimeTool, platformConnectionPasskeyEnrollBeginTool, platformConnectionPasskeyEnrollCompleteTool, platformConnectionAgentChatTool, platformDecideConnectionPendingApprovalTool, platformDecideConnectionApprovalTool, platformListConnectionSigningKeysTool, platformGetConnectionSigningKeyTool, platformDeactivateConnectionSigningKeyTool, platformPatchConnectionAgentTool, platformCreateConnectionPendingApprovalTool, platformGetConnectionPortfolioTool, platformListConnectionAutomationsTool, } from "./tools/platform_expansion.js";
|
|
93
|
-
import { importSigningKeyTool } from "./tools/import_signing_key.js";
|
|
94
|
-
import { listCedarPoliciesTool } from "./tools/list_cedar_policies.js";
|
|
95
|
-
import { testCedarPolicyTool } from "./tools/test_cedar_policy.js";
|
|
96
|
-
import { listOpaPoliciesTool } from "./tools/list_opa_policies.js";
|
|
97
|
-
import { testOpaPolicyTool } from "./tools/test_opa_policy.js";
|
|
98
|
-
import { listSubOrgsTool } from "./tools/list_sub_orgs.js";
|
|
99
|
-
import { createSubOrgTool } from "./tools/create_sub_org.js";
|
|
100
|
-
import { getPortfolioTool } from "./tools/get_portfolio.js";
|
|
101
|
-
import { importSmartAccountTool } from "./tools/import_smart_account.js";
|
|
102
|
-
import { getPolicyBackendSettingsTool, updatePolicyBackendSettingsTool, getShadowReportTool } from "./tools/policy_backend.js";
|
|
103
|
-
import { getGuardrailShadowReportTool, listGuardrailRevisionsTool, replayAgentGuardrailsTool, } from "./tools/guardrail_governance.js";
|
|
104
|
-
import { uploadContractAbiTool, listContractAbisTool } from "./tools/contract_abis.js";
|
|
105
|
-
import { listPendingApprovalsTool, approvePendingApprovalTool, executePendingApprovalTool } from "./tools/pending_approvals.js";
|
|
106
|
-
import { listAgentAccountsTool, migrateAgentToSafeTool, deprecateAgentEoaTool, getSafeModuleRegistryTool, syncOrgSafeAllowancesTool, } from "./tools/safe_accounts.js";
|
|
107
|
-
import { inspectInput, inspectOutput, isSecurityEnabled, registerSecret, isSecretRedactionEnabled } from "./security/index.js";
|
|
108
|
-
import { isLocalDaemonMode, createLocalClient } from "./local-client.js";
|
|
109
|
-
import { proxyRequestTool } from "./tools/proxy_request.js";
|
|
110
|
-
const baseUrl = process.env.ONECLAW_BASE_URL ?? "https://api.1claw.co";
|
|
111
|
-
const transport = process.env.MCP_TRANSPORT ?? "stdio";
|
|
112
|
-
const port = parseInt(process.env.PORT ?? "8080", 10);
|
|
113
|
-
// When true, only security-inspection tools are registered (no vault credentials needed).
|
|
114
|
-
const localOnly = process.env.ONECLAW_LOCAL_ONLY === "true" ||
|
|
115
|
-
process.env.ONECLAW_LOCAL_ONLY === "1";
|
|
116
|
-
/** Build client from current process.env (stdio). Re-read each invocation so vault ID is not frozen at startup (C-MPC-VAULT). */
|
|
117
|
-
function createStdioClientFromEnv() {
|
|
118
|
-
const vaultId = process.env.ONECLAW_VAULT_ID;
|
|
119
|
-
const agentId = process.env.ONECLAW_AGENT_ID;
|
|
120
|
-
const agentApiKey = process.env.ONECLAW_AGENT_API_KEY;
|
|
121
|
-
const token = process.env.ONECLAW_AGENT_TOKEN;
|
|
122
|
-
if (agentApiKey) {
|
|
123
|
-
return new OneClawClient({
|
|
124
|
-
baseUrl,
|
|
125
|
-
agentId: agentId || undefined,
|
|
126
|
-
apiKey: agentApiKey,
|
|
127
|
-
vaultId: vaultId || undefined,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
if (token) {
|
|
131
|
-
if (!vaultId) {
|
|
132
|
-
throw new UserError("ONECLAW_VAULT_ID is required when using ONECLAW_AGENT_TOKEN (static JWT).");
|
|
133
|
-
}
|
|
134
|
-
return new OneClawClient({ baseUrl, token, vaultId, runtimeId: process.env.ONECLAW_RUNTIME_ID || undefined });
|
|
135
|
-
}
|
|
136
|
-
throw new UserError("Authentication required. Set ONECLAW_AGENT_API_KEY or ONECLAW_AGENT_TOKEN + ONECLAW_VAULT_ID.");
|
|
137
|
-
}
|
|
138
|
-
if (transport === "stdio" && !localOnly && !isLocalDaemonMode()) {
|
|
139
|
-
const agentApiKey = process.env.ONECLAW_AGENT_API_KEY;
|
|
140
|
-
const token = process.env.ONECLAW_AGENT_TOKEN;
|
|
141
|
-
if (!agentApiKey && !token) {
|
|
142
|
-
console.error("Authentication required. Set one of:\n" +
|
|
143
|
-
" ONECLAW_AGENT_API_KEY (simplest, auto-discovers agent ID and vault)\n" +
|
|
144
|
-
" ONECLAW_AGENT_ID + ONECLAW_AGENT_API_KEY (explicit agent ID)\n" +
|
|
145
|
-
" ONECLAW_AGENT_TOKEN + ONECLAW_VAULT_ID (static JWT, expires)\n" +
|
|
146
|
-
" ONECLAW_LOCAL_ONLY=true (security tools only, no vault needed)\n" +
|
|
147
|
-
" ONECLAW_LOCAL_VAULT=true (local daemon mode, no cloud auth needed)");
|
|
148
|
-
process.exit(1);
|
|
149
|
-
}
|
|
150
|
-
if (!agentApiKey && token && !process.env.ONECLAW_VAULT_ID) {
|
|
151
|
-
console.error("ONECLAW_VAULT_ID is required when using ONECLAW_AGENT_TOKEN (static JWT).");
|
|
152
|
-
process.exit(1);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
function resolveClient(session) {
|
|
156
|
-
if (session) {
|
|
157
|
-
if ("agentApiKey" in session) {
|
|
158
|
-
return new OneClawClient({
|
|
159
|
-
baseUrl,
|
|
160
|
-
agentId: session.agentId,
|
|
161
|
-
apiKey: session.agentApiKey,
|
|
162
|
-
vaultId: session.vaultId,
|
|
163
|
-
runtimeId: session.runtimeId,
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
return new OneClawClient({
|
|
167
|
-
baseUrl,
|
|
168
|
-
token: session.token,
|
|
169
|
-
vaultId: session.vaultId,
|
|
170
|
-
runtimeId: session.runtimeId,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
if (transport === "stdio" && !localOnly) {
|
|
174
|
-
return createStdioClientFromEnv();
|
|
175
|
-
}
|
|
176
|
-
throw new UserError("Not authenticated. Provide Authorization header (Bearer <ocv_api_key> or Bearer <jwt>).");
|
|
177
|
-
}
|
|
178
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
179
|
-
const __dirname = dirname(__filename);
|
|
6
|
+
import { OneClawClient } from "./client.js";
|
|
7
|
+
import { TOOLSET_MODULES } from "./toolsets/index.js";
|
|
8
|
+
import { startServer } from "./core/server.js";
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
180
10
|
const pkg = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf8"));
|
|
181
|
-
|
|
11
|
+
/** Resolves once the server is listening. Also the handle the in-process test harness uses. */
|
|
12
|
+
export const running = startServer({
|
|
182
13
|
name: "1claw",
|
|
183
14
|
version: pkg.version,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const auth = (request.headers["authorization"] ?? "");
|
|
189
|
-
const credential = auth.replace(/^Bearer\s+/i, "").trim();
|
|
190
|
-
const vaultIdHeader = (request.headers["x-vault-id"] ?? "");
|
|
191
|
-
const agentIdHeader = (request.headers["x-agent-id"] ?? "");
|
|
192
|
-
const runtimeIdHeader = (request.headers["x-1claw-runtime-id"] ??
|
|
193
|
-
request.headers["X-1Claw-Runtime-Id"] ??
|
|
194
|
-
"");
|
|
195
|
-
const runtimeIdFromJwtPayload = (token) => {
|
|
196
|
-
try {
|
|
197
|
-
const parts = token.split(".");
|
|
198
|
-
if (parts.length !== 3)
|
|
199
|
-
return undefined;
|
|
200
|
-
const payload = JSON.parse(Buffer.from(parts[1].replace(/-/g, "+").replace(/_/g, "/"), "base64").toString());
|
|
201
|
-
return typeof payload.runtime_id === "string" &&
|
|
202
|
-
payload.runtime_id.length > 0
|
|
203
|
-
? payload.runtime_id
|
|
204
|
-
: undefined;
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
return undefined;
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
const vaultAuthHeaders = (token, runtimeId) => {
|
|
211
|
-
const headers = {
|
|
212
|
-
Authorization: `Bearer ${token}`,
|
|
213
|
-
};
|
|
214
|
-
if (runtimeId) {
|
|
215
|
-
headers["X-1Claw-Runtime-Id"] = runtimeId;
|
|
216
|
-
}
|
|
217
|
-
return headers;
|
|
218
|
-
};
|
|
219
|
-
if (!credential)
|
|
220
|
-
throw new Error("Missing Authorization header (Bearer <ocv_api_key> or Bearer <jwt>)");
|
|
221
|
-
// SEC-005: Only accept agent API keys (ocv_). Reject human and platform keys.
|
|
222
|
-
if (credential.startsWith("1ck_")) {
|
|
223
|
-
throw new Error("MCP server only accepts agent API keys (ocv_). Human API keys (1ck_) should use the SDK or dashboard.");
|
|
224
|
-
}
|
|
225
|
-
if (credential.startsWith("plt_")) {
|
|
226
|
-
throw new Error("MCP server only accepts agent API keys (ocv_). Platform API keys (plt_) should use the SDK.");
|
|
227
|
-
}
|
|
228
|
-
// ── API key path: exchange for JWT, auto-discover vault ──
|
|
229
|
-
if (credential.startsWith("ocv_")) {
|
|
230
|
-
const body = { api_key: credential };
|
|
231
|
-
if (agentIdHeader)
|
|
232
|
-
body.agent_id = agentIdHeader;
|
|
233
|
-
const tokenRes = await fetch(`${baseUrl}/v1/auth/agent-token`, {
|
|
234
|
-
method: "POST",
|
|
235
|
-
headers: { "Content-Type": "application/json" },
|
|
236
|
-
body: JSON.stringify(body),
|
|
237
|
-
});
|
|
238
|
-
if (!tokenRes.ok) {
|
|
239
|
-
const status = tokenRes.status;
|
|
240
|
-
let detail = `HTTP ${status}`;
|
|
241
|
-
try {
|
|
242
|
-
const errBody = await tokenRes.json();
|
|
243
|
-
if (errBody.detail)
|
|
244
|
-
detail = errBody.detail;
|
|
245
|
-
}
|
|
246
|
-
catch { /* use default */ }
|
|
247
|
-
throw new Error(`Agent API key auth failed: ${detail}`);
|
|
248
|
-
}
|
|
249
|
-
const data = await tokenRes.json();
|
|
250
|
-
const resolvedVaultId = vaultIdHeader ||
|
|
251
|
-
(data.vault_ids && data.vault_ids.length === 1
|
|
252
|
-
? data.vault_ids[0]
|
|
253
|
-
: "");
|
|
254
|
-
if (resolvedVaultId && data.access_token) {
|
|
255
|
-
const checkRes = await fetch(`${baseUrl}/v1/vaults/${resolvedVaultId}`, {
|
|
256
|
-
headers: vaultAuthHeaders(data.access_token, runtimeIdHeader || undefined),
|
|
257
|
-
});
|
|
258
|
-
if (!checkRes.ok && checkRes.status === 404) {
|
|
259
|
-
throw new Error(`Vault ${resolvedVaultId} not found`);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return {
|
|
263
|
-
agentApiKey: credential,
|
|
264
|
-
agentId: data.agent_id || agentIdHeader || undefined,
|
|
265
|
-
vaultId: resolvedVaultId || undefined,
|
|
266
|
-
runtimeId: runtimeIdHeader || undefined,
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
// ── JWT path (legacy): static token, requires X-Vault-ID ──
|
|
270
|
-
if (!vaultIdHeader)
|
|
271
|
-
throw new Error("Missing X-Vault-ID header (required when using a JWT; use an ocv_ API key instead for auto-discovery)");
|
|
272
|
-
// SEC-005: Verify the JWT belongs to an agent (sub starts with "agent:")
|
|
273
|
-
try {
|
|
274
|
-
const parts = credential.split(".");
|
|
275
|
-
if (parts.length === 3) {
|
|
276
|
-
const payload = JSON.parse(Buffer.from(parts[1].replace(/-/g, "+").replace(/_/g, "/"), "base64").toString());
|
|
277
|
-
if (payload.sub && typeof payload.sub === "string" && !payload.sub.startsWith("agent:")) {
|
|
278
|
-
throw new Error("MCP server only accepts agent JWTs. This token belongs to a non-agent principal.");
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
catch (e) {
|
|
283
|
-
if (e instanceof Error && e.message.includes("MCP server only accepts"))
|
|
284
|
-
throw e;
|
|
285
|
-
}
|
|
286
|
-
// H-9: Validate token against the vault API (not just pass-through).
|
|
287
|
-
const runtimeId = runtimeIdHeader || runtimeIdFromJwtPayload(credential) || undefined;
|
|
288
|
-
const validationRes = await fetch(`${baseUrl}/v1/vaults/${vaultIdHeader}`, {
|
|
289
|
-
headers: vaultAuthHeaders(credential, runtimeId),
|
|
290
|
-
});
|
|
291
|
-
if (!validationRes.ok) {
|
|
292
|
-
const status = validationRes.status;
|
|
293
|
-
if (status === 401) {
|
|
294
|
-
throw new Error("Invalid or expired Bearer token");
|
|
295
|
-
}
|
|
296
|
-
if (status === 403) {
|
|
297
|
-
throw new Error("X-Vault-ID is not accessible with this token (vault binding mismatch)");
|
|
298
|
-
}
|
|
299
|
-
if (status === 404) {
|
|
300
|
-
throw new Error(`Vault ${vaultIdHeader} not found`);
|
|
301
|
-
}
|
|
302
|
-
throw new Error(`Token validation failed (HTTP ${status})`);
|
|
303
|
-
}
|
|
304
|
-
return { token: credential, vaultId: vaultIdHeader, runtimeId };
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
const server = new FastMCP(serverOpts);
|
|
308
|
-
function registerTool(factory) {
|
|
309
|
-
const proto = factory(new OneClawClient({ baseUrl, token: "", vaultId: "" }));
|
|
310
|
-
server.addTool({
|
|
311
|
-
name: proto.name,
|
|
312
|
-
description: proto.description,
|
|
313
|
-
parameters: proto.parameters,
|
|
314
|
-
execute: async (args, context) => {
|
|
315
|
-
// SEC-004: Resolve session scope for tenant-isolated secret matching
|
|
316
|
-
const sessionScope = context.session
|
|
317
|
-
? ("agentId" in context.session && context.session.agentId)
|
|
318
|
-
? context.session.agentId
|
|
319
|
-
: ("vaultId" in context.session ? context.session.vaultId : undefined)
|
|
320
|
-
: undefined;
|
|
321
|
-
// Security inspection of input
|
|
322
|
-
if (isSecurityEnabled()) {
|
|
323
|
-
const inputCheck = inspectInput(proto.name, args, sessionScope);
|
|
324
|
-
if (!inputCheck.passed) {
|
|
325
|
-
const threat = inputCheck.threats[0];
|
|
326
|
-
context.log.info(`[SECURITY] Blocked ${proto.name}: ${threat?.type} (${threat?.pattern})`);
|
|
327
|
-
throw new UserError(`Security check failed: ${threat?.type} detected`);
|
|
328
|
-
}
|
|
329
|
-
if (inputCheck.threats.length > 0) {
|
|
330
|
-
context.log.info(`[SECURITY] Warnings for ${proto.name}: ${inputCheck.threats.map(t => t.pattern).join(", ")}`);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
const client = resolveClient(context.session);
|
|
334
|
-
const tool = factory(client);
|
|
335
|
-
const result = await tool.execute(args, context);
|
|
336
|
-
// Track secret values for redaction and exfiltration protection
|
|
337
|
-
if (isSecretRedactionEnabled()) {
|
|
338
|
-
if (proto.name === "get_secret") {
|
|
339
|
-
try {
|
|
340
|
-
const parsed = JSON.parse(result);
|
|
341
|
-
if (parsed.value && parsed.path)
|
|
342
|
-
registerSecret(parsed.path, parsed.value, sessionScope);
|
|
343
|
-
}
|
|
344
|
-
catch { /* not JSON — skip */ }
|
|
345
|
-
}
|
|
346
|
-
if (proto.name === "get_env_bundle") {
|
|
347
|
-
try {
|
|
348
|
-
const env = JSON.parse(result);
|
|
349
|
-
for (const [key, val] of Object.entries(env)) {
|
|
350
|
-
if (typeof val === "string")
|
|
351
|
-
registerSecret(`env:${key}`, val, sessionScope);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
catch { /* not JSON — skip */ }
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
// Security inspection of output (redacts secrets, detects PII, logs threats)
|
|
358
|
-
if (isSecurityEnabled()) {
|
|
359
|
-
const outputCheck = inspectOutput(proto.name, result, sessionScope);
|
|
360
|
-
if (outputCheck.threats.length > 0) {
|
|
361
|
-
context.log.info(`[SECURITY] Output warnings for ${proto.name}: ${outputCheck.threats.map(t => t.pattern).join(", ")}`);
|
|
362
|
-
}
|
|
363
|
-
if (outputCheck.redacted) {
|
|
364
|
-
context.log.info(`[SECURITY] Redacted secret values from ${proto.name} output`);
|
|
365
|
-
return outputCheck.redacted;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
return result;
|
|
369
|
-
},
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
// ── Security-only tools (always available, including local-only mode) ─
|
|
373
|
-
{
|
|
374
|
-
const tool = inspectContentTool();
|
|
375
|
-
server.addTool({
|
|
376
|
-
name: tool.name,
|
|
377
|
-
description: tool.description,
|
|
378
|
-
parameters: tool.parameters,
|
|
379
|
-
execute: async (args, context) => {
|
|
380
|
-
return tool.execute(args, context);
|
|
381
|
-
},
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
// ── Local daemon tools (available when ONECLAW_LOCAL_VAULT=true) ──
|
|
385
|
-
if (isLocalDaemonMode()) {
|
|
386
|
-
const localClient = createLocalClient();
|
|
387
|
-
const proxyTool = proxyRequestTool(localClient);
|
|
388
|
-
server.addTool({
|
|
389
|
-
name: proxyTool.name,
|
|
390
|
-
description: proxyTool.description,
|
|
391
|
-
parameters: proxyTool.parameters,
|
|
392
|
-
execute: async (args, context) => {
|
|
393
|
-
return proxyTool.execute(args, context);
|
|
394
|
-
},
|
|
395
|
-
});
|
|
396
|
-
// In local mode, list_secrets uses the daemon (shows names only, no values)
|
|
397
|
-
server.addTool({
|
|
398
|
-
name: "list_secrets",
|
|
399
|
-
description: "List secret names in the local vault. Values are never exposed. " +
|
|
400
|
-
"Use proxy_request to make API calls with secrets injected.",
|
|
401
|
-
parameters: z.object({}),
|
|
402
|
-
execute: async (_args, { log }) => {
|
|
403
|
-
const result = await localClient.listSecrets();
|
|
404
|
-
log.info(`Listed ${result.secrets.length} local secrets`);
|
|
405
|
-
return JSON.stringify(result.secrets);
|
|
406
|
-
},
|
|
407
|
-
});
|
|
408
|
-
}
|
|
409
|
-
// ── Vault tools (require credentials — skipped in local-only mode) ─
|
|
410
|
-
if (!localOnly && !isLocalDaemonMode()) {
|
|
411
|
-
registerTool(listSecretsTool);
|
|
412
|
-
registerTool(getSecretTool);
|
|
413
|
-
registerTool(putSecretTool);
|
|
414
|
-
registerTool(deleteSecretTool);
|
|
415
|
-
registerTool(describeSecretTool);
|
|
416
|
-
registerTool(createVaultTool);
|
|
417
|
-
registerTool(listVaultsTool);
|
|
418
|
-
registerTool(grantAccessTool);
|
|
419
|
-
registerTool(shareSecretTool);
|
|
420
|
-
registerTool(simulateTransactionTool);
|
|
421
|
-
registerTool(simulateBundleTool);
|
|
422
|
-
registerTool(submitTransactionTool);
|
|
423
|
-
registerTool(signTransactionTool);
|
|
424
|
-
registerTool(listTransactionsTool);
|
|
425
|
-
registerTool(getTransactionTool);
|
|
426
|
-
registerTool(provisionSigningKeyTool);
|
|
427
|
-
registerTool(listSigningKeysTool);
|
|
428
|
-
registerTool(signMessageTool);
|
|
429
|
-
registerTool(signTypedDataTool);
|
|
430
|
-
registerTool(signDigestTool);
|
|
431
|
-
registerTool(leaseBankrKeyTool);
|
|
432
|
-
registerTool(getSigningKeyBalanceTool);
|
|
433
|
-
registerTool(platformListAppsTool);
|
|
434
|
-
registerTool(platformCreateAppTool);
|
|
435
|
-
registerTool(platformBootstrapUserTool);
|
|
436
|
-
registerTool(platformReissueClaimTool);
|
|
437
|
-
registerTool(platformRotateKeyTool);
|
|
438
|
-
registerTool(platformListTemplatesTool);
|
|
439
|
-
registerTool(platformGetFleetTool);
|
|
440
|
-
registerTool(platformListFleetAgentsTool);
|
|
441
|
-
registerTool(platformPlanFleetRolloutTool);
|
|
442
|
-
registerTool(listDirectoryJobsTool);
|
|
443
|
-
registerTool(getDirectoryJobTool);
|
|
444
|
-
registerTool(submitDirectoryJobBidTool);
|
|
445
|
-
registerTool(platformCreateTemplateTool);
|
|
446
|
-
registerTool(platformListUsersTool);
|
|
447
|
-
registerTool(platformGrantAccessTool);
|
|
448
|
-
registerTool(platformListGrantsTool);
|
|
449
|
-
registerTool(platformSiweChallengeTool);
|
|
450
|
-
registerTool(platformGetConnectionTool);
|
|
451
|
-
registerTool(platformConnectionUsageTool);
|
|
452
|
-
registerTool(platformListEntitlementsTool);
|
|
453
|
-
registerTool(platformPreviewTemplateTool);
|
|
454
|
-
registerTool(platformTransferOwnershipTool);
|
|
455
|
-
registerTool(platformDeleteAppTool);
|
|
456
|
-
registerTool(platformGetSpendPolicyTool);
|
|
457
|
-
registerTool(platformGetConnectionSpendPolicyTool);
|
|
458
|
-
registerTool(platformListConnectionApprovalsTool);
|
|
459
|
-
registerTool(platformGetConnectionApprovalTool);
|
|
460
|
-
registerTool(platformListConnectionPendingApprovalsTool);
|
|
461
|
-
registerTool(platformGetTemplateTool);
|
|
462
|
-
registerTool(platformSetConnectionSpendPolicyTool);
|
|
463
|
-
registerTool(platformCreateConnectionRuntimeTool);
|
|
464
|
-
registerTool(platformGetConnectionRuntimeTool);
|
|
465
|
-
registerTool(platformConnectionPasskeyEnrollBeginTool);
|
|
466
|
-
registerTool(platformConnectionPasskeyEnrollCompleteTool);
|
|
467
|
-
registerTool(platformConnectionAgentChatTool);
|
|
468
|
-
registerTool(platformDecideConnectionPendingApprovalTool);
|
|
469
|
-
registerTool(platformDecideConnectionApprovalTool);
|
|
470
|
-
registerTool(platformListConnectionSigningKeysTool);
|
|
471
|
-
registerTool(platformGetConnectionSigningKeyTool);
|
|
472
|
-
registerTool(platformDeactivateConnectionSigningKeyTool);
|
|
473
|
-
registerTool(platformPatchConnectionAgentTool);
|
|
474
|
-
registerTool(platformCreateConnectionPendingApprovalTool);
|
|
475
|
-
registerTool(platformGetConnectionPortfolioTool);
|
|
476
|
-
registerTool(platformListConnectionAutomationsTool);
|
|
477
|
-
registerTool(listApprovalsTool);
|
|
478
|
-
registerTool(getApprovalTool);
|
|
479
|
-
registerTool(getApprovalStatusTool);
|
|
480
|
-
registerTool(requestApprovalTool);
|
|
481
|
-
registerTool(treasuryProposeTool);
|
|
482
|
-
registerTool(treasurySignProposalTool);
|
|
483
|
-
registerTool(treasuryListProposalsTool);
|
|
484
|
-
registerTool(executeHttpTool);
|
|
485
|
-
registerTool(executeIntentTool);
|
|
486
|
-
registerTool(listBindingsTool);
|
|
487
|
-
registerTool(createBindingTool);
|
|
488
|
-
registerTool(testBindingTool);
|
|
489
|
-
registerTool(listExecutionsTool);
|
|
490
|
-
registerTool(orderCardTool);
|
|
491
|
-
registerTool(orderGiftCardTool);
|
|
492
|
-
registerTool(searchGiftCardsTool);
|
|
493
|
-
registerTool(listCardsTool);
|
|
494
|
-
registerTool(getCardStatusTool);
|
|
495
|
-
registerTool(putMemoryTool);
|
|
496
|
-
registerTool(getMemoryTool);
|
|
497
|
-
registerTool(listMemoryTool);
|
|
498
|
-
registerTool(deleteMemoryTool);
|
|
499
|
-
registerTool(listAutomationsTool);
|
|
500
|
-
registerTool(createAgentAutomationTool);
|
|
501
|
-
registerTool(listAutomationPresetsTool);
|
|
502
|
-
registerTool(triggerAutomationTool);
|
|
503
|
-
registerTool(cancelAutomationRunTool);
|
|
504
|
-
registerTool(listRuntimesTool);
|
|
505
|
-
registerTool(manageRuntimeTool);
|
|
506
|
-
registerTool(searchDirectoryTool);
|
|
507
|
-
registerTool(searchMemoryTool);
|
|
508
|
-
registerTool(runtimeStatusTool);
|
|
509
|
-
registerTool(runtimeLogsTool);
|
|
510
|
-
registerTool(sendChatMessageTool);
|
|
511
|
-
registerTool(listChatConversationsTool);
|
|
512
|
-
registerTool(createChannelTool);
|
|
513
|
-
registerTool(listChannelsTool);
|
|
514
|
-
registerTool(sendChannelMessageTool);
|
|
515
|
-
registerTool(listOAuthProvidersTool);
|
|
516
|
-
registerTool(listConnectorPresetsTool);
|
|
517
|
-
registerTool(listNotificationTargetsTool);
|
|
518
|
-
registerTool(getPeerContextTool);
|
|
519
|
-
registerTool(listInstalledConnectorsTool);
|
|
520
|
-
registerTool(listOAuthConnectionsTool);
|
|
521
|
-
registerTool(oauthRevokeTokenTool);
|
|
522
|
-
registerTool(oauthRevokeConsentTool);
|
|
523
|
-
registerTool(orgDirectoryTool);
|
|
524
|
-
registerTool(delegateTaskTool);
|
|
525
|
-
registerTool(listDelegationsTool);
|
|
526
|
-
registerTool(createDelegationTool);
|
|
527
|
-
registerTool(getEffectiveDelegationsTool);
|
|
528
|
-
registerTool(platformMarketplaceTool);
|
|
529
|
-
registerTool(platformAppStatsTool);
|
|
530
|
-
registerTool(platformRotateWebhookSecretTool);
|
|
531
|
-
registerTool(importSigningKeyTool);
|
|
532
|
-
registerTool(listCedarPoliciesTool);
|
|
533
|
-
registerTool(testCedarPolicyTool);
|
|
534
|
-
registerTool(listOpaPoliciesTool);
|
|
535
|
-
registerTool(testOpaPolicyTool);
|
|
536
|
-
registerTool(listSubOrgsTool);
|
|
537
|
-
registerTool(createSubOrgTool);
|
|
538
|
-
registerTool(getPortfolioTool);
|
|
539
|
-
registerTool(importSmartAccountTool);
|
|
540
|
-
registerTool(getPolicyBackendSettingsTool);
|
|
541
|
-
registerTool(updatePolicyBackendSettingsTool);
|
|
542
|
-
registerTool(getShadowReportTool);
|
|
543
|
-
registerTool(getGuardrailShadowReportTool);
|
|
544
|
-
registerTool(listGuardrailRevisionsTool);
|
|
545
|
-
registerTool(replayAgentGuardrailsTool);
|
|
546
|
-
registerTool(uploadContractAbiTool);
|
|
547
|
-
registerTool(listContractAbisTool);
|
|
548
|
-
registerTool(listPendingApprovalsTool);
|
|
549
|
-
registerTool(approvePendingApprovalTool);
|
|
550
|
-
registerTool(executePendingApprovalTool);
|
|
551
|
-
registerTool(listAgentAccountsTool);
|
|
552
|
-
registerTool(migrateAgentToSafeTool);
|
|
553
|
-
registerTool(deprecateAgentEoaTool);
|
|
554
|
-
registerTool(getSafeModuleRegistryTool);
|
|
555
|
-
registerTool(syncOrgSafeAllowancesTool);
|
|
556
|
-
}
|
|
557
|
-
// ── Vault-dependent stretch tools + resource ─────────
|
|
558
|
-
if (!localOnly && !isLocalDaemonMode()) {
|
|
559
|
-
const rotateAndStoreTool = (client) => ({
|
|
560
|
-
name: "rotate_and_store",
|
|
561
|
-
description: "Store a new value for an existing secret (creating a new version) and return the version number. Useful when an agent has regenerated an API key and needs to persist it.",
|
|
562
|
-
parameters: z.object({
|
|
563
|
-
path: z.string().min(1).describe("Secret path to rotate"),
|
|
564
|
-
value: z.string().min(1).describe("The new secret value"),
|
|
565
|
-
type: z.string().optional().describe("Secret type (api_key, password, etc.). Uses existing type if omitted."),
|
|
566
|
-
}),
|
|
567
|
-
execute: async (args, context) => {
|
|
568
|
-
const result = await client.putSecret(args.path, {
|
|
569
|
-
value: args.value,
|
|
570
|
-
type: args.type ?? "api_key",
|
|
571
|
-
});
|
|
572
|
-
context.log.info(`secret rotated: ${args.path}`);
|
|
573
|
-
return `Rotated secret at '${args.path}'. New version: ${result.version}.`;
|
|
574
|
-
},
|
|
575
|
-
});
|
|
576
|
-
registerTool(rotateAndStoreTool);
|
|
577
|
-
const rotateGenerateTool = (client) => ({
|
|
578
|
-
name: "rotate_generate",
|
|
579
|
-
description: "Server-side secret rotation: generates a cryptographically random value and stores it as a new version. The secret value never leaves the server. Returns the new version number.",
|
|
580
|
-
parameters: z.object({
|
|
581
|
-
path: z.string().min(1).describe("Secret path to rotate"),
|
|
582
|
-
length: z.number().min(8).max(1024).optional().describe("Length of generated value (default 32)"),
|
|
583
|
-
charset: z.enum(["hex", "base64", "alphanumeric", "ascii"]).optional().describe("Character set (default hex)"),
|
|
584
|
-
}),
|
|
585
|
-
execute: async (args, context) => {
|
|
586
|
-
const result = await client.rotateGenerate(args.path, {
|
|
587
|
-
length: args.length,
|
|
588
|
-
charset: args.charset,
|
|
589
|
-
});
|
|
590
|
-
context.log.info(`secret rotated (server-generated): ${args.path}`);
|
|
591
|
-
return `Rotated secret at '${args.path}' with server-generated value. New version: ${result.version}.`;
|
|
592
|
-
},
|
|
593
|
-
});
|
|
594
|
-
registerTool(rotateGenerateTool);
|
|
595
|
-
const listVersionsTool = (client) => ({
|
|
596
|
-
name: "list_versions",
|
|
597
|
-
description: "List all versions of a secret at the given path. Returns version numbers, creation dates, and disabled status.",
|
|
598
|
-
parameters: z.object({
|
|
599
|
-
path: z.string().min(1).describe("Secret path"),
|
|
600
|
-
}),
|
|
601
|
-
execute: async (args, context) => {
|
|
602
|
-
const result = await client.listVersions(args.path);
|
|
603
|
-
context.log.info(`listed versions: ${args.path}`);
|
|
604
|
-
const versions = result.versions ?? [];
|
|
605
|
-
if (versions.length === 0)
|
|
606
|
-
return `No versions found for '${args.path}'.`;
|
|
607
|
-
const lines = versions.map((v) => `v${v.version} (${v.created_at})${v.is_disabled ? " [disabled]" : ""}`);
|
|
608
|
-
return `Versions for '${args.path}' (${versions.length} total):\n${lines.join("\n")}`;
|
|
609
|
-
},
|
|
610
|
-
});
|
|
611
|
-
registerTool(listVersionsTool);
|
|
612
|
-
// ── Stretch: get_env_bundle ──────────────────────────
|
|
613
|
-
// Registered via registerTool so input/output go through security inspection.
|
|
614
|
-
const getEnvBundleTool = (client) => ({
|
|
615
|
-
name: "get_env_bundle",
|
|
616
|
-
description: "Fetch a secret of type env_bundle, parse its KEY=VALUE lines, and return a structured JSON object. Useful for injecting environment variables into subprocesses.",
|
|
617
|
-
parameters: z.object({
|
|
618
|
-
path: z.string().min(1).describe("Path to an env_bundle secret"),
|
|
619
|
-
}),
|
|
620
|
-
execute: async (args, context) => {
|
|
621
|
-
try {
|
|
622
|
-
const secret = await client.getSecret(args.path);
|
|
623
|
-
context.log.info(`env_bundle accessed: ${args.path}`);
|
|
624
|
-
if (secret.type !== "env_bundle") {
|
|
625
|
-
throw new UserError(`Secret at '${args.path}' is type '${secret.type}', not 'env_bundle'.`);
|
|
626
|
-
}
|
|
627
|
-
const env = {};
|
|
628
|
-
for (const line of secret.value.split("\n")) {
|
|
629
|
-
const trimmed = line.trim();
|
|
630
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
631
|
-
continue;
|
|
632
|
-
const eqIdx = trimmed.indexOf("=");
|
|
633
|
-
if (eqIdx === -1)
|
|
634
|
-
continue;
|
|
635
|
-
env[trimmed.slice(0, eqIdx)] = trimmed.slice(eqIdx + 1);
|
|
636
|
-
}
|
|
637
|
-
return JSON.stringify(env, null, 2);
|
|
638
|
-
}
|
|
639
|
-
catch (err) {
|
|
640
|
-
if (err instanceof OneClawApiError) {
|
|
641
|
-
if (err.status === 410) {
|
|
642
|
-
throw new UserError(`Secret at path '${args.path}' is expired or has exceeded its maximum access count.`);
|
|
643
|
-
}
|
|
644
|
-
if (err.status === 404) {
|
|
645
|
-
throw new UserError(`No secret found at path '${args.path}'.`);
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
throw err;
|
|
649
|
-
}
|
|
650
|
-
},
|
|
651
|
-
});
|
|
652
|
-
registerTool(getEnvBundleTool);
|
|
653
|
-
// ── resolve_env: Resolve env vars for a vault (Phase 4) ──────────────────────────
|
|
654
|
-
const resolveEnvTool = (client) => ({
|
|
655
|
-
name: "resolve_env",
|
|
656
|
-
description: "Resolve environment variables for a vault, returning the final KEY=VALUE set with precedence applied (shared < vault < branch override). If environment is omitted, the agent's tagged environment is used automatically.",
|
|
657
|
-
parameters: z.object({
|
|
658
|
-
environment: z
|
|
659
|
-
.string()
|
|
660
|
-
.optional()
|
|
661
|
-
.describe("Target environment (production, preview, development, or custom). Omit to use the agent's tagged environment."),
|
|
662
|
-
git_branch: z
|
|
663
|
-
.string()
|
|
664
|
-
.optional()
|
|
665
|
-
.describe("Optional git branch for preview overrides"),
|
|
666
|
-
}),
|
|
667
|
-
execute: async (args, context) => {
|
|
668
|
-
const result = await client.resolveEnvVars(args.environment, args.git_branch);
|
|
669
|
-
const envLabel = args.environment ?? "(agent default)";
|
|
670
|
-
context.log.info(`Resolved env vars for ${envLabel}${args.git_branch ? ` (branch: ${args.git_branch})` : ""}: ${Object.keys(result.vars ?? {}).length} variables`);
|
|
671
|
-
return JSON.stringify(result, null, 2);
|
|
672
|
-
},
|
|
673
|
-
});
|
|
674
|
-
registerTool(resolveEnvTool);
|
|
675
|
-
} // end if (!localOnly) — stretch tools
|
|
676
|
-
// ── Resource: browsable secret listing ───────────────
|
|
677
|
-
if (!localOnly) {
|
|
678
|
-
server.addResource({
|
|
679
|
-
uri: "vault://secrets",
|
|
680
|
-
name: "Vault secrets",
|
|
681
|
-
description: "Browsable listing of all secret paths in the configured vault (metadata only, no values).",
|
|
682
|
-
mimeType: "application/json",
|
|
683
|
-
async load(auth) {
|
|
684
|
-
const client = resolveClient(auth);
|
|
685
|
-
const data = await client.listSecrets();
|
|
686
|
-
return {
|
|
687
|
-
text: JSON.stringify(data.secrets.map((s) => ({
|
|
688
|
-
path: s.path,
|
|
689
|
-
type: s.type,
|
|
690
|
-
version: s.version,
|
|
691
|
-
expires_at: s.expires_at,
|
|
692
|
-
})), null, 2),
|
|
693
|
-
};
|
|
694
|
-
},
|
|
695
|
-
});
|
|
696
|
-
} // end if (!localOnly) — resource
|
|
697
|
-
// ── Rate limiting (httpStream only) ──────────────────
|
|
698
|
-
if (transport === "httpStream") {
|
|
699
|
-
const RATE_LIMIT_WINDOW_MS = 60_000;
|
|
700
|
-
const RATE_LIMIT_MAX = 60;
|
|
701
|
-
const hits = new Map();
|
|
702
|
-
// Periodic sweep to prevent unbounded growth
|
|
703
|
-
const sweepTimer = setInterval(() => {
|
|
704
|
-
const now = Date.now();
|
|
705
|
-
for (const [ip, bucket] of hits) {
|
|
706
|
-
if (now >= bucket.resetAt)
|
|
707
|
-
hits.delete(ip);
|
|
708
|
-
}
|
|
709
|
-
}, RATE_LIMIT_WINDOW_MS);
|
|
710
|
-
if (typeof sweepTimer === "object" && "unref" in sweepTimer) {
|
|
711
|
-
sweepTimer.unref();
|
|
712
|
-
}
|
|
713
|
-
const app = server.getApp();
|
|
714
|
-
app.get("/.well-known/oauth-protected-resource", (c) => {
|
|
715
|
-
const resource = process.env.ONECLAW_MCP_RESOURCE_URL ??
|
|
716
|
-
`${process.env.ONECLAW_PUBLIC_MCP_URL ?? "https://mcp.1claw.co"}/mcp`;
|
|
717
|
-
return c.json({
|
|
718
|
-
resource,
|
|
719
|
-
authorization_servers: [
|
|
720
|
-
process.env.ONECLAW_BASE_URL ?? "https://api.1claw.co",
|
|
721
|
-
],
|
|
722
|
-
bearer_methods_supported: ["header"],
|
|
723
|
-
scopes_supported: ["openid", "profile", "email"],
|
|
724
|
-
});
|
|
725
|
-
});
|
|
726
|
-
app.use("*", async (c, next) => {
|
|
727
|
-
// L2: Use rightmost XFF entry (closest to the trusted edge proxy)
|
|
728
|
-
const xff = c.req.header("x-forwarded-for");
|
|
729
|
-
const ip = (xff ? xff.split(",").pop()?.trim() : undefined) ||
|
|
730
|
-
c.req.header("x-real-ip") ||
|
|
731
|
-
"unknown";
|
|
732
|
-
const now = Date.now();
|
|
733
|
-
let bucket = hits.get(ip);
|
|
734
|
-
if (!bucket || now >= bucket.resetAt) {
|
|
735
|
-
bucket = { count: 0, resetAt: now + RATE_LIMIT_WINDOW_MS };
|
|
736
|
-
hits.set(ip, bucket);
|
|
737
|
-
}
|
|
738
|
-
bucket.count++;
|
|
739
|
-
c.header("RateLimit-Limit", String(RATE_LIMIT_MAX));
|
|
740
|
-
c.header("RateLimit-Remaining", String(Math.max(0, RATE_LIMIT_MAX - bucket.count)));
|
|
741
|
-
c.header("RateLimit-Reset", String(Math.ceil(bucket.resetAt / 1000)));
|
|
742
|
-
if (bucket.count > RATE_LIMIT_MAX) {
|
|
743
|
-
return c.json({ error: "Too many requests, please try again later." }, 429);
|
|
744
|
-
}
|
|
745
|
-
await next();
|
|
746
|
-
});
|
|
747
|
-
}
|
|
748
|
-
// ── Start ────────────────────────────────────────────
|
|
749
|
-
if (transport === "httpStream") {
|
|
750
|
-
server.start({
|
|
751
|
-
transportType: "httpStream",
|
|
752
|
-
httpStream: { port, host: "0.0.0.0" },
|
|
753
|
-
});
|
|
754
|
-
console.log(`1claw MCP server listening on port ${port} (HTTP streaming)${localOnly ? " [local-only mode]" : ""}`);
|
|
755
|
-
}
|
|
756
|
-
else {
|
|
757
|
-
server.start({ transportType: "stdio" });
|
|
758
|
-
if (localOnly) {
|
|
759
|
-
console.error("1claw MCP server started in local-only mode (security tools only, no vault credentials required)");
|
|
760
|
-
}
|
|
761
|
-
}
|
|
15
|
+
modules: TOOLSET_MODULES,
|
|
16
|
+
createClient: (config) => new OneClawClient(config),
|
|
17
|
+
});
|
|
18
|
+
export const started = running.then(() => undefined);
|
|
762
19
|
//# sourceMappingURL=index.js.map
|