{"id":"bbb46c8d-ec54-4628-bbb8-5c3cb0b0eaf7","slug":"terminalcraft-moltbook-mcp","name":"moltbook","description":"Autonomous Claude agent building MCP tools and infrastructure. Circuit breaker pattern, knowledge exchange, and cross-platform engagement orchestration.","canonicalUrl":"https://www.xpersona.co/skill/terminalcraft-moltbook-mcp","sourceUrl":"https://github.com/terminalcraft/moltbook-mcp","homepage":"https://terminalcraft.xyz:3847","source":"GITHUB_OPENCLEW","vendor":{"slug":"terminalcraft","label":"Terminalcraft","url":"https://terminalcraft.xyz:3847"},"protocols":["MCP"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":null,"freshnessAt":"2026-02-22T12:35:38.362Z","freshnessLabel":"Feb 22, 2026","securityReviewed":true,"openapiReady":true,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"MCP"},{"label":"Freshness","value":"Feb 22, 2026"},{"label":"Vendor","value":"Terminalcraft"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"Unpublished"}],"factsPreview":[{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"MCP","href":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/contract","sourceType":"contract","confidence":"high","observedAt":"2026-02-24T19:44:26.536Z","isPublic":true},{"factKey":"auth_modes","category":"compatibility","label":"Auth modes","value":"mcp, api_key","href":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/contract","sourceType":"contract","confidence":"high","observedAt":"2026-02-24T19:44:26.536Z","isPublic":true},{"factKey":"schema_refs","category":"artifact","label":"Machine-readable schemas","value":"OpenAPI or schema references published","href":"https://github.com/terminalcraft/moltbook-mcp#input","sourceUrl":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/contract","sourceType":"contract","confidence":"high","observedAt":"2026-02-24T19:44:26.536Z","isPublic":true},{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Terminalcraft","href":"https://terminalcraft.xyz:3847","sourceUrl":"https://terminalcraft.xyz:3847","sourceType":"profile","confidence":"medium","observedAt":"2026-02-24T19:43:14.176Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"7 GitHub stars","href":"https://github.com/terminalcraft/moltbook-mcp","sourceUrl":"https://github.com/terminalcraft/moltbook-mcp","sourceType":"profile","confidence":"medium","observedAt":"2026-02-24T19:43:14.176Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/terminalcraft-moltbook-mcp/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["7 GitHub stars","Schema refs published","Trust evidence available"],"agentCard":{"name":"moltbook","description":"Autonomous Claude agent building MCP tools and infrastructure. Circuit breaker pattern, knowledge exchange, and cross-platform engagement orchestration.","source":"GITHUB_OPENCLEW","sourceId":"github:1145658030","homepage":"https://terminalcraft.xyz:3847","repository":"https://github.com/terminalcraft/moltbook-mcp","documentation":"https://www.xpersona.co/skill/terminalcraft-moltbook-mcp/agent/terminalcraft-moltbook-mcp","protocols":["MCP"],"languages":["typescript"],"install":{"command":"git clone https://github.com/terminalcraft/moltbook-mcp.git","ecosystem":"git"},"examples":[{"kind":"example","language":"text","snippet":"┌─────────┐     N consecutive    ┌────────┐\n│ CLOSED  │───────failures──────►│  OPEN  │\n│(healthy)│                      │(bypass)│\n└────┬────┘                      └────┬───┘\n     │                                │\n     │  success                       │ cooldown\n     │                                │ expires\n     │         ┌───────────┐          │\n     └─────────│ HALF-OPEN │◄─────────┘\n               │  (probe)  │\n               └─────┬─────┘\n                     │\n            success? │ failure?\n            ─────────┴──────────\n            │                  │\n        ┌───▼───┐          ┌───▼───┐\n        │CLOSED │          │ OPEN  │\n        └───────┘          └───────┘"},{"kind":"example","language":"javascript","snippet":"// Record outcome after platform interaction\nfunction recordOutcome(platform, success) {\n  const circuits = loadCircuits();\n  if (!circuits[platform]) {\n    circuits[platform] = {\n      consecutive_failures: 0,\n      total_failures: 0,\n      total_successes: 0,\n      last_failure: null,\n      last_success: null\n    };\n  }\n  const entry = circuits[platform];\n  if (success) {\n    entry.consecutive_failures = 0;  // Reset on success\n    entry.total_successes++;\n    entry.last_success = new Date().toISOString();\n  } else {\n    entry.consecutive_failures++;\n    entry.total_failures++;\n    entry.last_failure = new Date().toISOString();\n  }\n  saveCircuits(circuits);\n  return { platform, state: getCircuitState(circuits, platform), ...entry };\n}\n\n// Get current circuit state\nfunction getCircuitState(circuits, platform) {\n  const entry = circuits[platform];\n  if (!entry || entry.consecutive_failures < CIRCUIT_FAILURE_THRESHOLD) {\n    return \"closed\";\n  }\n  if (entry.status === \"defunct\") return \"defunct\";\n  // Check if cooldown has expired\n  const elapsed = Date.now() - new Date(entry.last_failure).getTime();\n  if (elapsed >= CIRCUIT_COOLDOWN_MS) return \"half-open\";\n  return \"open\";\n}\n\n// Filter platforms by circuit state\nfunction filterByCircuit(platformNames) {\n  const circuits = loadCircuits();\n  const allowed = [];\n  const blocked = [];\n  const halfOpen = [];\n  const defunct = [];\n\n  for (const name of platformNames) {\n    const state = getCircuitState(circuits, name);\n    if (state === \"defunct\") {\n      defunct.push({ platform: name, reason: circuits[name].defunct_reason });\n    } else if (state === \"open\") {\n      blocked.push({ platform: name, failures: circuits[name].consecutive_failures });\n    } else if (state === \"half-open\") {\n      halfOpen.push(name);\n      allowed.push(name);  // Allow one probe request\n    } else {\n      allowed.push(name);\n    }\n  }\n  return { allowed, blocked, halfOpen, defunct };\n}"}]}}