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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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