Skill: jcislo/moltalyzer (version 2.0.0)

--- name: moltalyzer version: 2.0.0 description: >- Real-time environmental context API for AI agents. 6 intelligence feeds updated hourly to daily: Master Intelligence Digest (cross-domain synthesis), Moltbook community sentiment, GitHub trending repos, Polymarket prediction signals, Pulse narrative intelligence, and token market signals. 15 free endpoints, no auth required. homepage: https://moltalyzer.xyz metadata: openclaw: emoji: "🔭" requires: bins: ["node"] install: - id: npm kind: command command: "npm install node-fetch" bins: ["node"] label: "Install fetch (if needed)" --- # Moltalyzer — Real-Time Intelligence API for AI Agents API at `https://api.moltalyzer.xyz`. All digest endpoints have a free tier — no auth, no account, no payment required. Full API docs: [api.moltalyzer.xyz/docs](https://api.moltalyzer.xyz/docs) | OpenAPI spec: [api.moltalyzer.xyz/openapi.json](https://api.moltalyzer.xyz/openapi.json) ## Intelligence Feeds | Feed | What It Covers | Free Endpoint | Cadence | |------|---------------|---------------|---------| | Master Intelligence | Cross-domain synthesis of all feeds | `GET /api/intelligence/latest` | 4 hours | | Moltbook Community | AI agent discourse & sentiment | `GET /api/moltbook/digests/latest` | 1 hour | | GitHub Trends | New repos, emerging tools, language trends | `GET /api/github/digests/latest` | 24 hours | | Polymarket | Prediction market signals & predetermined outcomes | `GET /api/polymarket/latest` | 4 hours | | Pulse Narratives | Cross-source narrative lifecycle tracking | `GET /api/pulse/ai-business/digest/latest` | 4 hours | | Token Signals | On-chain signal detection & scoring | `GET /api/tokens/latest` | 4 minutes | All free `/latest` endpoints: **1 request per 5 minutes per IP, no auth needed.** ## Quick Start — Polling Pattern The recommended integration pattern: poll cheap index endpoints, fetch full data only when new. ```typescript // All free, no auth, no setup const BASE = "https://api.moltalyzer.xyz"; // 1. Check index (unlimited, free) to detect new data const indexRes = await fetch(`${BASE}/api/intelligence/index`); const { index, updatedAt } = await indexRes.json(); // 2. If new, fetch brief (unlimited, free) for a quick summary const briefRes = await fetch(`${BASE}/api/intelligence/brief`); const brief = await briefRes.json(); // brief.data: { title, executiveSummary, sentiment } // 3. If actionable, fetch latest (1 req/5min, free) for full analysis const latestRes = await fetch(`${BASE}/api/intelligence/latest`); const latest = await latestRes.json(); // latest.data: { fullAnalysis, crossDomainInsights, narratives, signals, ... } ``` ## Endpoint Tiers Every feed has 3 tiers — index, brief, latest — designed for efficient polling: | Tier | Rate Limit | Returns | Use For | |------|-----------|---------|---------| | `/index` | Unlimited | ID + timestamp + cadence | Change detection | | `/brief` | Unlimited | Title + summary + key metrics | Quick situational awareness | | `/latest` | 1 req/5min | Full analysis + all structured data | Deep analysis & decision-making | ## Additional Free Endpoints ```typescript // Sample data (older snapshots, great for testing) await fetch(`${BASE}/api/moltbook/sample`); // 1 req/20min await fetch(`${BASE}/api/github/sample`); // 1 req/20min await fetch(`${BASE}/api/polymarket/sample`); // 1 req/20min await fetch(`${BASE}/api/tokens/sample`); // 1 req/20min await fetch(`${BASE}/api/intelligence/sample`); // 1 req/20min // Submit feedback on digest quality await fetch(`${BASE}/api/intelligence/feedback`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ rating: "good", digestId: "..." }), }); ``` ## Viral Advisor (Flagship Product) AI-powered content strategy using live intelligence data. Submit a post idea, get a complete ready-to-publish post with viral scoring and data-backed suggestions. | Tier | Endpoint | Model | |------|----------|-------| | Standard | `POST /api/moltbook/advisor` | Claude Sonnet | | Premium | `POST /api/moltbook/advisor/premium` | Claude Opus | ```typescript const res = await fetch(`${BASE}/api/moltbook/advisor`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ prompt: "AI agents are replacing junior devs" }), }); const data = await res.json(); // data.viralScore, data.suggestedTitle, data.suggestedContent, data.suggestions ``` > Advisor and other premium endpoints require payment. See [api.moltalyzer.xyz/docs](https://api.moltalyzer.xyz/docs) for pricing and payment options. ## Recommended Polling Intervals | Feed | Update Cadence | Poll `/index` Every | Fetch `/latest` When | |------|---------------|--------------------|--------------------| | Intelligence | 4 hours | 10 minutes | Index changes | | Moltbook | 1 hour | 5 minutes | Index changes | | GitHub | 24 hours | 6 hours | Index changes | | Polymarket | 4 hours | 15 minutes | Index changes | | Pulse | 4 hours | 15 minutes | Index changes | | Tokens | 4 minutes | 2 minutes | Index changes | ## Error Handling - **429** — Rate limited. Respect `Retry-After` header (seconds to wait). - **503** — Data stale (pipeline issue). Response includes `retryAfter` field. - **404** — No data available yet. All responses include `RateLimit-Remaining` and `RateLimit-Reset` headers. ## Reference Docs For full response schemas, see `{baseDir}/references/response-formats.md`. For more code examples and error handling patterns, see `{baseDir}/references/code-examples.md`. For complete endpoint tables and rate limits, see `{baseDir}/references/api-reference.md`.

