
ebb-ai
io.github.VitaliniPublished by GitHub account Vitaliniv0.17.0Updated Nov 6, 2026
Runs non-urgent LLM tasks at the cleanest grid hour before a deadline, via Batch APIs when allowed.
Overview
Queues non-urgent LLM tasks to run at the lowest-carbon grid hour before a deadline, using provider Batch APIs when time allows.
- What you can do
- Plan and queue tasks: recommend the cleanest window inside a deadline, schedule one-off or recurring tasks, set a carbon budget or earliest start.
- Inspect and manage the queue: check status and carbon receipts, cancel one task or a whole series, cancel all pending work.
- Adjust timing: postpone to a preset or delay, update the deadline, expedite now, retry failed tasks.
- Read grid data: hour-by-hour carbon intensity forecast for a region.
- Continue and report: reply to a completed task, and read local subscription limits and an optional spend estimate.
- When to use it
- Useful when an agent is asked to do something "tonight" or "by tomorrow" and the work is not urgent, so it can be deferred to a cleaner grid hour. Also handy for recurring background jobs where timing is flexible and carbon matters.
- Requirements
- Runs locally over stdio, typically via npx, so Node.js is needed. A region defaults to GB; other zones need free keys or accounts: EIA, ENTSO-E, WattTime username and password, or Electricity Maps. Running tasks through Anthropic or OpenAI needs the matching API key; without a grid key the server falls back to mock data. A tick daemon must be installed for queued tasks to run.
Installation
In SourceWeft
- Open ebb-ai in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@tidegap/mcp
Renamed from
@ebb-ai/mcpin 0.18.0. Use the host config keytidegapandnpx -y @tidegap/mcp; theebb-mcpbin and theEBB_*variables were removed in 0.19. See Renamed from Ebb AI.
MCP server that lets your agent run non-urgent LLM tasks at the cleanest grid hour before a deadline.
Add it to any MCP host. When a user says "do this tonight" or "by tomorrow", the agent calls schedule_task. Tidegap then runs the task at the lowest-carbon grid hour before the deadline, and through the provider Batch API when the deadline allows.
- 12 MCP tools (measured), among them
recommend_window,schedule_task,check_queue_status,get_grid_forecast,cancel_task,postpone_task,update_deadline. - Live 72-hour forecast. GB needs no key; other regions use free keys (EIA, ENTSO-E, WattTime, Electricity Maps).
- One signed carbon receipt per task, stored in
~/.tidegap/queue.db.
Proof: one real GB run, 2026-09-30. Forecast peak 183 gCO2/kWh vs recommended window 88 gCO2/kWh, about 52 % lower for this run only (forecast, projected). Receipt at dispatch: 158 gCO2/kWh (measured). Host-specific configs: https://www.tidegap.com/docs#install
Run
The server speaks MCP over stdio. To wire it into an agent client:
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
on macOS (Linux/Windows have similar paths):
Restart Claude Desktop after editing.
Claude Code
Add tidegap to your ~/.claude/mcp.json (or workspace .claude/mcp.json):
OpenClaw
Add to ~/.openclaw/mcp.json:
Tools exposed (12, measured)
Environment variables
These variables configure this MCP server (and the tidegap CLI, which reads
the same set). They are read at the server's own entry point and injected into
@tidegap/core, which is environment-pure and reads nothing ambient itself.
OpenClaw plugin users: the
@vitalini/tidegapOpenClaw plugin reads no environment variables. Configure it through plugin config instead, underplugins.entries.tidegap.configin your gateway config — the "Plugin config" column below names the field that replaces each variable. OpenClaw resolves the"${ENV_VAR}"shorthand in those fields, so you can keep exporting the same variables and let the gateway read them on the plugin's behalf.
Grid region
The server resolves the region of each tool call in this order:
- the tool call's
regionargument, TIDEGAP_DEFAULT_REGIONin the server's environment (the agent host's MCP config),- the region setting stored on this machine:
tidegap region set <zone>, or Settings → Grid region intidegap uiand the Mac app (keyTIDEGAP_DEFAULT_REGIONin~/.tidegap/config), - a guess from the machine's time zone,
GB.
The server reads the setting again when the file changes, so a new setting applies on the next tool call with no restart. A stored value that is not a supported zone is ignored, with one stderr warning per change. schedule_task replies carry region_source: flag | env | setting | timezone | fallback.
A region argument must be one of the 31 supported zones (any case). Another value is rejected with the closest zones and a link to request a region, for example Unknown zone UA. Closest: PL. Request a region: <link>. With TIDEGAP_ELECTRICITY_MAPS_API_KEY set, any zone passes, because Electricity Maps serves zones beyond the list; with TIDEGAP_ENTSOE_SECURITY_TOKEN set, IT passes too.
Develop
From the root of a clone of https://github.com/tidegap/tidegap:
Source: packages/mcp-server/README.md at commit 11e1df5
Tools
0Version history
1- v0.17.0LatestOct 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts