Skip to main content
Glama

Base Mini App Builder MCP Server

by Mr-Web3
baseAccount.mdโ€ข6.05 kB
# Base Account > Learn how Base Accounts enhance Mini App user experience and what Mini App developers need to know to implement Base Account capabilities. > **What you'll learn**\ > By the end of this guide, you'll understand: > > * How to handle wallet transactions effectively in Mini Apps, including leveraging enhanced Base Account capabilities when available. ## Default Wallets in Mini Apps Mini Apps launched within the Base App are automatically connected to the user's [Base Account](/base-account/overview), eliminating wallet connection flows and enabling instant onchain interactions. This zero-friction approach means users can immediately swap, send, and transact without any wallet setup, maintaining a familiar experience with their existing Base Account and assets. ## For Mini App Development <Steps> <Step title="Detect Base Account Capabilities"> Base Accounts offer enhanced features that traditional wallets don't support. * Use `wallet_getCapabilities` to check for `atomicBatch`, `paymasterService`, and `auxiliaryFunds` * Adapt your UI to show streamlined workflows for Base Account users * Provide fallback experiences for traditional wallets <Check> Test with both Base Accounts and traditional wallets to ensure your capability detection works correctly. </Check> Learn More: [Base Account Capabilities Overview](/base-account/reference/core/capabilities/overview) </Step> <Step title="Implement Sponsored Gas Transactions"> Enable sponsored gas transactions where your Mini App pays gas fees for users. * Check for `paymasterService` capability before offering gas-free transactions * Use the `capabilities` parameter in `writeContracts` to enable sponsored gas * Handle cases where paymaster service is unavailable <Check> Verify your Mini App works with Base Accounts that have zero ETH balance. </Check> Learn More: [Paymaster Service](/base-account/reference/core/capabilities/paymasterService) </Step> <Step title="Optimize Transaction Patterns"> Base Accounts can batch multiple operations into single transactions. * Use `atomicBatch` capability to group related transactions * Implement `wallet_sendCalls` for complex workflows * Show one confirmation instead of multiple prompts <Tip> Consider transaction batching for multi-step operations like approve + transfer + mint. </Tip> Learn More: [Batch Transactions Guide](/base-account/improve-ux/batch-transactions) </Step> </Steps> ## Base Account Benefits for Mini Apps | Feature | What It Does | Mini App Benefit | | ---------------------- | ---------------------------------------------- | ------------------------------------------------------- | | Atomic Batch | Combines multiple transactions into one | Multi-step workflows require only one user confirmation | | Paymaster Service | App pays gas fees, not user | Users can transact without owning ETH | | Passkey Authentication | Uses device biometrics instead of private keys | Faster, more secure user authentication | ## Implementation Examples ### Capability Detection ```javascript function useBaseAccountCapabilities(address) { const [capabilities, setCapabilities] = useState({}); useEffect(() => { async function detect() { const caps = await publicClient.request({ method: 'wallet_getCapabilities', params: [address] }); setCapabilities({ atomicBatch: caps['0x2105']?.atomicBatch?.supported, paymasterService: caps['0x2105']?.paymasterService?.supported, auxiliaryFunds: caps['0x2105']?.auxiliaryFunds?.supported }); } if (address) detect(); }, [address]); return capabilities; } ``` ### Sponsored Gas Implementation ```javascript import { useCapabilities, useWriteContracts } from 'wagmi/experimental' function SponsoredTransactionButton() { const account = useAccount() const { writeContracts } = useWriteContracts() const { data: availableCapabilities } = useCapabilities({ account: account.address, }) const capabilities = useMemo(() => { if (!availableCapabilities || !account.chainId) return {} const capabilitiesForChain = availableCapabilities[account.chainId] if ( capabilitiesForChain['paymasterService'] && capabilitiesForChain['paymasterService'].supported ) { return { paymasterService: { url: `https://api.developer.coinbase.com/rpc/v1/base/v7HqDLjJY4e28qgIDAAN4JNYXnz88mJZ`, }, } } return {} }, [availableCapabilities, account.chainId]) const handleSponsoredMint = () => { writeContracts({ contracts: [{ address: '0x...', abi: contractAbi, functionName: 'mint', args: [account.address], }], capabilities, }) } return <button onClick={handleSponsoredMint}>Mint NFT (Gas Free)</button> } ``` ### Capability-Based UI ```javascript function MiniAppWorkflow() { const { address } = useAccount(); const { atomicBatch } = useBaseAccountCapabilities(address); if (atomicBatch) { // Base Account: One-click workflow return <OneClickPurchaseFlow />; } else { // Traditional wallet: Multi-step workflow return <MultiStepPurchaseFlow />; } } ``` ## Additional Resources For detailed implementation of Base Account features: <CardGroup cols={3}> <Card title="User Authentication" href="https://docs.base.org/base-account/guides/authenticate-users"> Authenticate Users Guide </Card> <Card title="Base Pay Guide" href="https://docs.base.org/base-account/guides/accept-payments"> Base Pay Guide </Card> <Card title="Sign and Verify Signatures" href="https://docs.base.org/base-account/guides/sign-and-verify-typed-data"> Sign and Verify Typed Data Guide </Card> </CardGroup>

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/Mr-Web3/BaseKit-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server