Crawler Summary

sol-mobile answer-first brief

Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. --- name: sol-mobile description: Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. metadata: {"openclaw":{"requires":{"bins":["npx","node"]}}} --- Sol Mobile — Solana Mobile Development You are an expert Solana mobile developer who builds production-ready React Native apps that connect to Solana wallets and interact with the bl Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.

Freshness

Last checked 4/14/2026

Best For

sol-mobile is best for cryptographically, mwa workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 94/100

sol-mobile

Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. --- name: sol-mobile description: Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. metadata: {"openclaw":{"requires":{"bins":["npx","node"]}}} --- Sol Mobile — Solana Mobile Development You are an expert Solana mobile developer who builds production-ready React Native apps that connect to Solana wallets and interact with the bl

OpenClawself-declared

Public facts

4

Change events

1

Artifacts

0

Freshness

Apr 14, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.

Trust evidence available

Trust score

Unknown

Compatibility

OpenClaw

Freshness

Apr 14, 2026

Vendor

Jusscubs

Artifacts

0

Benchmarks

0

Last release

Unpublished

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.

Setup snapshot

git clone https://github.com/JussCubs/sol-mobile-skills.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Jusscubs

profilemedium
Observed Apr 14, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed Apr 14, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB OPENCLEW

Extracted files

0

Examples

6

Snippets

0

Languages

typescript

Parameters

Executable Examples

typescript

import { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';

await transact(async (wallet) => {
  // 1. SESSION OPENS - wallet app comes to foreground
  
  // 2. AUTHORIZE - get user approval + accounts
  const { accounts, auth_token } = await wallet.authorize({
    identity: APP_IDENTITY,
    chain: 'solana:devnet',
  });

  // 3. SIGN/SEND - perform operations
  const signatures = await wallet.signAndSendTransactions({
    transactions: [transaction],
  });

  // 4. SESSION CLOSES - automatically when callback ends
});

bash

yarn add @solana-mobile/mobile-wallet-adapter-protocol-web3js \
         @solana-mobile/mobile-wallet-adapter-protocol \
         @solana/web3.js \
         react-native-quick-base64

javascript

import 'react-native-get-random-values';
import { Buffer } from 'buffer';

global.Buffer = global.Buffer || Buffer;

json

// app.json
{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "minSdkVersion": 23
          }
        }
      ]
    ]
  }
}

gradle

android {
    compileSdkVersion 34
    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 34
    }
}

typescript

export const APP_IDENTITY = {
  name: 'MyDApp',
  uri: 'https://mydapp.com',
  icon: 'favicon.ico', // Relative to uri
};

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB OPENCLEW

Docs source

GITHUB OPENCLEW

Editorial quality

ready

Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. --- name: sol-mobile description: Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. metadata: {"openclaw":{"requires":{"bins":["npx","node"]}}} --- Sol Mobile — Solana Mobile Development You are an expert Solana mobile developer who builds production-ready React Native apps that connect to Solana wallets and interact with the bl

Full README

name: sol-mobile description: Build production Solana mobile apps with React Native. Setup, Mobile Wallet Adapter, transactions, tokens, NFTs, and dApp Store publishing. metadata: {"openclaw":{"requires":{"bins":["npx","node"]}}}

Sol Mobile — Solana Mobile Development

You are an expert Solana mobile developer who builds production-ready React Native apps that connect to Solana wallets and interact with the blockchain.

What You Build

Native mobile dApps for Android (and iOS) using React Native that:

  • Connect securely to mobile wallets via Mobile Wallet Adapter (MWA)
  • Send transactions, transfer tokens, mint NFTs, interact with programs
  • Work with both Expo and bare React Native workflows
  • Deploy to Solana dApp Store and traditional app stores

Core Architecture

Mobile Wallet Adapter (MWA) is the foundation. Unlike web wallets that inject into browser context, mobile wallets run as separate, isolated apps. MWA creates encrypted communication channels between your dApp and wallet apps.

Key Differences from Web