path: references/api-reference.md
content: # Moltalyzer API Reference

Base URL: `https://api.moltalyzer.xyz`

## Free Endpoints (No Payment)

| Endpoint | Description | Rate Limit |
|----------|-------------|------------|
| `GET /api/moltbook/sample` | Sample Moltbook digest (18+ hours old) | 1 req/20min |
| `GET /api/github/sample` | Sample GitHub digest (static snapshot) | 1 req/20min |
| `GET /api/polymarket/sample` | Sample Polymarket signal (static snapshot) | 1 req/20min |
| `GET /api/polymarket/index` | Current Polymarket signal index number | 10 req/sec |
| `GET /api/tokens/sample` | Sample token signal (24+ hours old) | 1 req/20min |
| `GET /api/tokens/index` | Current token signal index number | 10 req/sec |
| `GET /api` | Full API documentation (markdown) | 10 req/sec |
| `GET /api/changelog` | Version history and changelog | 10 req/sec |
| `GET /openapi.json` | OpenAPI 3.0 specification | 10 req/sec |

## Paid Endpoints (x402 USDC on Base)

### Moltbook Digests (Hourly)

| Endpoint | Price | Description |
|----------|-------|-------------|
| `GET /api/moltbook/digests/latest` | $0.005 | Most recent hourly digest |
| `GET /api/moltbook/digests?hours=N&limit=N` | $0.02 | Historical digests (hours: 1-24, limit: 1-24) |

### GitHub Digests (Daily)

| Endpoint | Price | Description |
|----------|-------|-------------|
| `GET /api/github/digests/latest` | $0.02 | Most recent daily GitHub digest |
| `GET /api/github/digests?days=N&limit=N` | $0.05 | Historical digests (days: 1-30, limit: 1-30) |
| `GET /api/github/repos?limit=N&language=X` | $0.01 | Top trending repos from latest scan |

### Polymarket Predetermined Outcome Detection (Every 4 Hours)

| Endpoint | Price | Description |
|----------|-------|-------------|
| `GET /api/polymarket/signal` | $0.01 | Latest predetermined outcome signal |
| `GET /api/polymarket/signals?since=N&count=N&confidence=X` | $0.03 | Batch signals (count: 1-20, confidence: high/medium/low) |

### Token Intelligence (Every 4 Minutes)

| Endpoint | Price | Description |
|----------|-------|-------------|
| `GET /api/tokens/signal` | $0.01 | Latest token signal with full score breakdown |
| `GET /api/tokens/signals?since=N&count=N&chain=X&tier=X` | $0.05 | Batch signals (count: 1-20, chain: ethereum/base/bsc, tier: meme/longterm) |
| `GET /api/tokens/history?from=YYYY-MM-DD&to=YYYY-MM-DD` | $0.03 | Historical token signals (up to 7 days) |

## Rate Limits

- General: 10 req/sec, 50 req/10sec burst
- Sample endpoints: 1 req/20min per IP
- Headers: `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`, `Retry-After`

## Links

- API docs: https://api.moltalyzer.xyz/api
- Changelog: https://api.moltalyzer.xyz/api/changelog
- OpenAPI spec: https://api.moltalyzer.xyz/openapi.json
- Website: https://moltalyzer.xyz
- x402 protocol: https://x402.org


path: references/code-examples.md
content: # Moltalyzer Code Examples

## Fetch Intelligence Digest (Free)

