← Files SafeGrdARCHIVED FILE
plugin.json
4.78 KB · Nov 6, 2026 · 18:21 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "safegrd",
"version": "0.1.1",
"description": "Check SafeGrd backups, take one before a risky change and prove it restores, and set a host up from nothing to a verified backup. No tool deletes, disables, re-routes or re-keys a backup.",
"author": {
"name": "SafeGrd",
"url": "https://safegrd.dev"
},
"homepage": "https://safegrd.dev/docs/mcp",
"repository": "https://github.com/safegrd/agent-plugins",
"license": "MIT",
"keywords": [
"backup",
"postgresql",
"mysql",
"mongodb",
"restore",
"object-lock",
"mcp"
],
"extensions": {
"com.openai": {
"onboardingSkill": "./skills/setup-safegrd/SKILL.md",
"interface": {
"displayName": "SafeGrd",
"shortDescription": "Backups proven to restore",
"longDescription": "SafeGrd backs up PostgreSQL, MySQL, MongoDB and SQLite databases, file trees and mailboxes, encrypted on your host and locked so nothing can delete a backup early, and restores each backup on a schedule to prove it works. From the chat: see which backups are late or failed, take a locked backup before a migration and prove it restores, and set a host up from nothing to a verified backup.",
"developerName": "SafeGrd",
"category": "Developer Tools",
"websiteURL": "https://safegrd.dev",
"privacyPolicyURL": "https://safegrd.dev/privacy",
"termsOfServiceURL": "https://safegrd.dev/terms",
"defaultPrompt": [
"Are my database backups working, and when was the last one restored?",
"I'm about to run a migration on production. Take a backup first and prove it restores.",
"Which of my backups are late or failing?"
],
"supportURL": "https://safegrd.dev/contact",
"logo": "./assets/logo.png",
"composerIcon": "./assets/logo.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Check backup health across an organization",
"prompt": "Are my SafeGrd backups healthy?",
"tools_triggered": "list_organizations, list_surfaces",
"expected_behavior": "Lists each surface with its last backup and last Fire Drill, and names any that are late or failed."
},
{
"description": "Read the latest snapshot of one surface",
"prompt": "When was restore-proof last backed up, and how big was it?",
"tools_triggered": "list_surfaces, list_snapshots",
"expected_behavior": "Names the newest snapshot of the restore-proof surface with its time, size and lock date."
},
{
"description": "Read restore evidence",
"prompt": "Has the latest backup of restore-proof been restored and checked?",
"tools_triggered": "list_surfaces, list_drills",
"expected_behavior": "Reports the most recent Fire Drill for the surface: when it ran, whether it passed, and what it checked."
},
{
"description": "Back up before a risky change",
"prompt": "I'm about to drop a column on restore-proof. Back it up first.",
"tools_triggered": "list_surfaces, request_backup",
"expected_behavior": "Requests a backup of the surface and says it is queued, or relays the server's reason it cannot run yet (for example the plan's backup cadence)."
},
{
"description": "Start protecting a new database",
"prompt": "I want to back up my Supabase database with SafeGrd.",
"tools_triggered": "list_organizations, get_surface_setup",
"expected_behavior": "Returns the SafeGrd console link where the person signs in to Supabase and finishes adding the surface. Nothing is created until they do."
}
],
"negative": [
{
"description": "General database question with no SafeGrd data needed",
"prompt": "How do I write a SQL query that joins two tables?"
},
{
"description": "Backups of something SafeGrd does not handle",
"prompt": "How do I back up the photos on my iPhone?"
},
{
"description": "Asking to delete backups, which no tool can do",
"prompt": "Delete all my old SafeGrd backups to save space."
}
]
},
"demo_recording_url": "https://youtu.be/KPA0jTF_Pus"
},
"publication": {
"release_notes": "First release: check backups and Fire Drills, request a backup or a drill, and start adding a database or a host, signed in with OAuth."
},
"apps": "./.app.json"
}
}
}
SHA-256: 989fec0cf4fd56edecfe1a9de90b9bf9479442dccbcf21baeb20a0421a841ea1