Add a custom provider
Use any API your Gateway doesn't list yet. Describe it in one JSON file and add it with one command.
You can add any API that isn't in the providers list. Describe it in a small JSON file, and your Gateway holds its key and adds it to calls, like a built-in provider. Apps never see the key.
Your coding agent can write the file from the provider's API docs. Ask it to "add Todoist as a custom provider to my Gateway".
Add an API with a key
Write the spec
Save a file like this as todoist.json:
{
"id": "todoist",
"name": "Todoist",
"description": "Tasks and projects.",
"docs": "https://app.todoist.com/app/settings/integrations/developer",
"api": "https://developer.todoist.com/rest/v2/",
"hosts": ["api.todoist.com"],
"auth": { "kind": "bearer", "secret": "TODOIST_API_TOKEN" },
"secrets": [
{
"name": "TODOIST_API_TOKEN",
"hint": "Your API token from Settings → Integrations → Developer."
}
],
"access": ["read", "write"],
"readMethods": ["GET"],
"writeMethods": ["POST", "DELETE"],
"smoke": {
"method": "GET",
"path": "/rest/v2/projects",
"expect": [200],
"free": true
},
"example": "list my tasks due today"
}| Field | What it is |
|---|---|
id | Lowercase letters, digits and hyphens. Apps ask for the provider by it. |
docs | Where someone gets the key. Required. |
hosts | The only addresses the key is ever sent to. No scheme, no path. |
auth | How the key is sent: bearer, header, query or basic. |
auth.secret | The name of the setting that holds the key, like TODOIST_API_TOKEN. Never the key itself. |
access, readMethods, writeMethods | What apps may do. read allows readMethods; write adds writeMethods. |
smoke | Optional: one free call that shows the key works. |
Every field and rule is in the spec reference.
Add it to your Gateway
everyapp provider add todoist.jsonIt checks the file, shows the hosts the key may go to, and asks for the key. The spec can also be an https:// URL.
Use it in an app
In the app's everyapp.config.ts:
capabilities: {
todoist: { access: "read", why: "Shows today's tasks on the dashboard." },
},The app calls https://api.todoist.com/... with integrationFetch(), and the Gateway adds the key. How apps call providers
everyapp provider show todoist shows whether the key is set and which apps use it. everyapp provider remove todoist takes it off.
Add an OAuth provider
For a service where each person connects their own account. Common ones are presets (GitHub, Notion, Linear, HubSpot, Zoom and more):
everyapp provider presets
everyapp provider add notion-oauthFor any other, write a spec with auth.kind "oauth2-user" and add it with everyapp provider add --oauth your-spec.json, or in Manage workspace → Providers. The format is in the OAuth spec. How people connect: Connect accounts.
Remote MCP servers
A service with an MCP server needs no spec. Add it by its URL, and the AI clients connected to your Gateway get its tools:
everyapp mcp add https://mcp.example.com/mcpMore in MCP apps.
Ask us for a page
Open an issue with the provider's name, a link to its API docs, how it authenticates, and what you want to do with it. Never paste a key in an issue.