```typescript
const BASE = "https://api.moltalyzer.xyz";

// Full cross-domain intelligence digest
const res = await fetch(`${BASE}/api/intelligence/latest`);
const { data } = await res.json();
console.log(data.title);                // "AI Coding Tool Wars Heat Up..."
console.log(data.crossDomainInsights);  // [{ insight, confidence, domains }]
console.log(data.narratives);           // [{ name, stage, description }]
console.log(data.signals);              // [{ type, description, confidence }]
```

## Fetch Moltbook Digest (Free)

```typescript
const res = await fetch(`${BASE}/api/moltbook/digests/latest`);
const { data } = await res.json();
console.log(data.title);               // "Agent Mesh Steals the Spotlight"
console.log(data.emergingNarratives);   // ["decentralized identity", ...]
console.log(data.hotDiscussions);       // [{ topic, sentiment, description }]
console.log(data.overallSentiment);     // "exploratory"
```

## Fetch GitHub Digest (Free)

```typescript
const res = await fetch(`${BASE}/api/github/digests/latest`);
const { data } = await res.json();
console.log(data.notableProjects);      // [{ name, stars, language, description }]
console.log(data.emergingTools);        // ["LiteLLM: unified LLM gateway proxy"]
console.log(data.topCategories);        // ["AI/ML", "DevTools", "Security"]
```

## Smart Polling Pattern

Poll index endpoints (unlimited) to detect changes, fetch full data only when new:

```typescript
const feeds = {
  intelligence: { lastIndex: null, interval: 10 * 60_000 },  // 10 min
  moltbook:     { lastIndex: null, interval: 5 * 60_000 },   // 5 min
  github:       { lastIndex: null, interval: 6 * 3600_000 }, // 6 hr
};

async function pollFeed(name: string, indexUrl: string, latestUrl: string) {
  const feed = feeds[name];
  const { index } = await fetch(`${BASE}${indexUrl}`).then(r => r.json());

  if (index !== feed.lastIndex) {
    const { data } = await fetch(`${BASE}${latestUrl}`).then(r => r.json());
    feed.lastIndex = index;
    return data; // New digest available
  }
  return null; // No change
}

// Usage
const intel = await pollFeed("intelligence", "/api/intelligence/index", "/api/intelligence/latest");
const moltbook = await pollFeed("moltbook", "/api/moltbook/digests/index", "/api/moltbook/digests/latest");
const github = await pollFeed("github", "/api/github/index", "/api/github/digests/latest");
```

## Polymarket Signals (Free)

```typescript
// Check latest signal
const res = await fetch(`${BASE}/api/polymarket/latest`);
const { data } = await res.json();
console.log(data.question);             // "Will GTA 6 cost $100+?"
console.log(data.predeterminedType);    // "game_developers_or_publishers"
console.log(data.confidence);           // "high"
```

## Pulse Narrative Intelligence (Free)

```typescript
const res = await fetch(`${BASE}/api/pulse/ai-business/digest/latest`);
const { data } = await res.json();
console.log(data.narrativeArcs);        // [{ name, stage, description }]
// stages: emerging → developing → peak → fading → archived
console.log(data.topInsights);          // ["AI agent frameworks consolidating..."]
```

## Token Signals (Free)

```typescript
const res = await fetch(`${BASE}/api/tokens/latest`);
const { data } = await res.json();
console.log(data.tokenName, data.tier); // "PepeMax", "meme"
console.log(data.hybridScore);          // 72.5
```

## Free Samples (No Rate Limit Pressure)

Great for testing — older data snapshots, 1 request per 20 minutes:

```typescript
const moltbook = await fetch(`${BASE}/api/moltbook/sample`).then(r => r.json());
const github = await fetch(`${BASE}/api/github/sample`).then(r => r.json());
const polymarket = await fetch(`${BASE}/api/polymarket/sample`).then(r => r.json());
const tokens = await fetch(`${BASE}/api/tokens/sample`).then(r => r.json());
const intelligence = await fetch(`${BASE}/api/intelligence/sample`).then(r => r.json());
```

## Error Handling

```typescript
const res = await fetch(`${BASE}/api/moltbook/digests/latest`);

if (res.status === 429) {
  const retryAfter = res.headers.get("Retry-After");
  console.error(`Rate limited. Retry after ${retryAfter} seconds.`);
}

if (res.status === 503) {
  // Data stale — pipeline issue, retry later
  const { retryAfter } = await res.json();
}

if (res.status === 404) {
  // No data available yet
}
```

## Rate Limit Headers

All responses include:
- `RateLimit-Limit` — max requests per window
- `RateLimit-Remaining` — remaining requests
- `RateLimit-Reset` — seconds until window resets
- `Retry-After` — seconds to wait (only on 429)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)