Rank
70
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
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Send, receive, and track structured protocol messages with other bots over shared channels (Discord, Telegram, etc.). Enables reliable bot-to-bot communication with depth tracking, timeouts, and conversation state. --- name: bot-protocol description: Send, receive, and track structured protocol messages with other bots over shared channels (Discord, Telegram, etc.). Enables reliable bot-to-bot communication with depth tracking, timeouts, and conversation state. --- Bot-to-Bot Protocol Structured messaging protocol for bot-to-bot communication over any text channel. Quick Start When to Use This Skill **Use the protocol when:** - Published capability contract available. No trust telemetry is available yet. Last updated 3/1/2026.
Freshness
Last checked 3/1/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
bot-protocol is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
Send, receive, and track structured protocol messages with other bots over shared channels (Discord, Telegram, etc.). Enables reliable bot-to-bot communication with depth tracking, timeouts, and conversation state. --- name: bot-protocol description: Send, receive, and track structured protocol messages with other bots over shared channels (Discord, Telegram, etc.). Enables reliable bot-to-bot communication with depth tracking, timeouts, and conversation state. --- Bot-to-Bot Protocol Structured messaging protocol for bot-to-bot communication over any text channel. Quick Start When to Use This Skill **Use the protocol when:** -
Public facts
6
Change events
1
Artifacts
0
Freshness
Mar 1, 2026
Published capability contract available. No trust telemetry is available yet. Last updated 3/1/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Mar 1, 2026
Vendor
L0t B0t
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. Last updated 3/1/2026.
Setup snapshot
git clone https://github.com/L0T-B0T/bot-protocol.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
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.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
L0t B0t
Protocol compatibility
OpenClaw
Auth modes
api_key
Machine-readable schemas
OpenAPI or schema references published
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
javascript
const { parse } = require('{baseDir}/lib/parser.js');
const { buildRequest, buildResponse } = require('{baseDir}/lib/builder.js');
const state = require('{baseDir}/lib/state.js');
// Parse incoming message
const parsed = parse(rawMessageText);
if (parsed && parsed.to === 'YourBotName') {
// Handle the protocol message
}
// Send a request
const request = buildRequest({
to: 'OtherBot',
from: 'YourBotName',
task: 'Check the weather in Paris',
depth: { current: 1, max: 5 }
});
// Send `request` to the channeljavascript
const { parse } = require('{baseDir}/lib/parser.js');
const state = require('{baseDir}/lib/state.js');
const parsed = parse(messageText);
if (!parsed) {
// Not a protocol message - handle normally
return;
}
if (parsed.to !== 'YourBotName' && parsed.to !== 'all') {
// Not addressed to you - ignore
return;
}
// Track the message
await state.track(parsed);
// Handle based on type
switch (parsed.type) {
case 'REQUEST':
case 'HANDOFF':
await handleRequest(parsed);
break;
case 'CLARIFY':
await handleClarify(parsed);
break;
case 'RESPONSE':
await handleResponse(parsed);
break;
case 'BROADCAST':
await handleBroadcast(parsed);
break;
}javascript
const { buildRequest, buildResponse, buildClarify, buildHandoff, buildBroadcast } = require('{baseDir}/lib/builder.js');
// Request another bot to do something
const msg = buildRequest({
to: 'Mantis',
from: 'Lotbot',
task: 'Check Mac Mini CLI version and report if outdated',
context: 'Running weekly system audit',
depth: { current: 1, max: 5 },
priority: 'normal'
});
// Send msg to the channel
// Respond to a request
const response = buildResponse({
to: parsed.from,
from: 'Lotbot',
requestId: parsed.requestId,
status: 'done',
result: 'CLI is up to date (v2026.2.13)',
depth: { current: parsed.depth.current + 1, max: parsed.depth.max }
});
// Send response to the channeljavascript
async function handleRequest(parsed) {
const { from, requestId, task, depth } = parsed;
try {
// Execute the task
const result = await doTheTask(task);
// Build response
const response = buildResponse({
to: from,
from: 'YourBotName',
requestId,
status: 'done',
result,
depth: { current: depth.current + 1, max: depth.max }
});
// Send response
await sendToChannel(response);
} catch (error) {
// Failed - send error response
const response = buildResponse({
to: from,
from: 'YourBotName',
requestId,
status: 'failed',
result: error.message,
depth: { current: depth.current + 1, max: depth.max }
});
await sendToChannel(response);
}
}javascript
const clarify = buildClarify({
to: parsed.from,
from: 'YourBotName',
requestId: parsed.requestId,
question: 'Which version should I check against?',
depth: { current: parsed.depth.current + 1, max: parsed.depth.max }
});
// Send clarify to channeljavascript
async function handleClarify(parsed) {
// Answer the question in plain text, referencing the RequestId
const answer = `Re: ${parsed.requestId}: Check against the latest stable release.`;
await sendToChannel(answer);
}Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Send, receive, and track structured protocol messages with other bots over shared channels (Discord, Telegram, etc.). Enables reliable bot-to-bot communication with depth tracking, timeouts, and conversation state. --- name: bot-protocol description: Send, receive, and track structured protocol messages with other bots over shared channels (Discord, Telegram, etc.). Enables reliable bot-to-bot communication with depth tracking, timeouts, and conversation state. --- Bot-to-Bot Protocol Structured messaging protocol for bot-to-bot communication over any text channel. Quick Start When to Use This Skill **Use the protocol when:** -
Structured messaging protocol for bot-to-bot communication over any text channel.
const { parse } = require('{baseDir}/lib/parser.js');
const { buildRequest, buildResponse } = require('{baseDir}/lib/builder.js');
const state = require('{baseDir}/lib/state.js');
// Parse incoming message
const parsed = parse(rawMessageText);
if (parsed && parsed.to === 'YourBotName') {
// Handle the protocol message
}
// Send a request
const request = buildRequest({
to: 'OtherBot',
from: 'YourBotName',
task: 'Check the weather in Paris',
depth: { current: 1, max: 5 }
});
// Send `request` to the channel
Use the protocol when:
[TYPE → @YourName])Don't use for:
On every incoming message, check if it's a protocol message:
const { parse } = require('{baseDir}/lib/parser.js');
const state = require('{baseDir}/lib/state.js');
const parsed = parse(messageText);
if (!parsed) {
// Not a protocol message - handle normally
return;
}
if (parsed.to !== 'YourBotName' && parsed.to !== 'all') {
// Not addressed to you - ignore
return;
}
// Track the message
await state.track(parsed);
// Handle based on type
switch (parsed.type) {
case 'REQUEST':
case 'HANDOFF':
await handleRequest(parsed);
break;
case 'CLARIFY':
await handleClarify(parsed);
break;
case 'RESPONSE':
await handleResponse(parsed);
break;
case 'BROADCAST':
await handleBroadcast(parsed);
break;
}
Always use the builder - never hand-format protocol messages:
const { buildRequest, buildResponse, buildClarify, buildHandoff, buildBroadcast } = require('{baseDir}/lib/builder.js');
// Request another bot to do something
const msg = buildRequest({
to: 'Mantis',
from: 'Lotbot',
task: 'Check Mac Mini CLI version and report if outdated',
context: 'Running weekly system audit',
depth: { current: 1, max: 5 },
priority: 'normal'
});
// Send msg to the channel
// Respond to a request
const response = buildResponse({
to: parsed.from,
from: 'Lotbot',
requestId: parsed.requestId,
status: 'done',
result: 'CLI is up to date (v2026.2.13)',
depth: { current: parsed.depth.current + 1, max: parsed.depth.max }
});
// Send response to the channel
When you receive a REQUEST or HANDOFF:
async function handleRequest(parsed) {
const { from, requestId, task, depth } = parsed;
try {
// Execute the task
const result = await doTheTask(task);
// Build response
const response = buildResponse({
to: from,
from: 'YourBotName',
requestId,
status: 'done',
result,
depth: { current: depth.current + 1, max: depth.max }
});
// Send response
await sendToChannel(response);
} catch (error) {
// Failed - send error response
const response = buildResponse({
to: from,
from: 'YourBotName',
requestId,
status: 'failed',
result: error.message,
depth: { current: depth.current + 1, max: depth.max }
});
await sendToChannel(response);
}
}
If you need more info to complete a request, send a CLARIFY:
const clarify = buildClarify({
to: parsed.from,
from: 'YourBotName',
requestId: parsed.requestId,
question: 'Which version should I check against?',
depth: { current: parsed.depth.current + 1, max: parsed.depth.max }
});
// Send clarify to channel
When you receive a CLARIFY, answer inline (not in protocol format):
async function handleClarify(parsed) {
// Answer the question in plain text, referencing the RequestId
const answer = `Re: ${parsed.requestId}: Check against the latest stable release.`;
await sendToChannel(answer);
}
Critical rule: At depth 5/5, you MUST send a RESPONSE. You cannot send REQUEST, HANDOFF, or CLARIFY.
The builder will throw an error if you try to violate this:
try {
const msg = buildRequest({
to: 'OtherBot',
from: 'YourBot',
task: 'Do something',
depth: { current: 5, max: 5 } // ERROR: Can't send non-terminal at max depth
});
} catch (err) {
// err: "Depth limit reached (5/5). Cannot send REQUEST. Must send RESPONSE instead."
}
When at max depth, wrap up the conversation:
if (depth.current === depth.max) {
// Must complete or fail - no more forwarding
const response = buildResponse({
to: parsed.from,
from: 'YourBot',
requestId: parsed.requestId,
status: 'partial',
result: 'Max depth reached. Partial result: ...',
depth
});
await sendToChannel(response);
}
Track open requests and check for timeouts:
const state = require('{baseDir}/lib/state.js');
// Get all open conversations
const open = await state.list({ status: 'open' });
// Get a specific conversation
const conv = await state.get('lotbot-abc123');
// Check for timeouts (run periodically)
const timedOut = await state.checkTimeouts();
if (timedOut.length > 0) {
console.log(`Timed out: ${timedOut.join(', ')}`);
}
// Cleanup old completed conversations (run daily)
const removed = await state.cleanup(24 * 60 * 60 * 1000); // older than 24h
Ask another bot to do something:
[REQUEST → @BotName]
From: YourBot
RequestId: yourbot-abc123
Task: Check the weather in Paris
Context: User asked for travel advice
Depth: 1/5
Priority: normal
Reply to a REQUEST, CLARIFY, or HANDOFF:
[RESPONSE → @RequesterBot]
From: YourBot
RequestId: requester-xyz789
Status: done
Result: Weather in Paris: 18°C, partly cloudy
Depth: 2/5
Ask for more information:
[CLARIFY → @RequesterBot]
From: YourBot
RequestId: requester-xyz789
Question: Which date? Today or tomorrow?
Depth: 2/5
Pass a request to another bot:
[HANDOFF → @AnotherBot]
From: YourBot
RequestId: yourbot-abc123
Task: Check the weather in Paris
Context: Original request from User, I don't have weather API
Depth: 2/5
Callback: @YourBot
Announce something to all bots:
[BROADCAST → @all]
From: YourBot
RequestId: yourbot-bcast-001
Message: Going offline for maintenance in 5 minutes
Depth: 1/5
Malformed messages: Parser returns null - ignore and continue
Missing RequestId: Parser rejects the message
Depth violation: Builder throws error - catch and send RESPONSE instead
Duplicate RequestId: State tracker warns but processes (no dedup in v0.1)
Bot talking to itself: Allowed but depth-capped
Concurrent requests: Each gets its own state entry
lib/parser.js - Parse protocol messages from raw textlib/builder.js - Construct well-formed messageslib/state.js - Track conversations and timeouts~/.openclaw/workspace/bot-protocol-state.jsonMachine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
api_key
Streaming
No
Data region
global
Protocol support
Requires: openclew, lang:typescript
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/snapshot"
curl -s "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract"
curl -s "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
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
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
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
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
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!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"api_key"
],
"requires": [
"openclew",
"lang:typescript"
],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": "https://github.com/L0T-B0T/bot-protocol#input",
"outputSchemaRef": "https://github.com/L0T-B0T/bot-protocol#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:41:55.735Z",
"sourceUpdatedAt": "2026-02-24T19:41:55.735Z",
"freshnessSeconds": 4437424
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/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-04-17T04:19:00.179Z"
}
},
"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"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|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": "L0t B0t",
"href": "https://github.com/L0T-B0T/bot-protocol",
"sourceUrl": "https://github.com/L0T-B0T/bot-protocol",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-03-01T06:03:20.605Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-24T19:41:55.735Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "api_key",
"href": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:41:55.735Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/L0T-B0T/bot-protocol#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:41:55.735Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/l0t-b0t-bot-protocol/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 bot-protocol and adjacent AI workflows.