| Web Wallets | Mobile Wallets (MWA) | |-------------|---------------------| | Persistent connection | Session-based | | Browser extensions | Standalone apps | | Direct function calls | Inter-app messaging | | Connect once → sign many | Open session → authorize → sign → close |

Session Lifecycle

Every wallet interaction follows this pattern:

import { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';

await transact(async (wallet) => {
  // 1. SESSION OPENS - wallet app comes to foreground
  
  // 2. AUTHORIZE - get user approval + accounts
  const { accounts, auth_token } = await wallet.authorize({
    identity: APP_IDENTITY,
    chain: 'solana:devnet',
  });

  // 3. SIGN/SEND - perform operations
  const signatures = await wallet.signAndSendTransactions({
    transactions: [transaction],
  });

  // 4. SESSION CLOSES - automatically when callback ends
});

Environment Setup

Dependencies

Add the core MWA packages:

yarn add @solana-mobile/mobile-wallet-adapter-protocol-web3js \
         @solana-mobile/mobile-wallet-adapter-protocol \
         @solana/web3.js \
         react-native-quick-base64

React Native Polyfills

Mobile environments lack browser APIs. Add these polyfills to your index.js (before App import):

import 'react-native-get-random-values';
import { Buffer } from 'buffer';

global.Buffer = global.Buffer || Buffer;

Expo Configuration

For Expo projects, you need a custom development build:

// app.json
{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "minSdkVersion": 23
          }
        }
      ]
    ]
  }
}

Bare React Native Setup

Add to android/app/build.gradle:

android {
    compileSdkVersion 34
    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 34
    }
}

App Identity

Every dApp must define its identity for wallet display:

export const APP_IDENTITY = {
  name: 'MyDApp',
  uri: 'https://mydapp.com',
  icon: 'favicon.ico', // Relative to uri
};

Wallets show this to users during authorization. On Android, wallets can cryptographically verify the requesting app matches this identity.

Authorization Patterns

First-Time Connection

const authorizeWallet = async () => {
  const authResult = await transact(async (wallet) => {
    return await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet', // or 'solana:mainnet-beta'
    });
  });
  
  // Store for silent re-auth
  await AsyncStorage.setItem('auth_token', authResult.auth_token);
  
  return authResult.accounts[0].address;
};

Silent Re-Authorization

const connectWithToken = async () => {
  const savedToken = await AsyncStorage.getItem('auth_token');
  
  return await transact(async (wallet) => {
    return await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
      auth_token: savedToken || undefined, // Skip prompt if valid
    });
  });
};

Deauthorization

const disconnectWallet = async () => {
  const savedToken = await AsyncStorage.getItem('auth_token');
  
  await transact(async (wallet) => {
    await wallet.deauthorize({
      auth_token: savedToken,
    });
  });
  
  await AsyncStorage.removeItem('auth_token');
};

Transaction Operations

Sign and Send (Recommended)

Wallet handles both signing and network submission:

const sendTransaction = async (instruction) => {
  return await transact(async (wallet) => {
    const { accounts } = await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
    });

    const fromPubkey = new PublicKey(toByteArray(accounts[0].address));
    
    // Build transaction
    const txMessage = new TransactionMessage({
      payerKey: fromPubkey,
      recentBlockhash: (await connection.getLatestBlockhash()).blockhash,
      instructions: [instruction],
    }).compileToV0Message();

    const transaction = new VersionedTransaction(txMessage);

    // Wallet signs and submits
    const signatures = await wallet.signAndSendTransactions({
      transactions: [transaction],
    });

    return signatures[0];
  });
};

Sign Only

For custom submission logic:

const signTransaction = async (transaction) => {
  return await transact(async (wallet) => {
    await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
    });

    const signedTxs = await wallet.signTransactions({
      transactions: [transaction],
    });

    return signedTxs[0];
  });
};

// Submit yourself
const signedTx = await signTransaction(transaction);
await connection.sendTransaction(signedTx);

Token Operations

SOL Transfer

import { SystemProgram, LAMPORTS_PER_SOL } from '@solana/web3.js';

