Changelog

Greg

We've built Universal Bridge to allow your users to use any asset on any chain, and it's ready for you to try. If you're interested in joining the private beta for Universal Bridge, complete this form (or reach out to anyone from the thirdweb team).

Who's It For?

Do you need to accept fiat and crypto payments in your app? Are you struggling to find reliable onchain liquidity for swaps? Are you tired of implementing bespoke bridges for multiple chains? Universal Bridge is for you.

What Is It?

Bridging, swapping, and accepting payments each bring their own challenges. The existing options are unreliable, complicated, and reliant on poor design choices. Universal Bridge is the easiest way to route assets in your app. Swap tokens, bridge between chains, onramp assets, accept onchain payments, and more all with a simple, unified API.

We already support 30,000+ routes across 50+ chains and are adding more every day. We're running detailed routing and reliability tests across all of them to guarantee a great experience for users.

How's It Work?

Universal Bridge uses a combination of existing protocols and onramps with thirdweb's own onchain and off-chain infrastructure for maximum coverage and reliability. The result is a "best case scenario" for buying, selling, and transferring assets between any EVM chain.

How Can I Try It?

Our Private Beta starts today, and your app can be one of the first to use it. Just complete this form or reach out to anyone on the team to get access. Or, try the playground widget here.

Toomas Oosalu

We're excited to announce that thirdweb Insight has expanded its blockchain data querying capabilities to 67 chains, including these 7 new chains:

What This Means For Developers
With these additions, you can now use all of Insight's powerful features across these new chains.

Try them out on the playground!

View All Supported Chains
For a complete list of supported chains and their respective chain IDs, check the thirdweb chainlist.


📖 Learn more about Insight - it’s open source and ready to power your applications!

Arsenii

We've revamped our metadata storage and refresh mechanisms to provide a more reliable, scalable, and efficient experience when working with NFT collections metadata through Insight!

What’s New?

More Reliable Metadata Storage

  • Replaced the previous caching approach with a more permanent storage solution, ensuring faster retrieval and better consistency across requests.
  • Metadata is now stored and accessed in a way that eliminates potential inconsistencies, making it the single source of truth for retrieval.

Explicit Force Refresh Endpoints

To give developers more control, we’ve introduced dedicated API endpoints for refreshing metadata on demand:

  • Collection Metadata Refresh
    • GET v1/nfts/metadata/refresh/:contract_address
  • Token Metadata Refresh
    • GET v1/nfts/metadata/refresh/:contract_address/:token_id
  • Both endpoints fully support multichain operations via chain query parameters.
  • Refreshing token metadata also ensures collection-level metadata stays up to date.

Why This Matters

Improved Data Consistency – Eliminates mismatches between different layers, ensuring metadata stays accurate.
Simplified Architecture – No more juggling between temporary and permanent storage solutions.
Better Scalability – Optimized for large-scale metadata operations, enabling more efficient handling of growing datasets.
Multichain-Ready – Works seamlessly across chains, just like you’re used to.

What’s Next?

We’re actively working on further performance optimizations by consolidating multiple separate queries into more efficient, single-fetch operations. This will unlock even faster metadata retrieval without sacrificing accuracy. Stay tuned with more updates to thirdweb Insight! 🚀

Jake Loo

This new update includes several changes to the tools in thirdweb MCP (Model Context Protocol) Server – improving overall accuracy in tool selection and speed performance for some onchain queries.

Improvement and Fixes

  • Improved onchain query performance and tool selection
  • Fixed Engine service auth requests that were not configured properly
  • Updated thirdweb-ai to v0.1.4 (see full changelog)

A few prompts and guide to try out:

  • What is the price of ETH? or What is the price of UNI token?
  • Show me the recent events for 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 on Ethereum (1)
  • What are the recent transactions from 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 on Base (8453)?
  • What is the ABI of 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 on Ethereum (1)
  • Transfer 0.00001 ETH to 0xEb0effdFB4dC5b3d5d3aC6ce29F3ED213E95d675 on Sepolia (11155111)

