Loading...
Loading...
When you want to integrate an external tool, API, MCP server, or service into a project — the wizard walks you through auth, config, env vars, client wrapper code, example usage, and (optionally) a smoke-test. Scoped to Next.js and Rails projects (the two primary stacks). Interactive Q&A pattern — starts with the tool name, asks structured questions until the integration is fully specified, then scaffolds files. Examples of tools to toolify — Stripe, Kit, Sanity, Notion, Neon, Supabase, Fathom, Rewardful, SavvyCal, Riverside, ScrapeCreators, Anthropic, OpenAI, Gemini, Twilio, Resend, Postmark, Vercel Blob, custom internal APIs. For MCP servers specifically, also handles the .mcp.json wiring. Triggers on "/toolify," "integrate X," "add X to this project," "wire up X," "set up the X integration," "hook up X," "connect X," "add MCP for X." Part of the -ify trifecta (skillify / toolify / loopify) for extending Claude Code. NOT for adding new SKILL.md files — that's skillify. NOT for cron/agent loops — that's loopify.
npx skill4agent add coreyhaines31/makerskills toolify.mcp.json| Category | Examples | Extra steps |
|---|---|---|
| Payments | Stripe, LemonSqueezy, Paddle | Webhook signature verification, customer model, event handlers |
| Auth | NextAuth/Auth.js, Clerk, Supabase Auth, Devise | Session management, protected routes, callbacks |
| Resend, Postmark, SendGrid, Kit | From address, template setup, unsubscribe handling | |
| CMS/DB | Sanity, Prisma, Drizzle, Neon, Supabase | Schema location, migration path, client singleton pattern |
| AI/LLM | Anthropic, OpenAI, Gemini, Vercel AI SDK | Model choice, streaming vs non-streaming, rate limits |
| Analytics | Fathom, PostHog, Plausible | Script placement, event tracking API |
| Scheduling/Comms | SavvyCal, Cal.com, Twilio, Riverside | Webhook events, embed patterns |
| Scraping | ScrapeCreators, Apify, Playwright | Rate limits, response caching, retry policy |
| Affiliate/Referral | Rewardful, PartnerStack | Cookie handling, webhook events, dashboard access |
| Storage | Vercel Blob, S3, R2 | Bucket setup, signed URL pattern, presigned upload |
| MCP server | Any MCP — Sanity, Stripe, GitHub, Kit, etc. | |
| Custom / other | Internal API, unknown tool | Ask more questions |
package.jsonGemfileSCREAMING_SNAKE_CASESTRIPE_SECRET_KEYRESEND_API_KEYsrc/lib/<tool>.tsapp/services/<tool>_client.rbWebFetchcontext7:query-docs# Prefer context7 if available (fresher docs than training data)
Skill({skill: "compound-engineering:context7", ...})
# Fallback to WebFetch
WebFetch <official-quickstart-url>package.jsonsrc/lib/<tool>.ts # client singleton + typed wrappers
src/app/api/webhooks/<tool>/route.ts # webhook handler (if applicable)
src/app/api/<tool>/example/route.ts # one working example route
.env.local.example # env var template with placeholder valuesconfig/initializers/<tool>.rb # SDK config
app/services/<tool>_client.rb # client wrapper
app/controllers/webhooks/<tool>_controller.rb # webhook handler if applicable
config/routes.rb # webhook route
.env.example # env vars.mcp.json # add or update with the new server entry
.env.local # add the env vars the MCP needs// Scaffolded by /toolify on 2026-06-30. Official docs: <url>. SDK version: <version>.
// The client wrapper is scoped to plumbing only — business logic lives elsewhere.Authorization: Bearer <key>X-<Vendor>-Key: <key>.env.local.envNEXT_PUBLIC_*--no-sensitivevercel env add NEXT_PUBLIC_APP_URL production --value "<url>" --no-sensitive --yes--sensitivevercel env pullvercel env add STRIPE_SECRET_KEY production --value "<key>" --sensitive --yes
vercel env add STRIPE_WEBHOOK_SECRET production --value "<secret>" --sensitive --yesNEXT_PUBLIC_*--no-sensitive--sensitivevercel env pullreferences/vercel-env-vars.mdvercel env pullheroku config:set <VAR>=<value> -a <app-name>.env.example.env.local.example# Example for a REST API:
curl -H "Authorization: Bearer $STRIPE_SECRET_KEY" https://api.stripe.com/v1/customers?limit=1
# Example for an SDK:
node -e "const s = require('./src/lib/stripe.ts').default; s.customers.list({limit:1}).then(console.log)"
# For MCP: restart Claude Code, run any command that touches the MCP serverpackage.jsonGemfileloopifyskillify from-chatreferences/references/stripe-nextjs.mdreferences/kit-nextjs.mdreferences/sanity-nextjs.mdreferences/anthropic-nextjs.mdreferences/scrapecreators-nextjs.mdreferences/rewardful-nextjs.md${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/toolify/recipes/<tool>-<stack>.mdreferences/skillify-ifyskillifyloopifyloopifycompound-engineering:context7makerskills:watch-video.env.local.envpackage.jsonGemfile.lockreferences/$MAKERSKILLS_CONFIG/toolify/recipes/