home / skills / near / agent-skills / near-intents

near-intents skill

/skills/near-intents

This skill enables cross-chain token swaps using NEAR Intents 1Click API to fetch quotes, generate deposits, and track status across chains.

npx playbooks add skill near/agent-skills --skill near-intents

Review the files below or copy the command above to add this skill to your agents.

Files (18)
SKILL.md
3.7 KB
---
name: near-intents
description: Cross-chain token swap integration using NEAR Intents 1Click API. Use when building swap widgets, bridge interfaces, or multi-chain transfers across EVM, Solana, NEAR, TON, Stellar, and Tron.
---

# NEAR Intents Integration

Cross-chain token swaps via 1Click REST API. Get a quote, API provides deposit addresses, you build the deposit transaction and receive the resulting token automatically.

## Quick Start - Pick Your Path

| Use Case | Start Here |
|----------|------------|
| **React App** | `react-swap-widget.md` - Example showing the pattern |
| **Node.js / Script** | `server-example.md` - Example showing the pattern |
| **API Reference** | `api-quote.md` → `api-tokens.md` → `api-status.md` |
| **Chain-specific Deposits** | `deposit-{chain}.md` |

## Integration Flow

```
GET /v0/tokens → POST /v0/quote (dry) → POST /v0/quote (wet) → Deposit TX → POST /v0/deposit/submit → GET /v0/status
```

## Rule Categories

| Priority | Category | Files |
|----------|----------|-------|
| 1 | **Examples** | `react-swap-widget.md`, `server-example.md` |
| 2 | **API** | `api-quote.md`, `api-tokens.md`, `api-status.md`, `api-deposit-submit.md` |
| 3 | **Deposits** | `deposit-evm.md`, `deposit-solana.md`, `deposit-near.md`, `deposit-ton.md`, `deposit-tron.md`, `deposit-stellar.md` |
| 4 | **React Hooks** | `react-hooks.md` |
| 5 | **Advanced** | `intents-balance.md`, `passive-deposit.md` |

## Critical Knowledge

1. **Use `assetId` from /v0/tokens** - never construct manually
2. **`dry: true`** = preview only, **`dry: false`** = get deposit address (valid ~10 min)
3. **Poll status** until terminal: `SUCCESS`, `FAILED`, `REFUNDED`, `INCOMPLETE_DEPOSIT`
4. **Chain-to-chain is default** - `depositType` and `recipientType` default to chain endpoints

## Index

1. **Examples (HIGH)**
   - [react-swap-widget](rules/react-swap-widget.md) - Minimum viable React swap implementation with wagmi
   - [server-example](rules/server-example.md) - Node.js script for server-side swaps

2. **API Reference (CRITICAL)**
   - [api-tokens](rules/api-tokens.md) - Fetch supported tokens, cache result
   - [api-quote](rules/api-quote.md) - Get swap quote, dry=true for preview, dry=false for deposit address
   - [api-deposit-submit](rules/api-deposit-submit.md) - Notify API after deposit to speed up processing
   - [api-status](rules/api-status.md) - Poll until terminal state (SUCCESS, FAILED, REFUNDED)
   - [api-any-input-withdrawals](rules/api-any-input-withdrawals.md) - Query withdrawals for ANY_INPUT quotes

3. **Chain Deposits (HIGH)**
   - [deposit-evm](rules/deposit-evm.md) - Ethereum, Base, Arbitrum, Polygon, BSC transfers
   - [deposit-solana](rules/deposit-solana.md) - Native SOL and SPL token transfers
   - [deposit-near](rules/deposit-near.md) - NEP-141 token transfers via wallet selector
   - [deposit-ton](rules/deposit-ton.md) - Native TON transfers via TonConnect
   - [deposit-tron](rules/deposit-tron.md) - Native TRX and TRC-20 transfers
   - [deposit-stellar](rules/deposit-stellar.md) - Stellar transfers (MEMO REQUIRED)

4. **React Hooks (MEDIUM)**
   - [react-hooks](rules/react-hooks.md) - Reusable hooks for tokens, quotes, status polling

5. **Advanced (LOW)**
   - [intents-balance](rules/intents-balance.md) - Hold balances in intents.near for faster swaps
   - [passive-deposit](rules/passive-deposit.md) - QR code flow for manual transfers

6. **References**
   - [concepts](references/concepts.md) - Swap lifecycle, statuses, CEX warning, authentication

## Resources

- Docs: https://docs.near-intents.org/near-intents/integration/distribution-channels/1click-api
- API Keys: https://partners.near-intents.org/
- OpenAPI: https://1click.chaindefuser.com/docs/v0/openapi.yaml

Overview

This skill integrates NEAR Intents 1Click API to enable cross-chain token swaps and multi-chain transfers. It provides the flow to fetch token lists, get quotes (preview and deposit-ready), build chain-specific deposit transactions, submit deposits, and poll for final status. Use it to add swap widgets, bridge flows, or server-side swap handlers across EVM, Solana, NEAR, TON, Stellar, and Tron.

How this skill works

The integration fetches supported tokens and requests quotes from the 1Click REST API. A dry quote gives pricing and parameters; a wet quote (dry:false) returns a temporary deposit address and deposit instructions. You assemble and submit the deposit transaction on the specified chain, notify the API via deposit/submit, and poll status until a terminal state (SUCCESS, FAILED, REFUNDED, INCOMPLETE_DEPOSIT).

When to use it

  • Building an in-page swap widget supporting many chains
  • Powering a bridge or multi-chain transfer flow
  • Server-side scripts that orchestrate swaps and track status
  • Wallet integrations that need deposit instructions per chain
  • When you need consistent deposit handling across EVM, Solana, NEAR, TON, Stellar, Tron

Best practices

  • Always use assetId from GET /v0/tokens — never construct asset identifiers manually
  • Request quotes with dry:true to preview UX and fees, then dry:false to obtain deposit details (deposit addresses expire ~10 minutes)
  • Cache the /v0/tokens response and refresh periodically to avoid stale token lists
  • Implement chain-specific deposit builders (EVM, Solana, NEAR, TON, Stellar, Tron) using the provided deposit-{chain} patterns
  • After broadcasting the deposit, call POST /v0/deposit/submit to speed processing and then poll GET /v0/status until terminal state

Example use cases

  • React swap widget using wagmi that gets tokens, previews quote, builds deposit TX, and polls status
  • Node.js server that requests quotes, returns deposit info to clients, and monitors swaps
  • Wallet integration that opens the correct deposit flow per chain and provides instructions to users
  • QR/passive-deposit flow for manual transfers where a user scans deposit instructions and the server polls status
  • Holding an intents.near balance for faster same-chain swaps and liquidity management

FAQ

How long is a deposit address valid?

Deposit addresses from a wet quote are short-lived — typically valid for about 10 minutes. Request a new quote if the user delays.

What status values indicate completion?

Terminal statuses are SUCCESS, FAILED, REFUNDED, and INCOMPLETE_DEPOSIT. Poll GET /v0/status until you see one of these.

Do I need to support chain-specific deposit formats?

Yes. Use the deposit-{chain} patterns: EVM uses raw tx or signed data, Solana uses SPL/native transfer details, NEAR uses NEP-141 and wallet selector, Stellar requires MEMO, etc.