Always provide a fully valid wallet address, and include chain id along with the chain name.

Upgrade Guide

# Using pipx
pipx upgrade thirdweb-mcp
# Using uvx
uvx --upgrade thirdweb-mcp
Jake Loo

This new update focuses on improving the accuracy of tool selection by consolidating tools, picking better default values, and giving developers the ability to override tool description prompts.

New Features

  • Override service tools' description prompts
from thirdweb_ai import Insight
insight = Insight(secret_key=...)
# using default tool description
tools = [insight.get_all_transactions()]
# using custom tool description
tools = [insight.get_all_transactions(description="Call this to fetch transactions for account")]

Improvements

  • Insight always requests with most recent and decoded data
  • Insight performance improvement by using the correct sort key
  • Updated resolve tool prompt to provide a more accurate description
  • Reduced number of tools with similar functionality:
    • Merged get_contract_abi into get_contract_metadata
    • Merged get_contract_events_by_signature into get_all_events

Bug Fixes

  • Fixed invalid auth for Engine requests due to headers not being set correctly
  • Fixed some invalid paths or bodies for Engine and Insight tools
  • Fixed improper schema error from OpenAI Agents adapter when a tool schema contains anyOf, oneOf, or allOf

Upgrade Guide

# pip
pip install thirdweb-ai --upgrade
# poetry
poetry update thirdweb-ai
# uv
uv add thirweb-ai --upgrade
Joaquim Verges

We just released a new live playground that lets you customize and interact with the Universal Bridge via the prebuilt UI component.

Try it out at: https://playground.thirdweb.com/connect/pay

The playground lets you customize:

  • Payment mode: fund wallets, direct payments or onchain transactions
  • Price, chain and token information
  • Payment methods
  • Metadata
  • Theme
  • Gas sponsorship

Every customization shows you the changes in a live preview, as well as the corresponding code to copy paste into your projects.

Happy building! 🛠️

Jake Loo

We're excited to announce the first release of thirdweb ai, a powerful Python library (TypeScript coming soon) that enables AI agents to interact with any EVM chains autonomously using thirdweb. This is a significant step forward in our mission to make web3 more accessible and empower developers to build the next generation of AI-powered onchain applications.

Why thirdweb ai?

As Large Language Models (LLMs) and AI Agents continue to evolve as transformative technologies, we recognized the need for these systems to interact with blockchain networks autonomously. We believe that giving AI agents the ability to perform onchain actions based on real-time data will unlock new possibilities.

What Can You Build?

With thirdweb ai, you can create AI agents that:

  • Manage wallets and transactions securely using Engine
  • Retrieve and analyze on-chain data in real-time using Insight
  • Delegate complex onchain executions to Nebula agents

All of this functionality integrates smoothly with the AI agent framework of your choice, including OpenAI Agents, LangChain, AgentKit, GOAT, AutoGen, LlamaIndex, and many more.

Getting Started

Installation

Install the core package with all adapters:

pip install "thirdweb-ai[all]"

Or choose specific framework adapters:

# For OpenAI Agents
pip install "thirdweb-ai[openai]"
# For LangChain
pip install "thirdweb-ai[langchain]"
# For AutoGen
pip install "thirdweb-ai[autogen]"
# For LlamaIndex
pip install "thirdweb-ai[llama-index]"
# For additional frameworks
pip install "thirdweb-ai[goat]"
pip install "thirdweb-ai[agentkit]"
pip install "thirdweb-ai[mcp]"
pip install "thirdweb-ai[smolagents]"
pip install "thirdweb-ai[pydantic-ai]"

See here for the full list of supported framework and installation guides.

Basic Usage

from thirdweb_ai import Engine, Insight, Nebula, Tool
# Initialize thirdweb services
insight = Insight(secret_key=...)
nebula = Nebula(secret_key=...)
engine = Engine(secret_key=..., engine_url=..., engine_auth_jwt=...)
# Get available tools
tools = [
# Access powerful web3 tools
# Optionally, select tool from each services
*insight.get_tools(), # Giving agents real-time on-chain data access
*engine.get_tools(), # Wallet and transaction management
*nebula.get_tools(), # Agent for complex blockchain tasks
]