const transferSOL = async (toPubkey, amount) => {
  const instruction = SystemProgram.transfer({
    fromPubkey: authorizedPubkey,
    toPubkey,
    lamports: amount * LAMPORTS_PER_SOL,
  });

  return await sendTransaction(instruction);
};

SPL Token Transfer

import { getAssociatedTokenAddress, createTransferInstruction } from '@solana/spl-token';

const transferToken = async (mintAddress, toPubkey, amount, decimals) => {
  const fromTokenAccount = await getAssociatedTokenAddress(
    new PublicKey(mintAddress),
    authorizedPubkey
  );
  
  const toTokenAccount = await getAssociatedTokenAddress(
    new PublicKey(mintAddress),
    new PublicKey(toPubkey)
  );

  const instruction = createTransferInstruction(
    fromTokenAccount,
    toTokenAccount,
    authorizedPubkey,
    amount * (10 ** decimals)
  );

  return await sendTransaction(instruction);
};

Get Token Balance

const getTokenBalance = async (mintAddress, ownerAddress) => {
  const tokenAccount = await getAssociatedTokenAddress(
    new PublicKey(mintAddress),
    new PublicKey(ownerAddress)
  );

  try {
    const balance = await connection.getTokenAccountBalance(tokenAccount);
    return balance.value.uiAmount;
  } catch (error) {
    return 0; // Account doesn't exist
  }
};

Message Signing

Sign Arbitrary Messages

const signMessage = async (message) => {
  const messageBuffer = new Uint8Array(
    message.split('').map(c => c.charCodeAt(0))
  );

  return await transact(async (wallet) => {
    const { accounts } = await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
    });

    const signedMessages = await wallet.signMessages({
      addresses: [accounts[0].address],
      payloads: [messageBuffer],
    });

    return signedMessages[0];
  });
};

Sign in with Solana (SIWS)

const signInWithSolana = async () => {
  return await transact(async (wallet) => {
    const authResult = await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
      sign_in_payload: {
        domain: 'mydapp.com',
        statement: 'Sign in to MyDApp',
        uri: 'https://mydapp.com',
      },
    });

    return authResult.sign_in_result;
  });
};

// Verify the signature
import { verifySignIn } from '@solana/wallet-standard-util';

const isValid = verifySignIn(input, signInResult);

State Management

Authorization Provider

Create a context for wallet state:

// contexts/AuthorizationProvider.tsx
import React, { createContext, useContext, useState } from 'react';

interface AuthContextType {
  selectedAccount: string | null;
  isAuthorized: boolean;
  authorize: () => Promise<void>;
  deauthorize: () => Promise<void>;
}

const AuthContext = createContext<AuthContextType | null>(null);

export const AuthorizationProvider = ({ children }) => {
  const [selectedAccount, setSelectedAccount] = useState<string | null>(null);
  
  const authorize = async () => {
    try {
      const authResult = await transact(async (wallet) => {
        return await wallet.authorize({
          identity: APP_IDENTITY,
          chain: 'solana:devnet',
        });
      });
      
      setSelectedAccount(authResult.accounts[0].address);
      await AsyncStorage.setItem('auth_token', authResult.auth_token);
    } catch (error) {
      console.error('Authorization failed:', error);
    }
  };

  const deauthorize = async () => {
    const savedToken = await AsyncStorage.getItem('auth_token');
    
    await transact(async (wallet) => {
      await wallet.deauthorize({ auth_token: savedToken });
    });
    
    setSelectedAccount(null);
    await AsyncStorage.removeItem('auth_token');
  };

  return (
    <AuthContext.Provider value={{
      selectedAccount,
      isAuthorized: !!selectedAccount,
      authorize,
      deauthorize,
    }}>
      {children}
    </AuthContext.Provider>
  );
};

export const useAuthorization = () => {
  const context = useContext(AuthContext);
  if (!context) {
    throw new Error('useAuthorization must be used within AuthorizationProvider');
  }
  return context;
};

Usage in Components

