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
Bird identification, life list tracking, and trading card generation. Use this skill when the user: sends a bird photo to identify, says "set up my Birdfolio" or "set my region", asks "how's my checklist", asks "Birdfolio progress", asks "how many birds have I found", asks "show my Birdfolio" or "show my life list", asks "what's my rarest bird", or asks "tell me about [bird species]". Handles everything from first-time setup through ongoing life list tracking and visual trading card generation. --- name: birdfolio description: > Bird identification, life list tracking, and trading card generation. Use this skill when the user: sends a bird photo to identify, says "set up my Birdfolio" or "set my region", asks "how's my checklist", asks "Birdfolio progress", asks "how many birds have I found", asks "show my Birdfolio" or "show my life list", asks "what's my rarest bird", or asks "tell me about [bird species] Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Freshness
Last checked 2/25/2026
Best For
birdfolio is best for robin 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
Bird identification, life list tracking, and trading card generation. Use this skill when the user: sends a bird photo to identify, says "set up my Birdfolio" or "set my region", asks "how's my checklist", asks "Birdfolio progress", asks "how many birds have I found", asks "show my Birdfolio" or "show my life list", asks "what's my rarest bird", or asks "tell me about [bird species]". Handles everything from first-time setup through ongoing life list tracking and visual trading card generation. --- name: birdfolio description: > Bird identification, life list tracking, and trading card generation. Use this skill when the user: sends a bird photo to identify, says "set up my Birdfolio" or "set my region", asks "how's my checklist", asks "Birdfolio progress", asks "how many birds have I found", asks "show my Birdfolio" or "show my life list", asks "what's my rarest bird", or asks "tell me about [bird species]
Public facts
4
Change events
1
Artifacts
0
Freshness
Feb 25, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 25, 2026
Vendor
Thatshrimple
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 2/25/2026.
Setup snapshot
git clone https://github.com/thatshrimple/birdfolio.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
Thatshrimple
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
text
exec: python {baseDir}/scripts/init_birdfolio.py \
--telegram-id {senderTelegramId} \
--region "{region}" \
--api-url "https://api-production-d0e2.up.railway.app" \
--workspace <absolute path to birdfolio/ in your workspace>text
"{region} most common backyard birds eBird species list"
"{region} uncommon seasonal rare birds eBird checklist"
"{region} rare vagrant endangered birds eBird"json
{
"{region}": {
"common": [
{ "species": "American Robin", "slug": "american-robin", "found": false, "dateFound": null }
],
"rare": [...],
"superRare": [...]
}
}text
π¦
Birdfolio is set up for {region}!
Your checklist:
Common (10): American Robin, House Sparrow, ...
Rare (5): Great Blue Heron, ...
Super Rare: California Condor
Send me a bird photo to start collecting!text
> exec: copy "<attachment path>" "birdfolio/birds/<slug>-<timestamp>.jpg" >
text
Identify the bird species in this photo. Return JSON only:
{
"commonName": "...",
"scientificName": "...",
"confidence": "high|medium|low",
"features": ["visible feature 1", "visible feature 2"]
}Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Bird identification, life list tracking, and trading card generation. Use this skill when the user: sends a bird photo to identify, says "set up my Birdfolio" or "set my region", asks "how's my checklist", asks "Birdfolio progress", asks "how many birds have I found", asks "show my Birdfolio" or "show my life list", asks "what's my rarest bird", or asks "tell me about [bird species]". Handles everything from first-time setup through ongoing life list tracking and visual trading card generation. --- name: birdfolio description: > Bird identification, life list tracking, and trading card generation. Use this skill when the user: sends a bird photo to identify, says "set up my Birdfolio" or "set my region", asks "how's my checklist", asks "Birdfolio progress", asks "how many birds have I found", asks "show my Birdfolio" or "show my life list", asks "what's my rarest bird", or asks "tell me about [bird species]
Birdfolio turns bird photos into a personal life list. Users photograph birds in the wild, send the photo to you, and you identify the species with Vision. You.com provides real-time rarity and regional data. Each sighting is logged to a life list with a PokΓ©mon-inspired rarity tier (Common / Rare / Super Rare) and gets a visual trading card sent back via Telegram.
Data lives in: Railway PostgreSQL (via API) + local birdfolio/ folder (cards, birds, config)
Scripts live in: {baseDir}/scripts/
API: https://api-production-d0e2.up.railway.app (also saved to birdfolio/config.json after init)
Schema reference: {baseDir}/references/data-schema.md
Search queries: {baseDir}/references/you-search-queries.md
Note on --workspace & --api-url: Every data script accepts
--workspace(absolute path tobirdfolio/) and--api-url(API base URL). Afterinit_birdfolio.pyruns, both the API URL and Telegram ID are saved tobirdfolio/config.jsonand read automatically β subsequent scripts only need--workspace.Telegram ID: Read from the inbound message metadata (
sender_id). Pass as--telegram-idtoinit_birdfolio.pyon first setup.
Trigger: User says "Set up my Birdfolio", "set my region", or sends a photo before setup exists.
Check first: If birdfolio/config.json exists in your workspace, setup is already done β skip to the relevant flow.
Steps:
Ask: "What's your home region? (e.g. California, Texas, United Kingdom)"
Run to create the workspace folder structure and register the user in the API:
exec: python {baseDir}/scripts/init_birdfolio.py \
--telegram-id {senderTelegramId} \
--region "{region}" \
--api-url "https://api-production-d0e2.up.railway.app" \
--workspace <absolute path to birdfolio/ in your workspace>
Search You.com (run all three):
"{region} most common backyard birds eBird species list"
"{region} uncommon seasonal rare birds eBird checklist"
"{region} rare vagrant endangered birds eBird"
From results, build a checklist with 10 common, 5 rare, 1 super rare species. Use classification signals from {baseDir}/references/you-search-queries.md.
Write the populated checklist to birdfolio/checklist.json in your workspace:
{
"{region}": {
"common": [
{ "species": "American Robin", "slug": "american-robin", "found": false, "dateFound": null }
],
"rare": [...],
"superRare": [...]
}
}
Reply with a welcome message and checklist preview:
π¦
Birdfolio is set up for {region}!
Your checklist:
Common (10): American Robin, House Sparrow, ...
Rare (5): Great Blue Heron, ...
Super Rare: California Condor
Send me a bird photo to start collecting!
Trigger: User sends a photo.
Getting the photo file path: When a user sends a photo via Telegram, OpenClaw downloads it and makes the local file path available in the message attachment metadata. Capture this path β you'll need it for card generation in Step 5. If OpenClaw provides the image inline without a path, use
execto find the most recently downloaded file in OpenClaw's temp/media folder, or check%APPDATA%\openclaw\media\on Windows. Save the photo tobirdfolio/birds/{slug}-{timestamp}.jpgfor permanent storage:exec: copy "<attachment path>" "birdfolio/birds/<slug>-<timestamp>.jpg"
The submitted photo is directly visible in your context. Analyze it (or use the image tool if it's not inline):
Identify the bird species in this photo. Return JSON only:
{
"commonName": "...",
"scientificName": "...",
"confidence": "high|medium|low",
"features": ["visible feature 1", "visible feature 2"]
}
Rarity rules:
common, rare, or superRarebonus (shows a neutral "Bonus Find" badge, no rarity assigned)Confidence rules:
"high" β proceed automatically, no confirmation needed"medium" β ask: "I think this might be a [species] β based on [features]. Does that look right to you?" β wait for confirmation before continuing"low" β reply: "This photo isn't clear enough for me to be confident. Could you send a clearer shot?" β stop, do not log anythingSearch You.com:
"{commonName} {homeRegion} eBird frequency how common rare"
Classify using these signals:
| Tier | Script value | Signals |
|------|-------------|---------|
| Common π’ | common | "abundant", "widespread", "year-round resident", >50% of checklists |
| Rare π‘ | rare | "uncommon", "seasonal", "migratory", "occasional", 5β50% of checklists |
| Super Rare π΄ | superRare | "rare", "vagrant", "accidental", "endangered", <5% of checklists |
When unsure β default to rare. Always use the script value (e.g. superRare, not Super Rare) when passing --rarity to any script.
Search You.com:
"{commonName} bird interesting facts habitat behavior"
Extract one punchy fact (1β2 sentences).
Save the sighting to birdfolio/lifeList.json in your workspace:
exec: python {baseDir}/scripts/log_sighting.py \
--species "{commonName}" \
--scientific-name "{scientificName}" \
--rarity "{rarity}" \
--region "{homeRegion}" \
--notes "" \
--workspace <absolute path to birdfolio/ in your workspace>
Capture from output: isLifer, totalSightings, totalSpecies.
Mark the species as found in birdfolio/checklist.json:
exec: python {baseDir}/scripts/update_checklist.py \
--species "{commonName}" \
--region "{homeRegion}" \
--workspace <absolute path to birdfolio/ in your workspace>
The card is a two-column design: the user's photo fills the left panel (280px), a solid dark info panel sits on the right. Always use the user's actual submitted photo β not a stock image.
Step 6a β Detect bird position with Vision:
Use the image tool on the submitted photo:
"Where is the bird positioned horizontally in this photo? Give me approximately what percentage from the left edge the bird's center is (0β100)."
Convert the answer to a CSS value: "40% center", "60% center", "center center", etc. Use this as --object-position.
Step 6b β Generate the card HTML with the embedded photo:
exec: python {baseDir}/scripts/generate_card.py \
--species "{commonName}" \
--scientific-name "{scientificName}" \
--rarity "{rarity}" \
--region "{homeRegion}" \
--date "{YYYY-MM-DD}" \
--fun-fact "{funFact}" \
--image-path "<absolute path to submitted photo>" \
--object-position "{objectPosition}" \
--life-count {totalSpecies} \
--workspace <absolute path to birdfolio/ in your workspace>
--image-path embeds the user's actual photo as base64 directly into the HTML. No separate embed step needed.
Fallback if photo path is unavailable: omit --image-path and pass --image-url "<stock photo URL>" instead (find a URL via You.com: "{commonName} bird photo wildlife").
Capture cardPath from output.
Step 6c β Screenshot, save, upload, and send: Run the screenshot script to render the card at 600Γ400 and save a PNG:
exec: node {baseDir}/scripts/screenshot_card.js "<cardPath>"
Capture pngPath from output.
Upload to Cloudflare R2 and get a public URL:
exec: python {baseDir}/scripts/upload_card.py "<pngPath>"
Capture url from output.
Update the sighting's card URL in the API (use the id from the log_sighting output):
PATCH /users/{telegram_id}/sightings/{sighting_id}/card
Body: {"card_png_url": "<url>"}
Send the PNG via Telegram:
message(action="send", media="<pngPath>")
If isLifer is true:
"π New lifer! That's your first ever [commonName]! Bird #[totalSpecies] in your Birdfolio."
If totalSpecies == 1 (this is their very first bird ever): also send their personal PWA link:
"π¦
Your Birdfolio is live! Bookmark this link to see your life list:
https://birdfolio.tonbistudio.com/app/[telegram_id]"
The telegram_id is the sender's Telegram ID from the inbound message metadata (sender_id). This is also stored in birdfolio/config.json after init.
Otherwise: "[commonName] spotted! You've now seen [N] species in your Birdfolio."
Include: rarity badge emoji, the fun fact, checklist status (if species was on checklist, mention it).
Fallback if screenshot fails: Send a formatted text card:
π¦
[RARITY_EMOJI] [Common Name]
Scientific: [Scientific Name]
Region: [Region] | Spotted: [Date]
Rarity: [Rarity]
π‘ [Fun Fact]
Bird #[N] in your Birdfolio
Trigger: "How's my checklist?", "Birdfolio progress", "How many birds have I found?"
exec: python {baseDir}/scripts/get_stats.py \
--workspace <absolute path to birdfolio/ in your workspace>
Format response using checklistProgress from output:
π {region} Checklist
Common β
β
β
β¬β¬β¬β¬β¬β¬β¬ 3/10
Rare β
β¬β¬β¬β¬ 1/5
Super Rare β¬ 0/1
π¦ {totalSpecies} species | {totalSightings} total sightings
π Last spotted: {mostRecentSighting.commonName} on {date}
π Rarest find: {rarestBird.commonName} ({rarity})
Use β for found, β¬ for not found. One box per species.
Optional visual checklist card: Generate a visual HTML checklist card and screenshot it:
exec: python {baseDir}/scripts/generate_checklist_card.py \
--workspace <absolute path to birdfolio/ in your workspace>
Then screenshot with screenshot_card.js and send the PNG.
Trigger: "Show my Birdfolio", "Show my life list"
Read birdfolio/lifeList.json from your workspace.
Group lifers by rarity (Super Rare first, then Rare, then Common). Format as a text list or generate an HTML gallery, save it to birdfolio/my-birdfolio.html in your workspace, and screenshot it.
Trigger: "Tell me about [species]"
Search You.com:
"{species} bird facts habitat range behavior diet"
"{species} bird {homeRegion} eBird frequency resident or migratory"
Return a conversational summary. Do not log a sighting or generate a card.
Trigger: "What's my rarest bird?", "Show my best find"
exec: python {baseDir}/scripts/get_stats.py \
--workspace <absolute path to birdfolio/ in your workspace>
Read rarestBird from output and reply with species name, rarity, date spotted, and region.
| Script | Key args | Returns |
|--------|----------|---------|
| init_birdfolio.py | --telegram-id, --region, --api-url, --workspace | {status, workspace, files_created, next} |
| log_sighting.py | --species, --scientific-name, --rarity, --region, --date, --workspace | {status, sighting, isLifer, totalSightings, totalSpecies} |
| update_checklist.py | --species, --region, --workspace | {status, tier, dateFound} or {status: not_on_checklist} |
| get_stats.py | --workspace | {totalSightings, totalSpecies, checklistProgress, mostRecentSighting, rarestBird} |
| generate_card.py | --species, --scientific-name, --rarity, --region, --date, --fun-fact, --image-path (preferred) OR --image-url, --object-position, --life-count, --workspace | {status, cardPath, filename} |
| generate_checklist_card.py | --workspace | {status, cardPath} β visual HTML checklist card |
| screenshot_card.js | <cardPath> [outputPath] | {status, pngPath} β saves PNG to birdfolio/cards/ |
| upload_card.py | <pngPath> [--secrets path] | {status, url} β uploads to R2, returns public URL |
All Python scripts output JSON to stdout. Always pass absolute --workspace path.
screenshot_card.js uses OpenClaw's bundled playwright-core + system Chrome/Edge (no separate install needed).
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/thatshrimple-birdfolio/snapshot"
curl -s "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/contract"
curl -s "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/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/thatshrimple-birdfolio/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/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-17T02:26:54.169Z"
}
},
"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": "robin",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:robin|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": "Thatshrimple",
"href": "https://github.com/thatshrimple/birdfolio",
"sourceUrl": "https://github.com/thatshrimple/birdfolio",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T01:46:56.940Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-25T01:46:56.940Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/thatshrimple-birdfolio/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 birdfolio and adjacent AI workflows.