Framework Integration Examples

OpenAI Agents

from thirdweb_ai import Tool
from thirdweb_ai.adapters.openai import get_openai_tools
# Initialize your thirdweb tools
tools = [...] # List of thirdweb tools
# Convert to OpenAI tools
openai_tools = get_openai_tools(tools)
# Use in your OpenAI Agent
agent = Agent("thirdweb_agent", tools=openai_tools, ...)

LangChain

from thirdweb_ai import Tool
from thirdweb_ai.adapters.langchain import get_langchain_tools
# Initialize your thirdweb tools
tools = [...] # List of thirdweb tools
# Convert to LangChain tools
langchain_tools = get_langchain_tools(tools)
# Use in your LangChain agent
agent = create_tool_calling_agent(tools=langchain_tools, ...)

Developer Resources

LLM Integration

When building applications that integrate LLMs with thirdweb's blockchain capabilities, you can enhance your results by including thirdweb context files:

Learn More

Get started with thirdweb-ai today and join us in building the future of onchain AI agents!

Joaquim Verges

We just shipped a big upgrade to partner management for ecosystems. You can now specify what type of signatures are permitted for each partner, as well as granular controls on what exactly can be signed. As an ecosystem owner, this means you have full control of what each partner is able to do with your user's ecosystem wallets, like restricting to particular assets or actions.

In your ecosystem dashboard, you'll find a new option for "Access Control" when you create or edit an ecosystem partner. You can setup these signing restrictions in 2 ways: your own server verification, or built in rules.

Server verification

This is the most flexible and powerful option - every signature request will flow through your own server and you get to perform your own logic for allowing or disallowing a particular signature.

server verifier setup

The response from your sever should just be a simple JSON body with the following format.

{
isAllowed: boolean;
reason?: string;
}

Built-in rules

You can also set your rules directly in the dashboard. These include what signature types you would like to allow, and granular permissions per signature type, like the chain, contract addresses or function selectors that are allowed to be called.

For ecosystems that use smart accounts, since those require personal_sign signatures, we've added a user operation filter that lets you control which smart account operations are allowed to be signed by the ecosystem wallets.

These controls are low level and powerful, letting you tightly control what can and cannot be done with wallets on a per-partner basis.

We're continuously improving this UI to make it easier for ecosystem owners to setup these rules. Your feedback is appreciated and help us make this product better for everyone!

Vernon Johnson

We're excited to announce improvements to our Token and NFT APIs in Insight. We've recently added support to get all token transfers by owner, wallet, and token contracts. We've also included in this release major performance improvements to existing NFT endpoints.

The following endpoints are now available to use.

Get NFT Transfers by Wallet

GET https://{chain}.insight.thirdweb.com/v1/nfts/transfers?owner_address={owner_address}

Retrieve all NFT transfers by wallet address. Supports ERC1155 and ERC721.

Get Transfers by Contract

GET https://{chain}.insight.thirdweb.com/v1/tokens/transfers/{contract_address}

Get all token transfers for a contract address. Supports ERC20, ERC1155, and ERC721.

Get Transfers by Wallet

GET https://{chain}.insight.thirdweb.com/v1/tokens/transfers?owner_address={owner_address}

View all token transfers for a wallet address. Supports ERC20, ERC1155, and ERC721.

Get Transfers by Transaction

GET https://{chain}.insight.thirdweb.com/v1/tokens/transfers/transaction/{transaction_hash}

Get all token transfers in a transaction. Supports ERC20, ERC1155, and ERC721.

Resources

Jonas Daniels

With the latest dashboard update, users can now view their invoices directly in thirdweb for easy management.

  • Invoice history, amount, and details are available at a glance.
  • Download the full invoice pdf document to see breakdown of charges by usage and plan.

To view your invoices, login to thirdweb and navigate to Settings > Invoices.

For any feedback or support inquiries, please visit our support site.

Arsenii

