Integration Tutorial
This section describes how to set up your environment, configure the MCP client, and start using Interlace Agent Card tools.
Integration Workflow
To start using the Interlace Agent Card, complete the following steps.
Step 1 — Create a Developer Account
- Visit the Agent Developer Page and register a developer account.
- Sandbox: https://agent-card-staging.interlace.money/
- Production: https://agent-card.interlace.money/
- Sign in to access the developer dashboard.
Step 2 — Generate an API Key
- In the Developer Page, navigate to API Key Management.
- Click Create New API Key. The system will generate an API key in the format:
itl_sk_xxxxxxxx....
Step 3 — Configure the MCP Client
- Configure the generated API key in your agent client. Supported clients include OpenCode, Codex, and other MCP-compatible clients.
- After configuration, restart your agent client. The agent will automatically connect to the MCP server and discover available tools.
Example Configuration (OpenCode)
{
"mcpServers": {
"interlace": {
"type": "remote",
"url": "https://mcp.interlace.money/sse",
"headers": {
"Authorization": "Bearer itl_sk_xxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}Usage Examples
The following examples illustrate how an agent can perform common tasks using natural language instructions and corresponding MCP tools.
1. Create a Card
- User request: Create a $10 card.
- Tool invoked:
issue_card
Required Parameters
| Parameter | Description | Required |
|---|---|---|
| currency | Funding currency. Supported values: USDC or USDT | Yes |
| chain | Blockchain network (e.g., ETH, ARB). See the Supported Chains and Currencies for the full list. | Yes |
| amount | Funding amount. Maximum allowed amount: $20 | Yes |
Response Fields
| Field | Type | Description |
|---|---|---|
| cardId | string | Card ID (returned if the card is issued immediately after funding) |
| currency | string | Funding currency |
| chain | string | Blockchain network |
| expectedAmount | string | Expected funding amount |
| depositAddress | string | Funding address |
| depositQrCodeUrl | string | QR code URL for funding |
| message | string | Response message |
After the user transfers sufficient funds (USDC or USDT) to the depositAddress, the system will automatically load the balance onto the card. The card can then be used for online payments.
The funding address can be displayed as a static QR code for direct on-chain payment.
2. Get Card Details
When an online payment needs to be completed (for example, subscribing to a service), the agent invokes get_card to retrieve payment details such as the card number and CVV.
Response Fields
| Field | Type | Description |
|---|---|---|
| cardId | string | Card ID |
| pan | string | Card number |
| cvv | string | CVV |
| expMonth | string | Expiration month |
| expYear | string | Expiration year |
| bin | string | Card BIN |
| cardLastFour | string | Last four digits of the card number |
| status | string | Card status (e.g., ACTIVE) |
| balance | string | Card balance |
3. View Transaction History
- User request: How much has my card spent?
- Tool invoked:
get_transactions
Request Parameters
| Parameter | Description |
|---|---|
| limit | Number of recent transactions to return. Default: 10. Maximum: 100 |
Response Fields
| Field | Type | Description |
|---|---|---|
| cardId | string | Card ID |
| transactions | array | List of transactions |
| transactions[].transactionId | string | Transaction ID |
| transactions[].amount | string | Transaction amount |
| transactions[].currency | string | Transaction currency (e.g., USD) |
| transactions[].merchant | string | Merchant name |
| transactions[].status | string | Transaction status (e.g., SETTLED) |
| transactions[].occurredAt | string | Transaction timestamp |
4. Delete a Card
- User request: Delete this card and return the remaining balance.
- Tool invoked:
delete_card
Response Fields
| Field | Type | Description |
|---|---|---|
| cardId | string | Card ID |
| deleted | boolean | Whether the card was successfully deleted |
| refundAmount | string | Refunded amount |
| message | string | Response message |
After the card is deleted, the remaining balance is automatically returned to the user's crypto wallet in the original funding currency (USDC or USDT). Withdrawal functionality will be introduced in a future release.
5. View On-Chain Top-Up History
- User request: How much has been deposited into my wallet?
- Tool invoked:
list_topup
Request Parameters
| Parameter | Description |
|---|---|
| limit | Number of recent top-up records to return. Default: 10. Maximum: 100 |
Response Fields
| Field | Type | Description |
|---|---|---|
| depositAddress | string | Funding address from the most recent top-up record |
| topups | array | List of top-up transactions |
| topups[].transferId | string | Transfer ID |
| topups[].amount | string | Transfer amount |
| topups[].currency | string | Currency (e.g., USDC, USDT) |
| topups[].chain | string | Blockchain network (e.g., BASE, ETH) |
| topups[].address | string | Funding address |
| topups[].status | string | Transfer status (e.g., COMPLETE, ONHOLD, PENDING) |
| topups[].transactionHash | string | On-chain transaction hash |
| topups[].riskResult | string | Risk assessment result (e.g., PASS, HIGH, REJECTED) |
| topups[].createTime | string | Record creation time (format: yyyy-MM-dd HH:mm:ss) |
| topups[].completeTime | string | Transfer completion time (format: yyyy-MM-dd HH:mm:ss) |
6. Refund High-Risk Top-Up Funds
- User request: Refund my funds on hold.
- Tool invoked:
refund_topup
Request Parameters
| Parameter | Description | Required |
|---|---|---|
| address | Blockchain address to receive the refund. If multiple ONHOLD top-ups exist, all refunds will be sent to this address. Required. | Yes |
Response Fields
| Field | Type | Description |
|---|---|---|
| address | string | Masked refund address |
| refundedCount | integer | Number of refunds processed in this request |
| refunds | array | List of refund records |
| refunds[].transferId | string | Original transfer ID |
| refunds[].refundId | string | Refund ID (returned if successful) |
| refunds[].amount | string | Refund amount |
| refunds[].currency | string | Currency |
| refunds[].status | string | Refund status (SUCCESS or FAILED) |
| refunds[].message | string | Failure reason; typically null if successful |
Important Notes
- Card Limit
- Only one active card is allowed per user. A new card cannot be created until the existing card is deleted.
- Card with status
CONTROL,ACTIVE,PENDING, orFROZENis considered active.INACTIVEindicates a deleted card.
- Spending Limit
- Each card has a lifecycle spending limit of $20. Once the limit is reached, the card is automatically disabled.
- Transaction Restrictions
- Agent Card supports online transactions only, such as e-commerce, subscriptions, and other digital services.
- POS and ATM transactions are not supported.
- Merchant category restrictions (MCC controls) apply.
- Data Security
- Full card details (e.g., PAN, CVV) are available only through MCP tools and are not displayed in the Developer Page.
- Ensure your agent client securely stores and handles sensitive payment data.
- Balance Refund
- After deletion, any remaining balance is automatically returned to the user's crypto wallet in the original funding currency (USDC or USDT).
- Wallet withdrawal functionality will be provided in a future release.
- Funding Requirements
- Use supported currencies (USDC / USDT) and networks. See the Supported Chains and Currencies for the full list.
- The deposited amount must be equal to or greater than the expected funding amount. Funds are automatically credited once sufficient.
- If the deposited amount is insufficient, funding will not be processed. You may send additional funds to the same address.
- When the funding status is
ONHOLD, the funds are temporarily held and can be refunded using therefund_topuptool.
Updated 2 days ago