const WalletScreen = () => {
  const { selectedAccount, isAuthorized, authorize, deauthorize } = useAuthorization();

  if (!isAuthorized) {
    return (
      <View style={styles.container}>
        <Button title="Connect Wallet" onPress={authorize} />
      </View>
    );
  }

  return (
    <View style={styles.container}>
      <Text>Connected: {selectedAccount}</Text>
      <Button title="Disconnect" onPress={deauthorize} />
    </View>
  );
};

Error Handling

Common Errors and Solutions

const handleTransactionError = async (operation) => {
  try {
    return await operation();
  } catch (error) {
    if (error instanceof Error) {
      switch (true) {
        case error.message.includes('User declined'):
          Alert.alert('Transaction Cancelled', 'You declined the transaction.');
          break;
          
        case error.message.includes('Insufficient funds'):
          Alert.alert('Insufficient Funds', 'Not enough SOL for this transaction.');
          break;
          
        case error.message.includes('Blockhash not found'):
          Alert.alert('Network Error', 'Transaction expired. Please try again.');
          break;
          
        default:
          Alert.alert('Transaction Failed', error.message);
      }
    }
    throw error;
  }
};

Retry Logic

const withRetry = async (operation, maxRetries = 3) => {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await operation();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
    }
  }
};

Testing and Development

Testing on Device

MWA requires a real Android device with a Solana wallet installed. Popular options:

  • Phantom Mobile (most widely used)
  • Solflare Mobile
  • Backpack (xNFT support)

Development Workflow

  1. Install wallet app on test device
  2. Enable USB debugging on Android
  3. Run dev build on device: npx react-native run-android
  4. Test wallet interactions with real wallet app

Debugging Tips

// Add extensive logging
await transact(async (wallet) => {
  console.log('Starting wallet session');
  
  const authResult = await wallet.authorize({
    identity: APP_IDENTITY,
    chain: 'solana:devnet',
  });
  
  console.log('Authorized accounts:', authResult.accounts);
  console.log('Auth token received:', !!authResult.auth_token);
  
  // ... rest of operations
});

// Monitor network calls
const connection = new Connection(
  clusterApiUrl('devnet'),
  'confirmed',
  {
    commitment: 'confirmed',
    disableRetryOnRateLimit: false,
  }
);

Building for Production

Android Build

# Generate signed APK
cd android
./gradlew assembleRelease

# Generate AAB (preferred)
./gradlew bundleRelease

iOS Build (if supported)

# iOS builds require Xcode
npx react-native run-ios --configuration Release

Solana dApp Store Submission

  1. Build signed APK/AAB with proper signing keys
  2. Submit to Solana dApp Store via publisher portal
  3. Follow guidelines for Solana app requirements
  4. Include wallet connection prominently in app flow

Traditional App Store Submission

  • Google Play Store: Standard Android app submission
  • Apple App Store: Follow standard iOS guidelines

Program Interactions

Anchor Program Calls

import * as anchor from '@project-serum/anchor';

const callProgram = async (programId, instruction) => {
  return await transact(async (wallet) => {
    const { accounts } = await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
    });

    const provider = new anchor.AnchorProvider(
      connection,
      {
        publicKey: new PublicKey(toByteArray(accounts[0].address)),
        signTransaction: async (tx) => {
          const signed = await wallet.signTransactions({
            transactions: [tx],
          });
          return signed[0];
        },
        signAllTransactions: async (txs) => {
          return await wallet.signTransactions({
            transactions: txs,
          });
        },
      },
      { commitment: 'confirmed' }
    );

    const program = new anchor.Program(idl, programId, provider);
    return await program.methods[instruction]().rpc();
  });
};

Performance Optimization

Connection Caching

// Singleton connection instance
class SolanaConnection {
  private static instance: Connection;

  static getInstance() {
    if (!this.instance) {
      this.instance = new Connection(
        clusterApiUrl('devnet'),
        'confirmed'
      );
    }
    return this.instance;
  }
}

Batch Transactions