We’re pleased to announce a more robust contract verification process, now featuring a dedicated Etherscan verification status check and final result reporting. This means you can confidently verify your contracts—proxy or otherwise—knowing you’ll receive a much more clear outcome every time.

Added Verification Status Check and Final Result Return

  • Introduced extra logic to check for verification status on Etherscan-like explorers, which polls for verification completion.
    • This now returns the final verification result (e.g., "success," "failure," or "already verified") instead of just the receipt GUID.

Fixed Constructor Parameter Fetching for Proxy Contracts

  • Fixed some corner cases where we should use the implementation address when verifying proxied contracts with constructor parameters.

We hope this streamlined verification workflow reduces the friction of contract verifications and helps you focus on delivering great applications. Happy building!

Nischit Pradhan

We're excited to announce an important update to our RPC edge infrastructure at thirdweb. This enhancement is designed to improve performance and reduce costs for our users.

🚀 What’s New?

  • Response Compression at RPC Edge:
    We’ve enabled response compression, meaning our RPC endpoints now deliver compressed responses to reduce data size and speed up transmission.
  • Cost Reduction for Users:
    With smaller payloads, users can enjoy reduced bandwidth usage and lower overall costs when interacting with our servers.
  • New Request Requirement:
    To take full advantage of this update, you need to add an Accept-Encoding header to your requests. This tells our servers that your client can handle compressed responses.

🛠️ How to Use the New Feature

Simply include the Accept-Encoding header in your API requests. For instance, if you're calling the eth_blockNumbermethod using our RPC endpoint, you can use the following curl example:

curl -H "Content-Type: application/json" \
-H "Accept-Encoding: gzip" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
https://1.rpc.thirdweb.com

In this example:

  • The Accept-Encoding: gzip header signals that your client accepts gzip-compressed responses.
  • The JSON payload makes a call to eth_blockNumber to retrieve the latest block number.

🎉 Conclusion

This update is part of our continuous effort to enhance performance and efficiency. We’re committed to providing you with the best tools and infrastructure for your development needs. If you have any feedback or questions, please don’t hesitate to reach out.

Toomas Oosalu

We're excited to announce that thirdweb Insight has expanded its blockchain data querying capabilities to 61 chains, including these 19 new chains:

What This Means For Developers
With these additions, you can now use all of Insight's powerful features across these new chains.

Try them out on the playground!

View All Supported Chains
For a complete list of supported chains and their respective chain IDs, check the thirdweb chainlist.


📖 Learn more about Insight - it’s open source and ready to power your applications!

Manan Tank

You can now view the list all sponsored transactions across in a team by going to your Team > Usage Page in thirdweb dashboard

You can also view this table in your Team > Project > Connect > Account Abstraction > Analytics page to see only sponsored transactions for the selected project

Greg

The thirdweb SDK comes with built-in tree-shaking, meaning your application only keeps what it uses from the SDK. However, we still like to keep the overall package size as small as possible for convenience while you're running your application in development. With version 5.92.0 we've reduced the package install size by more than 25%, from 199 MB to 144 MB. See the latest here.

MediaRenderer Changes

Unfortunately, this means we've had to remove support for 3D models in the media renderer. You can still display 3D model NFTs in your application using our IPFS resolvers and Three.js or a similar library.

Vernon Johnson

We're excited to announce the release of additional NFT API endpoints to Insight. These endpoints provide comprehensive APIs for accessing NFT metadata, transfers, ownership information, and more. The NFT API provides a great alternative for developers looking to migrate from SimpleHash, which is expected to shutdown on March 27th.

The endpoints below are now available to use.

NFT Tokens API

Get NFTs by Contract

GET https://{chain}.insight.thirdweb.com/v1/nfts/{contract_address}

Retrieve all NFTs from a specific contract address.

Get NFT by Token ID

GET https://{chain}.insight.thirdweb.com/v1/nfts/{contract_address}/{token_id}

Fetch data for a specific NFT using its contract address and token ID.

Get NFTs by Owner

GET https://{chain}.insight.thirdweb.com/v1/nfts?owner_address={owner_address}

List all NFTs owned by a specific wallet address across all contracts.

