EveryFeedEveryFeedeveryfeed.ai

AI apps, REST API, SDK, and CLI

Connect assistants over MCP or build organization-scoped automations with REST v1.

Which connection do I need?

Two ways to let an AI work with EveryFeed — both live in Settings → Developers → Access:

CLI & AI SkillsMCP Client Configuration
Best forCoding agents in your terminal or IDE — OpenClaw, Claude Code, Codex, Cursor, Gemini CLIChat apps that can't run commands — ChatGPT, claude.ai, Claude Desktop
What happensThe agent runs everyfeed CLI commands on your machine, guided by the EveryFeed skillThe app calls EveryFeed's hosted MCP tools over the internet
SetupInstall the CLI and skill, sign in oncePaste one URL, approve access

A terminal agent can use MCP too, but the skill gives it a complete, guided workflow — start there. Building software instead? REST API v1 and the TypeScript SDK are covered below.

AI apps can connect to MCP with OAuth. Your workspace also has one evf_ API key for REST API v1, the SDK, the CLI, and MCP clients that need manual credentials.

Create access

Open Settings → Developers → Access.

Under MCP Client Configuration, use OAuth (Recommended):

  1. Copy the MCP server URL into ChatGPT, Claude, Codex, Claude Code, or another MCP client.
  2. Choose Connect or Authenticate in the client.
  3. Sign in to EveryFeed and approve access to the workspace you want to use.

The client registers itself automatically, so this flow does not require an API key or a manually created OAuth app.

Choose API Key (Manual) only when a client does not support MCP OAuth. Pick your client and the page generates the exact configuration with your workspace key filled in:

ClientWhere the generated config goes
Claude CodeA claude mcp add … command, run in the terminal
Cursor.cursor/mcp.json
VS Code / Copilot.vscode/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
AmpAmp settings.json
Codex~/.codex/config.toml
Gemini CLI~/.gemini/settings.json
WarpWarp Settings → MCP Servers

Below the client configs, CI / Remote Servers offers a key-in-URL MCP endpoint (…/mcp/<key>) for clients and CI systems that can't send an Authorization header — the key is part of the URL, so treat the whole URL as a secret.

Your API key is created automatically and remains available on the same page. You can reveal, copy, or rotate it whenever you need to. The Access page is visible to organization managers only.

For OpenClaw or another Agent Skills client, install the public skill and connect the CLI. Install the CLI:

npm install -g everyfeed

Connect your account:

everyfeed auth login

Then install the skill for your agent:

npx skills add VoltAgent/everyfeed-agent

The CLI opens EveryFeed in your browser. Sign in, choose an organization, and approve the device shown in your terminal.

If you are building an integration for other EveryFeed users, create an OAuth app under Settings → Developers → Apps.

Use an existing AI assistant

REST API v1

The base path is:

https://api.everyfeed.ai/public/v1

Send the token as a Bearer credential:

curl \
  --header "Authorization: Bearer $EVERYFEED_TOKEN" \
  "https://api.everyfeed.ai/public/v1/connections?limit=25"

Available resources include connections, posts, posts/validate, media, and media/import — and the surface goes further: per-connection analytics and top posts, scheduling-slot lookup (posts/next-slot), post statistics, media upload and AI image/video generation, and notifications. List endpoints return an opaque nextCursor; pass it back unchanged to continue. API access requires an active subscription.

Connection results include group: { id, name } when a channel belongs to a client group, or null when it is unassigned. Pass groupId=GROUP_UUID to GET /connections to keep a cursor-safe list scoped to one client.

Idempotency is mandatory for writes

Every write endpoint — POST /posts, POST /media/import, state changes, deletes, media generation — requires an Idempotency-Key header. Reusing a key with the same payload returns the original result; reusing it with different input is rejected.

TypeScript SDK

When @everyfeed/sdk is available in your workspace:

import { EveryFeedClient } from "@everyfeed/sdk";

const everyfeed = new EveryFeedClient({
  baseUrl: "https://api.everyfeed.ai",
  token: process.env.EVERYFEED_TOKEN!,
});

const connections = await everyfeed.connections.list({
  groupId: "CLIENT_GROUP_UUID",
  limit: 25,
});
const connection = connections.data[0];

if (!connection) throw new Error("Connect a channel first");

const validation = await everyfeed.posts.validate({
  posts: [
    {
      connectionId: connection.id,
      values: [{ message: "EveryFeed API is connected." }],
    },
  ],
});

CLI

Connect your EveryFeed account in the browser:

everyfeed auth login

everyfeed api connections list
everyfeed api connections list --group-id "CLIENT_GROUP_UUID"
everyfeed api posts list --state DRAFT --limit 25
everyfeed api media list --type image
npx skills add VoltAgent/everyfeed-agent

Use --manual-token to enter the workspace API key yourself. For a non-interactive environment, pass it through --token-stdin or set EVERYFEED_API_TOKEN outside the command.

api posts create validates first, and both post creation and media import ask for confirmation. Non-interactive or JSON writes require --yes and a stable --idempotency-key.