const sendBatchTransactions = async (instructions) => {
  return await transact(async (wallet) => {
    const { accounts } = await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
    });

    const transactions = instructions.map(ix => {
      const txMessage = new TransactionMessage({
        payerKey: new PublicKey(toByteArray(accounts[0].address)),
        recentBlockhash: latestBlockhash.blockhash,
        instructions: [ix],
      }).compileToV0Message();

      return new VersionedTransaction(txMessage);
    });

    return await wallet.signAndSendTransactions({
      transactions,
    });
  });
};

Security Best Practices

Validate All Inputs

const validateAddress = (address: string): boolean => {
  try {
    new PublicKey(address);
    return true;
  } catch {
    return false;
  }
};

Use Versioned Transactions

// Preferred: Versioned transactions with address lookup tables
const buildVersionedTransaction = async (instructions) => {
  const txMessage = new TransactionMessage({
    payerKey: authorizedPubkey,
    recentBlockhash: latestBlockhash.blockhash,
    instructions,
  }).compileToV0Message();

  return new VersionedTransaction(txMessage);
};

Environment-Specific Configuration

const getCluster = () => {
  return __DEV__ ? 'devnet' : 'mainnet-beta';
};

const getRPCEndpoint = () => {
  return __DEV__ 
    ? clusterApiUrl('devnet')
    : 'https://your-mainnet-rpc.com';
};

Advanced Features

Multiple Wallet Support

const getAvailableWallets = async () => {
  // MWA automatically detects installed wallet apps
  // Your app connects to whichever the user selects
  return await transact(async (wallet) => {
    // This will show wallet selection if multiple installed
    return await wallet.authorize({
      identity: APP_IDENTITY,
      chain: 'solana:devnet',
    });
  });
};

Deep Linking

# Add to android/app/src/main/AndroidManifest.xml
<intent-filter android:autoVerify="true">
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="https"
        android:host="mydapp.com" />
</intent-filter>

Troubleshooting

No Wallet Apps Found

  • Ensure user has Phantom/Solflare/Backpack installed
  • Check if wallet supports MWA 2.0 protocol
  • Verify app is running on device (not emulator)

Authorization Failures

  • Check app identity configuration
  • Verify network connectivity
  • Ensure proper permissions in AndroidManifest.xml

Transaction Errors

  • Check account has sufficient SOL for fees
  • Verify recent blockhash is valid
  • Ensure instruction accounts are correct

Session Timeout

  • MWA sessions are ephemeral - rebuild for each interaction
  • Don't try to cache wallet instances between sessions
  • Always use fresh transact() calls

Next Steps

For Full Implementation: See references/ folder for detailed guides on:

  • Environment setup (setup-guide.md)
  • MWA protocol details (mwa-guide.md)
  • Transaction building (transactions.md)
  • Token operations (token-operations.md)
  • App store publishing (publishing.md)
  • Code snippets (code-snippets.md)

You now have everything needed to build production Solana mobile apps. Start with a simple wallet connection, then add transactions, tokens, and program interactions as needed.

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/contract"
curl -s "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW
Machine Appendix

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_OPENCLEW",
      "generatedAt": "2026-10-09T02:25:49.752Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    },
    {
      "key": "cryptographically",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "mwa",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:cryptographically|supported|profile capability:mwa|supported|profile"
}

Facts JSON

[
  {
    "factKey": "docs_crawl",
    "category": "integration",
    "label": "Crawlable docs",
    "value": "6 indexed pages on the official domain",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  },
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Jusscubs",
    "href": "https://github.com/JussCubs/sol-mobile-skills",
    "sourceUrl": "https://github.com/JussCubs/sol-mobile-skills",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-04-14T22:24:48.183Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "href": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-04-14T22:24:48.183Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/jusscubs-sol-mobile-skills/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "docs_update",
    "title": "Docs refreshed: Sign in to GitHub · GitHub",
    "description": "Fresh crawlable documentation was indexed for the official domain.",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  }
]

Sponsored

Ads related to sol-mobile and adjacent AI workflows.