NFT Transfers API

Get NFT Transfers by Contract

GET https://{chain}.insight.thirdweb.com/v1/nfts/transfers/{contract_address}?metadata=true

Track all transfer events for a specific NFT contract with optional metadata.

Get NFT Transfers by Token

GET https://{chain}.insight.thirdweb.com/v1/nfts/transfers/{contract_address}/{token_id}?metadata=true

View the complete transfer history for a specific NFT token with optional metadata.

Get NFT Transfers by Transaction

GET https://{chain}.insight.thirdweb.com/v1/nfts/transfers/transaction/{transaction_hash}?metadata=true

Retrieve all NFT transfers that occurred within a specific transaction with optional metadata.

NFT Ownership API

Get NFT Owners by Contract

GET https://{chain}.insight.thirdweb.com/v1/nfts/owners/{contract_address}

List all current owners of NFTs from a specific contract.

Get NFT Owners by Token

GET https://{chain}.insight.thirdweb.com/v1/nfts/owners/{contract_address}/{token_id}

Identify the current owners of a specific NFT token.

Resources

Jake Loo

We’re excited to introduce significant upgrades Nebula's transaction execution. Our latest model, t0-003, is more capable, accurate, and intelligent—enabling seamless execution of complex, multi-step prompts.

With expanded support for bridging, swapping, and multi-transaction workflows, developers can now perform actions like retrieving balances, executing transfers across chains, and handling approvals in a single streamlined process.

Improvements

  • New model: t0-003 — more capable, higher accuracy and smarter
    • Supports complex prompts that involve multi-step instructions
    • For example:
      get the usdc balance for thirdweb.eth on ethereum, then transfer that amount to jakeloo.eth on base
  • Bridging and swapping with more chains and more token routes supported
    • Supports multiple transactions, for example, approve and transfer. Wallets will need to execute the transactions in order.
    • The chat completion API may consist of multiple unsigned_transaction in the actions

Nebula is currently in Alpha for a select number of developers. For access to the product, please sign up on the Nebula waitlist.

For any feedback or support inquiries, please visit our support site.

Toomas Oosalu

Querying token prices in USD is now supported by Insight API!

Try it out in our playground

To fetch a token's price by its contract address

(0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee is used for native tokens)

const getPrice = async () => {
try {
const response = await fetch(
"https://1.insight.thirdweb.com/v1/tokens/price?address=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
{
headers: {
"x-client-id": <THIRDWEB_CLIENT_ID>,
},
},
);
const priceData = await response.json();
return priceData.data;
} catch (error) {
console.error("Error:", error);
}
};

Response

[
{
chain_id: 1,
address: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
symbol: 'ETH',
price_usd: 2192.917084798869,
price_usd_cents: 219291
}
]

You can optionally define a timestamp and the API will return the closest data it has to that timestamp.

const getPrice = async () => {
try {
const ts = Date.now() - 3 * 60 * 60 * 1000; // 3 hours ago
const response = await fetch(
`https://1.insight.thirdweb.com/v1/tokens/price?address=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&timestamp=${ts}`,
{
headers: {
"x-client-id": <THIRDWEB_CLIENT_ID>,
},
},
);
const priceData = await response.json();
return priceData.data;
} catch (error) {
console.error("Error:", error);
}
};

To fetch token prices by symbol

const getPriceBySymbol = async () => {
try {
const response = await fetch(
"https://1.insight.thirdweb.com/v1/tokens/price?symbol=ETH",
{
headers: {
"x-client-id": <THIRDWEB_CLIENT_ID>,
},
},
);
const priceData = await response.json();
return priceData.data;
} catch (error) {
console.error("Error:", error);
}
};

Note that there can be multiple tokens with the same symbol


We support more than 6000 tokens currently and keep adding more.

We also provide an endpoint to fetch the list of supported tokens for each chain.


📖 Learn more about Insight - it’s open source and ready to power your applications!

Toomas Oosalu

Insight API will deprecate all camelCase fields from responses and remove them by 30th of March 2025. Every field that was previously in camelCase has a duplicate field in snake_case for the time being, allowing users to migrate their response handling.

