API and integration design
I publish the API contract first, gate it with keys and scopes, then build integrations against it.
How I deliver it at a customer
- Map the systemsI list the systems that must talk, how each one authenticates, the events it emits and who owns it. That map decides what becomes a published endpoint and what stays an internal call.
- Publish the contractI publish the contract before anyone writes an integration. The Luca API serves an OpenAPI 3.1 document at GET /v1/schema, and one per app at /v1/apps/{slug}/schema. The document is generated from the code that serves the routes, so the contract cannot drift. Every endpoint, scope and response shape sits there, so client teams read the contract, not my code.
- Gate every callI gate every route on the bearer key, the scope the endpoint declares, and a per-key bucket of 120 requests per minute. A key without the declared scope gets a 403 that names the missing scope, and no partial result. Over the limit the caller gets a 429 with Retry-After, and another account's app returns the same 404 as a missing one. Every reply uses one envelope with success, errors, result and a request id, so any call can be traced later.
- Expose tools to modelsI register platform operations as model tools with declared parameters and required fields, through the agent tool bridge. The bridge runs nothing that is not registered, so a model cannot reach an undeclared operation. Destructive operations never run on the model's word; they go to a human approval step first.
- Wire the automationI put event-triggered CRM workflows behind documented HTTP trigger routes, and the management endpoints behind role checks. When a role check fails the request stops there and nothing is written. The automation calls the same service layer the interface calls, so there is one code path, not a side channel.
- Test and roll backI ship changes as pull requests through a merge queue that will not merge a failing branch. A failed smoke test or an SLO breach triggers an automated rollback, without waiting for me. The previous image stays deployable, so a rollback is a redeploy of a version that already ran.
Tools I use
| Tool | What it does here | Status |
|---|---|---|
| Luca public API (api.onluca.ai/v1) | OpenAPI 3.1 service with bearer keys, per-service scopes, 120 requests per minute per key and one response envelope. | Available |
| Agent tool bridge | Registers platform operations as model tools with declared parameters and required fields, and refuses unregistered ones. | Available |
| Multi-provider model gateway | One endpoint in front of several model providers, with scoped tokens, an allowed-apps list, rate limits and per-call logging. | Available |
| Luca MCP gateway | Routes MCP clients through the same audited tool endpoint the other surfaces already call. | Early access |
| Schema-validated call demo | Maps a plain-English request onto the published schema and rejects anything the schema does not describe. | Demo only |
Available means shipped and in use. Early access means built but not generally available. Roadmap means designed, not built. Demo only means it powers this public demo, not customer deployments.
Type a request in plain English and the demo maps it onto the published Luca API schema. It prints the endpoint, the scope and the body it would send, or the reason the schema rejects it. No call leaves the page.
Open the live demoThe other answers
Gus IT LLC. Contact gus@gusit.de. Claude is a product of Anthropic PBC. Cloudflare and Workers AI are trademarks of Cloudflare, Inc. Llama is a trademark of Meta Platforms, Inc. Other names are trademarks of their respective owners. Gus IT LLC is an independent engineering firm and is not affiliated with or endorsed by these companies.