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
Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions. Use this for identity verification in approval workflows - deploy commands, financial operations, data access, admin operations, and change control. --- name: otp description: Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions. Use this for identity verification in approval workflows - deploy commands, financial operations, data access, admin operations, and change control. metadata: {"openclaw": {"emoji": "π", "homepage": "https://github.com/ryancnelson/otp-challenger", "requires": {"bins": [ Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Freshness
Last checked 4/14/2026
Best For
otp is best for challenge, check, with 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
Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions. Use this for identity verification in approval workflows - deploy commands, financial operations, data access, admin operations, and change control. --- name: otp description: Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions. Use this for identity verification in approval workflows - deploy commands, financial operations, data access, admin operations, and change control. metadata: {"openclaw": {"emoji": "π", "homepage": "https://github.com/ryancnelson/otp-challenger", "requires": {"bins": [
Public facts
4
Change events
1
Artifacts
0
Freshness
Apr 14, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Apr 14, 2026
Vendor
Ryancnelson
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Setup snapshot
git clone https://github.com/ryancnelson/otp-challenger.rename-switch.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
Ryancnelson
Protocol compatibility
OpenClaw
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
bash
clawhub install otp
bash
cd ~/.openclaw/skills git clone https://github.com/ryancnelson/otp-skill.git otp
bash
# Check what's available which jq && echo "β jq available" || echo "β Install: brew install jq" which python3 && echo "β python3 available" || echo "β Install: brew install python3" which oathtool && echo "β oathtool available" || echo "β Install: brew install oath-toolkit"
bash
cd ~/.openclaw/skills/otp ./generate-secret.sh "your-email@example.com"
yaml
# ~/.openclaw/config.yaml
security:
otp:
secret: "YOUR_BASE32_SECRET_HERE"
accountName: "user@example.com"
issuer: "OpenClaw"
intervalHours: 24 # Re-verify every 24 hoursbash
export OTP_SECRET="YOUR_BASE32_SECRET_HERE"
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions. Use this for identity verification in approval workflows - deploy commands, financial operations, data access, admin operations, and change control. --- name: otp description: Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions. Use this for identity verification in approval workflows - deploy commands, financial operations, data access, admin operations, and change control. metadata: {"openclaw": {"emoji": "π", "homepage": "https://github.com/ryancnelson/otp-challenger", "requires": {"bins": [
Purpose: Enable agents and skills to challenge users for fresh two-factor authentication proof before executing sensitive actions.
This skill provides identity verification for approval workflows. When your agent needs to execute a command with change-control concerns (deploying code, modifying infrastructure, accessing sensitive data, financial transactions), it can challenge the user to prove their identity with a time-based one-time password (TOTP).
This is not about securing your chat channelβit's about verifying identity before specific actions.
kubectl apply or terraform applyverify.sh with the user's ID and their 6-digit codecheck-status.sh to see if verification is still freshclawhub install otp
cd ~/.openclaw/skills
git clone https://github.com/ryancnelson/otp-skill.git otp
After installation, verify required dependencies:
# Check what's available
which jq && echo "β
jq available" || echo "β Install: brew install jq"
which python3 && echo "β
python3 available" || echo "β Install: brew install python3"
which oathtool && echo "β
oathtool available" || echo "β Install: brew install oath-toolkit"
Note: oathtool is optional - the skill includes a built-in TOTP generator, but oathtool provides additional validation.
Use the included secret generator:
cd ~/.openclaw/skills/otp
./generate-secret.sh "your-email@example.com"
This will display:
Alternative: Use any other TOTP secret generator. You need a base32-encoded secret.
Add the secret to your authenticator app:
Option A: In your OpenClaw config
# ~/.openclaw/config.yaml
security:
otp:
secret: "YOUR_BASE32_SECRET_HERE"
accountName: "user@example.com"
issuer: "OpenClaw"
intervalHours: 24 # Re-verify every 24 hours
Option B: In environment variable
export OTP_SECRET="YOUR_BASE32_SECRET_HERE"
Option C: In 1Password (recommended for security)
security:
otp:
secret: "op://vault/OpenClaw OTP/totp"
After configuring the secret, test that everything works:
# Get current code from your authenticator app (6 digits)
./verify.sh "testuser" "123456" # Replace with actual code
# Should show: β
OTP verified for testuser (valid for 24 hours)
# Check verification status
./check-status.sh "testuser"
# Should show: β
Valid for 23 more hours
# Test error case
./verify.sh "testuser" "000000"
# Should show: β Invalid OTP code
Full test suite available at: https://github.com/ryancnelson/otp-challenger
When your skill needs to verify user identity:
#!/bin/bash
# In your sensitive-action.sh
# Source the OTP skill
source ../otp/verify.sh
USER_ID="$1"
OTP_CODE="$2"
# Challenge the user
if ! verify_otp "$USER_ID" "$OTP_CODE"; then
echo "β OTP verification failed. Run: /otp <code>"
exit 1
fi
# Proceed with sensitive action
echo "β
Identity verified. Proceeding with deployment..."
kubectl apply -f production.yaml
#!/bin/bash
source ../otp/check-status.sh
if check_otp_status "$USER_ID"; then
echo "β
User verified within last 24 hours"
else
echo "β οΈ Verification expired. User must verify again."
fi
When prompted by a skill:
User: deploy to production
Agent: π This action requires identity verification. Please provide your OTP code.
User: /otp 123456
Agent: β
Identity verified. Deploying to production...
verify.sh <user_id> <code> - Verify OTP code and update statecheck-status.sh <user_id> - Check if user verification is still validgenerate-secret.sh <account_name> - Generate new TOTP secretget-current-code.sh <secret> - Get current valid code (testing only)Set these in your OpenClaw config or environment:
OTP_SECRET - Base32 TOTP secret (required)OTP_INTERVAL_HOURS - Verification expiry (default: 24)OTP_GRACE_PERIOD_MINUTES - Grace period after expiry (default: 15)OTP_STATE_FILE - State file path (default: memory/otp-state.json)intervalHours reasonable (8-24 hours)Verification state is stored in memory/otp-state.json:
{
"verifications": {
"user@example.com": {
"verifiedAt": 1706745600000,
"expiresAt": 1706832000000
}
}
}
No secrets are stored in stateβonly timestamps.
Required:
Optional:
totp.mjs standalone CLI#!/bin/bash
# skills/deploy/production.sh
source ../otp/verify.sh
USER="$1"
CODE="$2"
SERVICE="$3"
# Require OTP for production deploys
if ! verify_otp "$USER" "$CODE"; then
echo "π Production deployment requires OTP verification"
echo "Usage: deploy production <service> --otp <code>"
exit 1
fi
echo "β
Identity verified. Deploying $SERVICE to production..."
# ... deployment logic ...
#!/bin/bash
# skills/finance/transfer.sh
source ../otp/check-status.sh
USER="$1"
AMOUNT="$2"
RECIPIENT="$3"
# Check if user verified recently
if ! check_otp_status "$USER"; then
echo "π³ Large transfer requires fresh identity verification"
echo "Please verify with: /otp <code>"
exit 1
fi
echo "β
Processing transfer of \$$AMOUNT to $RECIPIENT"
# ... transfer logic ...
OTP should be invisible when not needed, obvious when required.
Don't force users to verify for every actionβthat trains them to treat it as a meaningless ritual. Only challenge when:
Think of OTP like sudoβyou use it before commands that matter, not every command.
OTP_SECRET environment variablesecurity.otp.secret in OpenClaw configmemory/ directory permissionsMIT
Issues and PRs welcome at: https://github.com/ryancnelson/otp-challenger
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/snapshot"
curl -s "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/contract"
curl -s "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/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
Do not use if
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": "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://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/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-17T05:14:50.999Z"
}
},
"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": "challenge",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "check",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "with",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "qr",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "read",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "still",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "generate",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:challenge|supported|profile capability:check|supported|profile capability:with|supported|profile capability:qr|supported|profile capability:read|supported|profile capability:still|supported|profile capability:generate|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": "Ryancnelson",
"href": "https://github.com/ryancnelson/otp-challenger.rename-switch",
"sourceUrl": "https://github.com/ryancnelson/otp-challenger.rename-switch",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-14T22:25:31.174Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-14T22:25:31.174Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/ryancnelson-otp-challenger-rename-switch/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 otp and adjacent AI workflows.