List of affected fields:

  • decodedData
    • New name: decoded
    • Affected endpoints
      • v1/transactions (in case of decode=true query param)
      • v1/transactions/:contractAddress (in case of decode=true query param)
      • v1/transactions/:contractAddress/:signature
      • v1/events (in case of decode=true query param)
      • v1/events/:contractAddress (in case of decode=true query param)
      • v1/events/:contractAddress/:signature
  • decodedData.indexedParams and decoded.indexedParams
    • New name: indexed_params
    • Affected endpoints
      • v1/events (in case of decode=true query param)
      • v1/events/:contractAddress (in case of decode=true query param)
      • v1/events/:contractAddress/:signature
  • decodedData.nonIndexedParams and decoded.nonIndexedParams
    • New name: non_indexed_params
    • Affected endpoints
      • v1/events (in case of decode=true query param)
      • v1/events/:contractAddress (in case of decode=true query param)
      • v1/events/:contractAddress/:signature
  • chainId
    • New name: chain_id
    • Affected endpoints
      • v1/tokens/erc20/:ownerAddress
      • v1/tokens/erc721/:ownerAddress
      • v1/tokens/erc1155/:ownerAddress
  • tokenAddress
    • New name: token_address
    • Affected endpoints
      • v1/tokens/erc20/:ownerAddress
      • v1/tokens/erc721/:ownerAddress
      • v1/tokens/erc1155/:ownerAddress
  • tokenId
    • New name: token_id
    • Affected endpoints
      • v1/tokens/erc721/:ownerAddress
      • v1/tokens/erc1155/:ownerAddress

Example of a decoded data response

// rest of response...
"decoded": {
"name": "Transfer",
"signature": "Transfer(address,address,uint256)",
// will be deprecated
"indexedParams": {
"from": "0x0000000000000000000000000000000000000000",
"to": "0x321b7ff75154472b18edb199033ff4d116f340ff"
},
"indexed_params": {
"from": "0x0000000000000000000000000000000000000000",
"to": "0x321b7ff75154472b18edb199033ff4d116f340ff"
},
// will be deprecated
"nonIndexedParams": {
"amount": 4843303142399797056
},
"non_indexed_params": {
"amount": 4843303142399797056
}
},
// rest of response...

It should be noted that the properties in indexed_params and non_indexed_params could be any format, because they are based on how the smart contract was programmed.

Example of a token response

// rest of response...
{
// will be deprecated
"chainId": 1,
"chain_id": 1,
// will be deprecated
"tokenAddress": "0xca8098ab4503aee15b3291d22c0852518d04da63",
"token_address": "0xca8098ab4503aee15b3291d22c0852518d04da63",
// will be deprecated
"tokenId": "78",
"token_id": "78",
"balance": "1"
},
// rest of response...

📖 Learn more about Insight - it’s open source and ready to power your applications!

Arsenii

We’re excited to share that Thirdweb now better aligns with Etherscan’s latest V2 API. If you regularly need to have your contracts verified on Etherscan-like explorers, this change means a more streamlined, less error-prone experience - so you can spend more time shipping, and less time wrestling with parameters. One click on the Thirdweb dashboard is all it takes!

What’s New

  • V2 API Readiness: Our system automatically targets Etherscan V2 endpoints for the correct chain, minimising manual setup and reducing the possibility of misconfiguration.
  • Future-Proofing: This approach lays the groundwork for supporting additional block explorer APIs with minimal friction, ensuring that Thirdweb utilities remains flexible and up-to-date.

Why It Matters

The goal behind these changes is to make verifying your smart contracts as hassle-free as possible. By cutting down on repetitive parameters and streamlining the integration with Etherscan V2, we’ve drastically reduced the chance of errors. Ultimately, we want you to focus on the things that matter—innovating, building, and delivering great blockchain experiences.

We’re always improving our developer experience, so if you have any questions or feedback, reach out to us. In the meantime, we hope you enjoy the smoother, more robust contract verification process!