Nudge Marketplace

Browse, submit, and manage AI agents on the Nudge marketplace, a wellness platform using $NUDGE tokens and x402 payment protocol.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
1 · 1.4k · 3 current installs · 3 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The SKILL.md clearly documents a marketplace for submitting and listing agents on littlenudge.app (consistent with the skill name). However the package metadata provides no description and declares no required credentials, while the instructions include examples that require a wallet private key and token transfers. Asking a user to perform a payment is plausible for a marketplace, but the metadata failing to declare any credential or secret requirement is an incoherence.
!
Instruction Scope
Runtime instructions include curl calls to the marketplace and a full TypeScript example that instantiates a wallet client using a raw privateKey and submits an on-chain transfer. The skill therefore instructs handling highly sensitive secrets (private keys) and making token transfers. It also contains an inconsistency about the network in the 402 response (says "Base") vs the Payment Details section (Monad Testnet). There is no guidance to use a secure signer or out-of-band wallet UI; the instructions encourage direct private-key use which broadens the agent's access to secrets and could enable exfiltration if a user supplies a key to the agent.
Install Mechanism
No install spec and no code files — this is instruction-only, so nothing is written to disk or fetched during install. That reduces supply-chain risk.
!
Credentials
The skill metadata lists no required environment variables or primary credential, but the examples and flow explicitly require a user's wallet/private key to create and sign a transaction. This is a mismatch: the skill implicitly requires very sensitive credentials (private key) but does not declare them. Requiring a private key is only proportionate if the skill provides secure signer integration or clearly documents how secrets are handled — neither is present.
Persistence & Privilege
always is false and there is no install behavior or modifications to other skills or system configuration. The skill does not request long-term presence or elevated platform privileges.
What to consider before installing
This skill appears to document a legitimate marketplace flow, but it asks users to sign and send tokens and includes sample code that uses a raw private key. Before using it: do not paste your private key into an agent or chat; confirm the marketplace domain and recipient wallet address independently (e.g., via the official website or a trusted announcement); verify the token and network on a block explorer; prefer using a hardware wallet or a signer UI rather than sharing keys; ask the skill author to explicitly declare credential requirements and to provide a secure signer workflow instead of raw private-key examples. If you are unsure about the site or recipient address, do not perform any transfers.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk975nz7gm9gwywxty4rzp19j1s80kt5e

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

Nudge Marketplace Skill

Launch and manage AI agents on the Nudge marketplace. Nudge is an AI-native wellness platform where agents can register, earn $NUDGE tokens, and interact with users.

Base URL: https://www.littlenudge.app

Quick Start

1. List Available Agents

curl https://www.littlenudge.app/api/marketplace/agents

2. Submit Your Agent (x402 Payment Required)

# Step 1: Get payment requirements
curl -X POST https://www.littlenudge.app/api/marketplace/submit \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MyAgent",
    "icon": "🤖",
    "description": "An AI assistant for...",
    "category": "productivity",
    "systemPrompt": "You are a helpful assistant that...",
    "pricing": { "perMessage": 0, "isFree": true },
    "creatorWallet": "0xYourWallet",
    "capabilities": ["task management", "reminders"]
  }'
# Returns 402 with payment instructions

# Step 2: Pay listing fee ($0.10 in $NUDGE tokens)
# Send NUDGE to: 0x2390C495896C78668416859d9dE84212fCB10801
# On Monad Testnet (Chain ID: 10143)

# Step 3: Submit with payment proof
curl -X POST https://www.littlenudge.app/api/marketplace/submit \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MyAgent",
    "icon": "🤖",
    "description": "An AI assistant for...",
    "category": "productivity", 
    "systemPrompt": "You are a helpful assistant that...",
    "pricing": { "perMessage": 0, "isFree": true },
    "creatorWallet": "0xYourWallet",
    "capabilities": ["task management", "reminders"],
    "paymentProof": "0xYourTxHash"
  }'

API Reference

GET /api/marketplace/agents

List all marketplace agents.

Query Parameters:

  • category - Filter by: wellness, productivity, lifestyle, entertainment, or all
  • search - Search by name, description, or capabilities

Response:

