DUAL MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (default: 3100) | 3100 |
| TRANSPORT | No | stdio (default) or http | stdio |
| DUAL_API_KEY | No | API key for authentication | |
| DUAL_API_URL | No | API base URL (default: https://api.blockv-labs.io/v3) | https://api.blockv-labs.io/v3 |
| DUAL_ACCESS_TOKEN | No | JWT access token | |
| DUAL_REFRESH_TOKEN | No | JWT refresh token |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dual_loginA | Authenticate with email/phone and password. Returns JWT tokens for subsequent API calls. Sets auth automatically for this session. |
| dual_login_guestA | Create a guest session with limited permissions. No credentials required. |
| dual_registerA | Create a new wallet account. A verification code will be sent to the email/phone provided. |
| dual_register_verifyB | Complete registration by submitting the verification code sent to your email/phone. |
| dual_refresh_tokenA | Exchange a refresh token for a new access token. |
| dual_get_meA | Get the authenticated wallet's profile — ID, nickname, email, avatar, language, activation status. |
| dual_update_meA | Update the authenticated wallet's nickname, language, or avatar. |
| dual_get_walletB | Retrieve a wallet's public profile by its ID. |
| dual_reset_passwordA | Send a password reset code to the wallet's email/phone. |
| dual_reset_password_verifyB | Submit reset code and set a new password. |
| dual_list_organizationsA | List all organizations the authenticated wallet belongs to. Supports pagination and role filtering. |
| dual_create_organizationA | Create a new organization (multi-tenant workspace). Returns the org with its ID and FQDN. |
| dual_get_organizationB | Get organization details including members, roles, and account info. |
| dual_update_organizationB | Update an organization's name, description, or image. |
| dual_get_org_balanceB | Get the current balance and currency for an organization. |
| dual_list_org_membersB | List all members of an organization with their roles. |
| dual_add_org_memberB | Add a wallet as a member to an organization with a specific role. |
| dual_remove_org_memberA | Remove a member from an organization. |
| dual_list_org_rolesB | List all roles defined for an organization. |
| dual_create_org_roleB | Create a new role with specific permissions for an organization. |
| dual_list_templatesA | List token templates. Templates define the structure, properties, and actions of tokenized objects. Filter by prefix or FQDN. |
| dual_create_templateA | Create a new token template that defines the structure of tokenized objects. Specify the property schema, allowed actions, and access rules. Example: Create a "Reward Token" template with properties like points, expiry_date, and redeemable status. |
| dual_get_templateB | Get full details of a template including its property schema, actions, and factory config. |
| dual_update_templateA | Update a template's name, property schema, or access rules. |
| dual_delete_templateA | Permanently delete a template. This cannot be undone. |
| dual_list_template_variationsB | List all variations of a template. Variations are alternative configurations of the same template. |
| dual_create_template_variationB | Create a variation of an existing template with overridden properties. |
| dual_list_objectsA | List tokenized objects (asset instances). Objects are created from templates and owned by wallets. Filter by template, owner, FQDN, or geographic hash. Supports pagination. |
| dual_get_objectB | Get full details of a tokenized object — its properties, ownership, faces, actions, and metadata. |
| dual_update_objectB | Update the properties of a tokenized object. Only mutable properties can be changed. |
| dual_get_object_childrenB | Get child objects in a hierarchical object tree. |
| dual_get_object_parentsB | Get parent objects in a hierarchical object tree. |
| dual_get_object_activityA | Get the full activity/audit log for an object — all state changes, transfers, and action executions. |
| dual_search_objectsB | Search tokenized objects with filter criteria. Supports complex queries across all object properties. Example filters: { "template_id": "abc123", "properties.status": "active" } |
| dual_count_objectsA | Count objects matching filter criteria without returning the full objects. |
| dual_execute_actionA | Execute an action on a tokenized object via the Event Bus. Actions are the primary way to change object state. Examples: mint tokens, transfer ownership, redeem rewards, update status. The action_type must match a registered action type, and the object must belong to a template that allows it. |
| dual_batch_actionsA | Execute multiple actions atomically in a single batch. All actions succeed or all fail. Useful for complex operations like: mint + transfer + configure in one transaction. |
| dual_list_actionsB | List executed actions. Filter by action ID or template. |
| dual_get_actionB | Get full details of a specific executed action. |
| dual_list_action_typesA | List all registered action types. Action types define what operations can be performed on objects. |
| dual_create_action_typeA | Register a new action type with an optional JSON schema for payload validation. |
| dual_update_action_typeB | Update an action type's name, description, or payload schema. |
| dual_list_facesA | List face definitions. Faces are visual representations (images, 3D models, web views) attached to templates. |
| dual_create_faceB | Create a visual face for a template. Types: image, image_progress, image_policy, image_layered, 3d, web. |
| dual_get_faceB | Get details of a specific face. |
| dual_update_faceB | Update a face's display URL or type. |
| dual_delete_faceA | Delete a face definition. |
| dual_get_template_facesA | Get all faces associated with a specific template. |
| dual_upload_fileA | Upload a file to DUAL storage. Returns a public URL. Useful for template assets, face images, and attachments. |
| dual_get_fileB | Get a file's URL or content by its storage ID. |
| dual_delete_fileB | Delete a file from DUAL storage. |
| dual_get_template_assetsB | List all storage assets associated with a template. |
| dual_list_webhooksA | List all registered webhooks. Filter by type, template, action, or active status. |
| dual_create_webhookA | Register a webhook to receive real-time notifications when events occur on the platform. |
| dual_get_webhookB | Get details of a specific webhook. |
| dual_update_webhookB | Update a webhook's URL or active status. |
| dual_delete_webhookA | Delete a webhook subscription. |
| dual_test_webhookA | Send a test payload to a webhook endpoint to verify it's working. |
| dual_list_messagesA | List notification messages sent through the platform. |
| dual_send_notificationB | Send a notification message to one or more wallets using a message template. |
| dual_list_message_templatesB | List all notification message templates. |
| dual_create_message_templateB | Create a notification template with subject, body (with placeholders), and delivery channels. |
| dual_delete_message_templateB | Delete a message template. |
| dual_list_batchesB | List sequencer batches. Batches group multiple transactions for efficient on-chain anchoring via ZK-rollup. |
| dual_get_batchB | Get details of a sequencer batch including all contained transactions. |
| dual_list_checkpointsA | List ZK-rollup checkpoints. Each checkpoint contains a state root and proof that anchors batches to L1. |
| dual_get_checkpointA | Get a specific ZK-rollup checkpoint with its proof data and state roots. |
| dual_list_api_keysB | List all API keys for the authenticated wallet. |
| dual_create_api_keyA | Create a new API key for server-to-server integration. The key value is only shown once — save it immediately. |
| dual_delete_api_keyA | Permanently revoke and delete an API key. |
| dual_get_payment_configA | Get the platform's payment configuration — deposit addresses, supported tokens, and fee structure. |
| dual_list_depositsB | List deposit transactions. Filter by transaction hash, token, or token address. |
| dual_request_accessA | Request access to a gated platform feature. |
| dual_list_support_messagesC | List support messages. |
| dual_send_support_messageB | Send a support message to the DUAL team. |
| dual_public_list_templatesA | List publicly accessible templates. No authentication required. |
| dual_public_get_templateA | Get a public template's details. No authentication required. |
| dual_public_get_objectA | Get a public object's details. No authentication required. |
| dual_public_search_objectsA | Search publicly accessible objects. No authentication required. |
| dual_public_get_statsA | Get public platform statistics — total objects, templates, and wallets. No authentication required. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ro-ro-b/dual-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server