General-purpose models hallucinate CDS: annotation terms that don't exist, OData v2 syntax mixed into v4, invented fields. CAPforge connects your agent (Claude Code, Cursor…) to the real compiler and SAP's official best practices — and doesn't let it stop until the code compiles.
The real loop: generate → compile → correct → green. No babysitting.
The problem
There's barely any public CAP code in training data. The result: your copilot nails React on the first try, but with CAP it enters the "doesn't compile → fix it → still broken" loop. You pay the API either way — and get scrap. And what does compile often doesn't fit your project: invented entities, ignored catalogs, your conventions nowhere to be seen.
The solution, two levels
How it works
.mcp.json, command npx -y capforge.Uncomfortable questions
Exactly. Every failed iteration gets billed the same: you pay tokens for code that doesn't compile. CAPforge doesn't replace your AI — it makes the one you already pay for get it right the first time. Fewer iterations, fewer tokens, less babysitting. Free already gives you that; Pro also makes the output fit your project without rework.
Generic syntax — yes, they'll improve. That's why that part is free and open source. What no model will ever have in its training data is your data model, your catalogs and your conventions. That's Pro, and it doesn't expire.
Joule lives inside SAP Build's closed ecosystem, with its licensing and its pace. CAPforge works in the tools your team already uses and loves — Claude Code, Cursor, VS Code — with whatever model you choose. It complements rather than competes: we're the small, open, sharp piece.
No. CAPforge runs locally as an MCP server. It calls no LLM and sends nothing anywhere: your agent brings the model (your key, your data agreement) and CAPforge contributes knowledge and validation on your disk.
Start free