{
  "agents": [
    {
      "id": "nudge-coach",
      "name": "Nudge Coach",
      "icon": "🌱",
      "description": "Your wellness companion...",
      "category": "wellness",
      "price": 0,
      "isFree": true,
      "rating": 4.9,
      "totalRatings": 2341,
      "usageCount": 15420,
      "featured": true,
      "triggers": ["check-in", "mood", "wellness"],
      "capabilities": ["daily check-ins", "mood tracking"]
    }
  ],
  "total": 16,
  "categories": ["wellness", "productivity", "lifestyle", "entertainment"]
}

POST /api/marketplace/submit

Submit a new agent to the marketplace.

x402 Protocol Flow:

  1. POST without paymentProof → Returns 402 Payment Required
  2. Pay listing fee (0.10 USDC equivalent in $NUDGE)
  3. POST with paymentProof (tx hash) → Agent created

Request Body:

{
  "name": "Agent Name",
  "icon": "🤖",
  "description": "What your agent does (10-500 chars)",
  "category": "wellness|productivity|lifestyle|entertainment",
  "systemPrompt": "The system prompt for your agent (min 20 chars)",
  "pricing": {
    "perMessage": 0,
    "isFree": true
  },
  "creatorWallet": "0x...",
  "capabilities": ["capability1", "capability2"],
  "paymentProof": "0xTransactionHash"
}

402 Response (Payment Required):

{
  "error": "Payment Required",
  "amount": 100000,
  "currency": "USDC",
  "recipientWallet": "0x2390C495896C78668416859d9dE84212fCB10801",
  "network": "Base",
  "x402": {
    "version": "1.0",
    "accepts": ["usdc"],
    "price": 100000,
    "payTo": "0x2390C495896C78668416859d9dE84212fCB10801"
  }
}

Success Response:

{
  "success": true,
  "agent": {
    "id": "myagent-abc123",
    "name": "MyAgent",
    "status": "live"
  }
}

GET /api/marketplace/submit

Query submitted agents.

Query Parameters:

  • wallet - Get all agents submitted by a wallet address
  • id - Get specific agent by ID

Payment Details

FieldValue
Token$NUDGE
Amount100,000 (6 decimals = $0.10)
Recipient0x2390C495896C78668416859d9dE84212fCB10801
NetworkMonad Testnet (Chain ID: 10143)
Token Address0xaEb52D53b6c3265580B91Be08C620Dc45F57a35F

Agent Categories

CategoryDescription
wellnessHealth, meditation, fitness, mental wellness
productivityTasks, habits, focus, time management
lifestyleFood, travel, books, recommendations
entertainmentMovies, music, games, trivia

Pricing Model

Agents can be:

  • Free (isFree: true) - No charge per message
  • Paid (isFree: false, perMessage: X) - X is in microcents (10000 = $0.01)

Paid agents earn $NUDGE tokens when users interact with them.

Example: Submit Agent with TypeScript

import { createWalletClient, http, parseUnits } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';

const API_URL = 'https://www.littlenudge.app';
const NUDGE_TOKEN = '0xaEb52D53b6c3265580B91Be08C620Dc45F57a35F';
const PLATFORM_WALLET = '0x2390C495896C78668416859d9dE84212fCB10801';
const LISTING_FEE = parseUnits('0.1', 6); // $0.10

async function submitAgent(agent: AgentSubmission, privateKey: string) {
  // Step 1: Try submission to get payment requirements
  const res1 = await fetch(`${API_URL}/api/marketplace/submit`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(agent),
  });
  
  if (res1.status !== 402) throw new Error('Expected 402');
  
  // Step 2: Pay listing fee
  const account = privateKeyToAccount(privateKey);
  const walletClient = createWalletClient({
    account,
    chain: monadTestnet,
    transport: http(),
  });
  
  const txHash = await walletClient.writeContract({
    address: NUDGE_TOKEN,
    abi: erc20Abi,
    functionName: 'transfer',
    args: [PLATFORM_WALLET, LISTING_FEE],
  });
  
  // Step 3: Submit with payment proof
  const res2 = await fetch(`${API_URL}/api/marketplace/submit`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ ...agent, paymentProof: txHash }),
  });
  
  return res2.json();
}

Resources

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…