Skip to content

docs: add Atomic Agents, open-connector and DeepTutor integration guides - #82

Merged
MVS-source merged 1 commit into
mainfrom
docs/add-atomic-agents-open-connector-deeptutor
Jul 27, 2026
Merged

docs: add Atomic Agents, open-connector and DeepTutor integration guides#82
MVS-source merged 1 commit into
mainfrom
docs/add-atomic-agents-open-connector-deeptutor

Conversation

@MVS-source

@MVS-source MVS-source commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

What

Adds the 3 missing developer docs for merged Eden AI integrations (native provider merged upstream in all cases, no OpenAI-compat workaround needed):

Guide Group Upstream PR (merged)
atomic-agents.mdx AI Frameworks Eigenwise/atomic-agents#270
open-connector.mdx AI Gateway oomol-lab/open-connector#164
deeptutor.mdx Chat UI HKUDS/DeepTutor#671

Matches the format used by the last 4 merged integration PRs (#73, #74, #75, #76, #79): frontmatter + <TechArticleSchema>, Overview / Installation / Quick Start / Available Models / Environment Variables / Next Steps, docs.json nav registration, and a placeholder currentColor square logo (no official brand SVG readily available, same approach as Pi / Open Code Review).

Notes

  • open-connector has no env-var-based auth — it stores the Eden AI key as a connection credential via its HTTP API (PUT /api/connections/edenai), documented under a dedicated "Credentials" section instead of "Environment Variables".
  • Content cross-checked against the merged upstream diffs and against the sibling guides already shipped in edenai/integrations (aisuite, atomic-agents, open-connector, deeptutor guides in edenai/integrations#3).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Added new v3 integration guides for Atomic Agents, DeepTutor, and open-connector.
    • Included installation steps, quick-start examples, configuration guidance, model selection, API key setup, and related resources.
    • Added all three integrations to the V3 Documentation navigation under Integrations.

Eden AI shipped as a native provider in all three, merged upstream:
Eigenwise/atomic-agents#270, oomol-lab/open-connector#164,
HKUDS/DeepTutor#671. Adds v3/integrations/*.mdx pages (AI Frameworks,
AI Gateway, Chat UI groups) matching the existing devdoc format.
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Three V3 integration documentation pages were added for Atomic Agents, open-connector, and DeepTutor. Each includes setup guidance, usage examples, model information, and related links, with corresponding entries added to docs.json.

Changes

V3 integration documentation

Layer / File(s) Summary
Atomic Agents integration guide
v3/integrations/atomic-agents.mdx, docs.json
Adds Atomic Agents metadata, installation and client examples, model configuration, environment variables, related links, and navigation registration.
open-connector gateway guide
v3/integrations/open-connector.mdx, docs.json
Documents Docker setup, credential storage, chat completion requests, available models, response costs, related links, and navigation registration.
DeepTutor integration guide
v3/integrations/deeptutor.mdx, docs.json
Documents installation, provider setup, model catalog configuration, available models, environment variables, related links, and navigation registration.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • edenai/docs#35: Adds V3 integration pages and navigation entries.
  • edenai/docs#76: Adds an Eden AI integration page with navigation registration.
  • edenai/docs#79: Adds a V3 integration page and corresponding navigation entry.

Poem

A bunny hops through docs so bright,
Three new guides appear in sight.
Models bloom and setup flows,
Keys and gateways, off it goes!
The sidebar twinkles—what delight!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change by naming the three new integration guides added in the docs.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/add-atomic-agents-open-connector-deeptutor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mintlify

mintlify Bot commented Jul 27, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
edenai 🟢 Ready View Preview Jul 27, 2026, 12:22 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@v3/integrations/atomic-agents.mdx`:
- Around line 46-48: Use consistent V3 token placeholders in all four examples:
in v3/integrations/atomic-agents.mdx lines 46-48 and 119-121, use api_token for
production and sandbox_api_token for testing; in
v3/integrations/open-connector.mdx lines 44-47 and 89-92, replace generic JSON
placeholders with the corresponding explicit api_token or sandbox_api_token
names.
- Around line 51-72: Update the Atomic Agents example to use the current
AtomicAgent, AgentConfig, and BasicChatInputSchema symbols instead of BaseAgent
and BaseAgentConfig. Construct the agent with the current configuration API, and
invoke run using a BasicChatInputSchema instance rather than
agent.input_schema(...), preserving the existing client, model, and response
flow.

In `@v3/integrations/deeptutor.mdx`:
- Around line 51-58: Update the DeepTutor provider configuration section to
remove the EDENAI_API_KEY table entry and any project-root .env
environment-variable instructions. Replace them with a concise instruction
directing users to configure and save the Eden AI provider through deeptutor
init or Settings → Models, preserving the existing provider and model details.

In `@v3/integrations/open-connector.mdx`:
- Around line 29-37: Add the prerequisite repository checkout step before the
Docker quick-start command, instructing readers to clone the upstream
open-connector repository and change into its directory. Keep the existing
docker compose up command and image/URL details unchanged.
- Around line 41-58: Update the OpenConnector documentation examples to include
the required authentication headers: use ADMIN_BEARER_TOKEN for the /api
connection credential update and Authorization: Bearer <api_token> for the
/v1/actions call. Document OOMOL_CONNECT_ENCRYPTION_KEY setup or explicitly
scope the example to local-only use, and apply the same authentication and
credential-safety guidance to the second credential example.
- Line 62: Update the OpenConnector response description to state that `/v1`
responses wrap the payload in a top-level `data` field, with the
OpenAI-compatible completion fields and Eden AI `cost` documented inside `data`
rather than at the response root.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 50c7b397-dcf7-4a21-ba21-d7f6ccb0e791

📥 Commits

Reviewing files that changed from the base of the PR and between cb8972b and 25d4c10.

⛔ Files ignored due to path filters (3)
  • integration-logo/atomic-agents-icondoc.svg is excluded by !**/*.svg
  • integration-logo/deeptutor-icondoc.svg is excluded by !**/*.svg
  • integration-logo/open-connector-icondoc.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • docs.json
  • v3/integrations/atomic-agents.mdx
  • v3/integrations/deeptutor.mdx
  • v3/integrations/open-connector.mdx

Comment on lines +46 to +48
```bash .env
EDENAI_API_KEY=your_api_key_here
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use consistent token placeholders across the integration guides.

These examples use your_api_key_here without distinguishing production credentials from sandbox credentials.

  • v3/integrations/atomic-agents.mdx#L46-L48: use api_token for the production .env example.
  • v3/integrations/atomic-agents.mdx#L119-L121: apply the same production/sandbox token naming.
  • v3/integrations/open-connector.mdx#L44-L47: replace the JSON placeholder with an explicit api_token or sandbox_api_token.
  • v3/integrations/open-connector.mdx#L89-L92: apply the same token naming to the update example.

As per coding guidelines, V3 examples must distinguish production api_token from testing sandbox_api_token.

📍 Affects 2 files
  • v3/integrations/atomic-agents.mdx#L46-L48 (this comment)
  • v3/integrations/atomic-agents.mdx#L119-L121
  • v3/integrations/open-connector.mdx#L44-L47
  • v3/integrations/open-connector.mdx#L89-L92
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@v3/integrations/atomic-agents.mdx` around lines 46 - 48, Use consistent V3
token placeholders in all four examples: in v3/integrations/atomic-agents.mdx
lines 46-48 and 119-121, use api_token for production and sandbox_api_token for
testing; in v3/integrations/open-connector.mdx lines 44-47 and 89-92, replace
generic JSON placeholders with the corresponding explicit api_token or
sandbox_api_token names.

Source: Coding guidelines

Comment on lines +51 to +72
```python Python
import os
import instructor
from openai import OpenAI
from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig

client = instructor.from_openai(
OpenAI(
base_url="https://api.edenai.run/v3",
api_key=os.getenv("EDENAI_API_KEY"),
)
)

agent = BaseAgent(
config=BaseAgentConfig(
client=client,
model="anthropic/claude-sonnet-5", # <provider>/<model>
)
)

response = agent.run(agent.input_schema(chat_message="Hello! How are you?"))
print(response.chat_message)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python -m pip install -U atomic-agents openai instructor
python - <<'PY'
from inspect import signature
from atomic_agents import AtomicAgent, AgentConfig, BasicChatInputSchema

assert "config" in signature(AtomicAgent).parameters
assert "chat_message" in signature(BasicChatInputSchema).parameters
PY

Repository: edenai/docs

Length of output: 312


🌐 Web query:

atomic-agents latest API AtomicAgent AgentConfig BasicChatInputSchema BaseAgentConfig

💡 Result:

Atomic Agents is a lightweight, modular Python framework designed for building agentic AI pipelines and applications [1][2]. It leverages Pydantic for data validation and schema serialization, and is built on top of the Instructor library to support various LLM providers (e.g., OpenAI, Anthropic, Gemini, Ollama) [1][3][2]. Key Components and Definitions: AtomicAgent The AtomicAgent class is the core component for constructing AI agents [4][5]. It manages chat interactions, history, system prompts, and responses from language models [4][5]. It is instantiated with a configuration object and expects both an input schema and an output schema (typically via generic type parameters: AtomicAgent[InputSchema, OutputSchema]) [6][7]. AgentConfig AgentConfig is a Pydantic model that provides the configuration for an AtomicAgent [4][8]. It includes essential parameters such as the Instructor client, the LLM model identifier, optional history management (ChatHistory), and a system prompt generator [4][8]. As of recent updates (v2.0+), it no longer requires the explicit inclusion of input or output schemas, which are now handled at the agent class level [7]. BasicChatInputSchema BasicChatInputSchema is a standard input schema that inherits from BaseIOSchema [8][7]. It provides a default structure for user input in chat-based agents, typically containing a chat_message field [8]. BaseAgentConfig (Legacy) BaseAgentConfig is a deprecated class [7]. In earlier versions of the framework, it served the role now filled by AgentConfig [7]. Users upgrading from older versions must migrate to AgentConfig [7]. For reference, the framework also includes several other key classes such as ChatHistory (for memory management) and BaseIOSchema (the base class for all input/output schemas) [4][9][7]. The framework's architecture was significantly updated in version 2.0, with deprecated legacy names (like BaseAgent, BaseAgentConfig, etc.) being replaced by the current structures mentioned above [7]. [4][1][8][7]

Citations:


🌐 Web query:

git clone github.com/eigenwise/atomic-agents BaseAgent InputSchema quickstart

💡 Result:

To get started with Atomic Agents, you can clone the main repository using the following command: git clone https://github.com/eigenwise/atomic-agents.git The Atomic Agents framework is designed to be a lightweight and modular system for building AI agents, built on top of Instructor and Pydantic [1][2]. Regarding the use of BaseAgent and InputSchema in your quickstart, Atomic Agents primarily utilizes the AtomicAgent class, which takes input and output schemas defined as Pydantic models [3][4]. Below is a standard pattern for creating an agent with custom schemas: from pydantic import Field from atomic_agents import AtomicAgent, AgentConfig, BaseIOSchema # 1. Define your schemas inheriting from BaseIOSchema class MyInputSchema(BaseIOSchema): query: str = Field(..., description="The user's query.") class MyOutputSchema(BaseIOSchema): response: str = Field(..., description="The agent's response.") # 2. Configure and initialize the agent agent = AtomicAgent[MyInputSchema, MyOutputSchema]( config=AgentConfig( client=your_instructor_client, model="gpt-4o", # or your preferred model #... other config options like system_prompt_generator or history)) # 3. Run the agent input_data = MyInputSchema(query="Hello, agent!") result = agent.run(input_data) print(result.response) Key resources for your quickstart include: - Official Documentation: https://eigenwise.github.io/atomic-agents/ [1] - GitHub Repository: https://github.com/eigenwise/atomic-agents [5] - Example directory: Check the atomic-examples folder in the repository for various implementations, including basic chatbots and custom schemas [5][2]. Note: Ensure you have installed the core library via pip install atomic-agents and any specific provider SDKs (e.g., openai, anthropic) required for your chosen model [1][6].

Citations:


🌐 Web query:

eigenwise atomic-agents BasicChatInputSchema chat_message quickstart

💡 Result:

In the Atomic Agents framework, BasicChatInputSchema is the default input schema used for standard agent interactions [1][2]. It is defined as a Pydantic model that inherits from BaseIOSchema and contains a single required field, chat_message, which captures the user's input [1][2]. To use it in a quickstart context, you typically instantiate an AtomicAgent with BasicChatInputSchema (and a corresponding output schema, such as BasicChatOutputSchema) as type parameters, then pass an instance of the schema to the agent's run method [3][4]. Quickstart Example: import instructor import openai from atomic_agents import AtomicAgent, AgentConfig, BasicChatInputSchema, BasicChatOutputSchema from atomic_agents.context import ChatHistory # 1. Setup client = instructor.from_openai(openai.OpenAI) history = ChatHistory # 2. Initialize Agent agent = AtomicAgent[BasicChatInputSchema, BasicChatOutputSchema]( config=AgentConfig( client=client, model="gpt-5-mini", history=history)) # 3. Use BasicChatInputSchema to send a message user_message = "Tell me about quantum computing" response = agent.run(BasicChatInputSchema(chat_message=user_message)) print(response.chat_message) Key Implementation Details: - The schema is designed for simple, chat-based interactions [1][2]. - You can access the agent's expected input schema via agent.input_schema [5]. - For more complex interactions, you can define custom schemas inheriting from BaseIOSchema and replace BasicChatInputSchema in the agent definition [6].

Citations:


🌐 Web query:

atomic-agents github BaseAgentConfig BaseAgent removed deprecated

💡 Result:

In the atomic-agents library, the classes BaseAgent and BaseAgentConfig were deprecated and subsequently removed in version 2.0.0 as part of a major refactor [1][2]. The following replacements should be used: - BaseAgent has been renamed to AtomicAgent [3][1]. - BaseAgentConfig has been renamed to AgentConfig [3][1]. Additionally, the library underwent significant structural changes in version 2.0.0, including: - Simplification of import paths by eliminating the.lib directory [3][2]. - Renaming of other related classes, such as BaseAgentInputSchema to BasicChatInputSchema and AgentMemory to ChatHistory [1]. - Updates to how schemas are specified; for example, they are now typically handled via generic type parameters (e.g., AtomicAgent[InputSchema, OutputSchema]), and input_schema and output_schema fields have been removed from the configuration object [1]. Users migrating to v2.0.0 or later should consult the official UPGRADE_DOC.md in the repository for a complete list of breaking changes and migration steps [1].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate and inspect the referenced atomic agents documentation snippet(s).
wd="$(pwd)"
if [ -z "$wd" ]; then
  printf 'PWD unavailable\n'
  exit 0
fi

printf 'Tracked candidates for atomic-agents.mdx:\n'
git ls-files | grep -E '(^|/)atomic-agents\.mdx$|atomic-agents' || true

printf '\nFile excerpt for v3/integrations/atomic-agents.mdx:\n'
if [ -f v3/integrations/atomic-agents.mdx ]; then
  wc -l v3/integrations/atomic-agents.mdx
  sed -n '1,130p' v3/integrations/atomic-agents.mdx | cat -n
else
  echo 'v3/integrations/atomic-agents.mdx not found'
fi

printf '\nSearch for BaseAgent/BaseAgentConfig/input_schema usage:\n'
rg -n "BaseAgent|BaseAgentConfig|input_schema\\(|AtomicAgent|AgentConfig|BasicChatInputSchema|atomic-agents" v3/integrations/atomic-agents.mdx 2>/dev/null || true

Repository: edenai/docs

Length of output: 6230


Update the Atomic Agents snippets to the current API.

The installed atomic-agents package uses AtomicAgent, AgentConfig, and BasicChatInputSchema; BaseAgent/BaseAgentConfig are from the deprecated API, and agent.input_schema(...)/AtomicAgent.input_schema(...) are not the call form shown in the current docs.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@v3/integrations/atomic-agents.mdx` around lines 51 - 72, Update the Atomic
Agents example to use the current AtomicAgent, AgentConfig, and
BasicChatInputSchema symbols instead of BaseAgent and BaseAgentConfig. Construct
the agent with the current configuration API, and invoke run using a
BasicChatInputSchema instance rather than agent.input_schema(...), preserving
the existing client, model, and response flow.

Comment on lines +51 to +58
DeepTutor's provider registry stores the profile in `data/user/settings/model_catalog.json`:

| Field | Value |
|---|---|
| Provider | `edenai` |
| Base URL | `https://api.edenai.run/v3` |
| API key | `EDENAI_API_KEY` |
| Model | `provider/model`, e.g. `anthropic/claude-sonnet-5` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/HKUDS/DeepTutor.git "$tmp/DeepTutor"
rg -n 'project-root.*\.env|model_catalog|Settings.*Models|dotenv' "$tmp/DeepTutor/README.md"

Repository: edenai/docs

Length of output: 2012


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the relevant v3/deeptutor MDX sections and search the docs repo for DeepTutor EDENAI references.
if [ -f v3/integrations/deeptutor.mdx ]; then
  echo "== v3/integrations/deeptutor.mdx relevant lines =="
  sed -n '40,95p' v3/integrations/deeptutor.mdx | nl -ba -v40
else
  echo "missing v3/integrations/deeptutor.mdx"
fi

echo "== .env/EDENAI/model_catalog mentions =="
rg -n 'EDENAI_API_KEY|Environment Variables|model_catalog\.json|deep.*tutor|deeptutor|DeepTutor|\.env' .

Repository: edenai/docs

Length of output: 240


🏁 Script executed:

#!/bin/bash
set -euo pipefail

pwd
printf '\n== file exists? ==\n'
test -f v3/integrations/deeptutor.mdx && echo present || echo missing

printf '\n== v3/integrations/deeptutor.mdx relevant lines =="\n'
if test -f v3/integrations/deeptutor.mdx; then
  sed -n '40,95p' v3/integrations/deeptutor.mdx | awk '{printf "%5d  %s\n", NR+39, $0}'
fi

printf '\n== deep tutor/env/model catalog mentions in current repo =="\n'
rg -n 'EDENAI_API_KEY|Environment Variables|model_catalog\.json|deep.*tutor|deeptutor|DeepTutor|\.env' . || true

Repository: edenai/docs

Length of output: 13674


Remove the unused .env instructions for DeepTutor.

DeepTutor configures the EDTN AI key through deeptutor init or Settings → Models, stores it in data/user/settings/model_catalog.json, and treats project-root .env as unused configuration. Replace the EDENAI_API_KEY table value and the environment-variable block with a concise instruction to configure and save the Eden AI provider in Settings.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@v3/integrations/deeptutor.mdx` around lines 51 - 58, Update the DeepTutor
provider configuration section to remove the EDENAI_API_KEY table entry and any
project-root .env environment-variable instructions. Replace them with a concise
instruction directing users to configure and save the Eden AI provider through
deeptutor init or Settings → Models, preserving the existing provider and model
details.

Source: Coding guidelines

Comment on lines +29 to +37
open-connector is a self-hosted gateway, distributed as a Docker image:

<CodeGroup>
```bash Docker
docker compose up
```
</CodeGroup>

This pulls `ghcr.io/oomol-lab/open-connector:latest` and serves the console and API at `http://localhost:3000`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/oomol-lab/open-connector.git "$tmp/open-connector"
test -f "$tmp/open-connector/docker-compose.yml"

Repository: edenai/docs

Length of output: 202


🏁 Script executed:

#!/bin/bash
set -e

echo "== target file section =="
sed -n '1,80p' v3/integrations/open-connector.mdx | cat -n

echo
echo "== repository files mentioning open-connector docker compose =="
rg -n "open-connector|docker-compose|compose" v3/integrations/open-connector.mdx . -g '!node_modules' -g '!dist' || true

Repository: edenai/docs

Length of output: 10015


Make the Docker quick start runnable from a clean checkout.

docker compose up depends on the upstream repository’s docker-compose.yml, but this doc does not tell readers to clone github.com/oomol-lab/open-connector first, so the shown command is not self-contained.

Proposed fix
+git clone --depth 1 https://github.com/oomol-lab/open-connector.git
+cd open-connector
 docker compose up
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
open-connector is a self-hosted gateway, distributed as a Docker image:
<CodeGroup>
```bash Docker
docker compose up
```
</CodeGroup>
This pulls `ghcr.io/oomol-lab/open-connector:latest` and serves the console and API at `http://localhost:3000`.
open-connector is a self-hosted gateway, distributed as a Docker image:
<CodeGroup>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@v3/integrations/open-connector.mdx` around lines 29 - 37, Add the
prerequisite repository checkout step before the Docker quick-start command,
instructing readers to clone the upstream open-connector repository and change
into its directory. Keep the existing docker compose up command and image/URL
details unchanged.

Comment on lines +41 to +58
Store your Eden AI key as a connection credential, then call the `edenai` service:

<CodeGroup>
```bash Add credential
curl -s -X PUT http://localhost:3000/api/connections/edenai \
-H 'content-type: application/json' \
-d '{"authType":"api_key","values":{"apiKey":"your_api_key_here"}}'
```

```bash Call Eden AI
curl -s -X POST http://localhost:3000/v1/actions/edenai.create_chat_completion \
-H 'content-type: application/json' \
-d '{
"input": {
"model": "openai/gpt-5.5",
"messages": [{"role": "user", "content": "Hello! How are you?"}]
}
}'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
curl -fsS http://localhost:3000/openapi.json | jq '.components.securitySchemes'
curl -fsS http://localhost:3000/api/providers/edenai | jq .

Repository: edenai/docs

Length of output: 247


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== repo files =="
git ls-files | sed -n '1,120p'

echo "== target file excerpt =="
if [ -f v3/integrations/open-connector.mdx ]; then
  nl -ba v3/integrations/open-connector.mdx | sed -n '1,140p'
else
  fd -a 'open-connector\.mdx' . | sed -n '1,20p'
fi

echo "== docs/credentials.md excerpt if present =="
if [ -f docs/credentials.md ]; then
  nl -ba docs/credentials.md | sed -n '1,240p'
else
  fd -a 'credentials\.md' . | sed -n '1,20p'
fi

echo "== mentions of OOMOL_CONNECT_ENCRYPTION_KEY =="
rg -n "OOMOL_CONNECT_ENCRYPTION_KEY|encryption|credential|api_key|authType|Authorization:" . -g '!node_modules' -g '!dist' -g '!build' | sed -n '1,260p'

Repository: edenai/docs

Length of output: 4296


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== target file excerpt =="
if [ -f v3/integrations/open-connector.mdx ]; then
  cat -n v3/integrations/open-connector.mdx | sed -n '1,160p'
else
  echo "v3/integrations/open-connector.mdx not found"
  fd -a 'open-connector\.mdx' . 2>/dev/null || true
fi

echo "== docs/credentials.md excerpt if present =="
if [ -f docs/credentials.md ]; then
  cat -n docs/credentials.md | sed -n '1,260p'
else
  fd -a 'credentials\.md' . 2>/dev/null | while read -r f; do echo "--- $f"; cat -n "$f" | sed -n '1,120p'; done
fi

echo "== repository-wide mentions =="
rg -n "OOMOL_CONNECT_ENCRYPTION_KEY|encryption|credential|authType|Authorization: Bearer|Bearer <api_key>|Bearer"| || true

echo "== api connection/provider/action examples in v3 integrations =="
cat -n v3/integrations/open-connector.mdx | sed -n '1,160p' | rg -n "connections|edenai|api/|v1/actions|Authorization|bearer|secret|auth" -C 3 || true

Repository: edenai/docs

Length of output: 4467


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== repository-wide relevant mentions =="
rg -n "OOMOL_CONNECT_ENCRYPTION_KEY|encryption|credential|authType|Authorization: Bearer|Bearer <api_key>|Bearer" . || true

echo "== API docs endpoint examples =="
rg -n "Authorization: Bearer <api_key>|Bearer <api_key>|security|Bearer" api-reference v3 -g '*.mdx' -g '*.json' | sed -n '1,120p'

Repository: edenai/docs

Length of output: 29506


🌐 Web query:

open-connector OOMOL_CONNECT_ENCRYPTION_KEY credentials SQLite

💡 Result:

In OOMOL OpenConnector, the OOMOL_CONNECT_ENCRYPTION_KEY environment variable is used to enable AES-256-GCM encryption for sensitive data stored in the runtime database, such as SQLite [1][2]. When this key is configured, the system encrypts provider credentials, OAuth client configuration, and completed idempotent Action response payloads at rest [1][2]. If OOMOL_CONNECT_ENCRYPTION_KEY is not set, these items are stored in plaintext within the SQLite database [1][3]. In such cases, the runtime will issue a startup warning, and you should treat the SQLite database file as a sensitive, unprotected store [1][4]. Key management and usage details include: - External Storage: The OpenConnector runtime does not store the encryption key itself [1][3]. You are responsible for managing it securely using a secret manager or vault [3][5]. - Irrecoverability: If the encryption key is lost, any records encrypted with that key cannot be recovered [1][5]. - Key Rotation: You can rotate the encryption key by using the runtime:data rotate-key command, providing both the current (OOMOL_CONNECT_ENCRYPTION_KEY) and the new (OOMOL_CONNECT_NEW_ENCRYPTION_KEY) keys [1][6]. - Metadata: Even with encryption enabled, certain data remains unencrypted as metadata, including idempotency key hashes, request fingerprints, claim states, and timestamps [1][2].

Citations:


Document OpenConnector auth and credential-at-rest safeguards.

The example omits the required bearer auth for the /api credential write and /v1/actions call, so the credential flow will fail in authenticated deployments. Add ADMIN_BEARER_TOKEN for the connection update and Authorization: Bearer <api_token> on the action call, plus the OOMOL_CONNECT_ENCRYPTION_KEY setup or a local-only demo scope. Apply the same auth context at the second credential example too.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@v3/integrations/open-connector.mdx` around lines 41 - 58, Update the
OpenConnector documentation examples to include the required authentication
headers: use ADMIN_BEARER_TOKEN for the /api connection credential update and
Authorization: Bearer <api_token> for the /v1/actions call. Document
OOMOL_CONNECT_ENCRYPTION_KEY setup or explicitly scope the example to local-only
use, and apply the same authentication and credential-safety guidance to the
second credential example.

```
</CodeGroup>

The base URL (`https://api.edenai.run/v3`) is built into the connector — no extra configuration needed. The response includes the standard OpenAI-compatible fields plus a top-level `cost` field with the Eden AI billed cost.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
curl -fsS http://localhost:3000/v1/actions/edenai.create_chat_completion \
  -H "Authorization: Bearer ${OOMOL_CONNECT_RUNTIME_TOKEN}" \
  -H 'content-type: application/json' \
  -d '{"input":{"model":"openai/gpt-5.5","messages":[{"role":"user","content":"Hello"}]}}' |
  jq '{top_level_cost: .cost, nested_cost: .data.cost, nested_choices: .data.choices}'

Repository: edenai/docs

Length of output: 198


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file context =="
sed -n '1,140p' v3/integrations/open-connector.mdx 2>/dev/null || true

echo
echo "== search open-connector/docs runtime api references =="
rg -n "data.cost|choices|success|message|data|meta|open-connector|edenai.create_chat_completion|create_chat_completion|runtime-api" . --glob '!node_modules' --glob '!dist' --glob '!build' --glob '!coverage' | head -200

Repository: edenai/docs

Length of output: 24432


🌐 Web query:

github oomol-lab open-connector docs/runtime-api.md response envelope success message data meta

💡 Result:

In the oomol-lab/open-connector project, the HTTP Runtime API (endpoints under /v1) utilizes a uniform JSON response envelope for its communication [1][2]. When a request is successful, the server returns a JSON response containing specific fields, including data and meta [3][4]. Based on the SDK implementation and test cases, the standard structure of this successful response envelope typically includes: data: The actual payload or result of the action or API call [3][5][6][4]. message: A human-readable status message (often "OK" for successful operations) [5][6][4]. meta: An object containing metadata regarding the request execution, which commonly includes [5][6][4]: - executionId: A server-assigned identifier for the specific execution [5][6][4]. - actionId: The identifier of the action being performed [5][6][4]. The SDK's executeRaw method explicitly maps these envelope fields into a RawResult object [6][4]. In contrast, the standard execute method returns the data field directly to the caller [5][4]. If a request fails, the server emits a different structure, generally { error: { code, message } }, which the SDK middleware maps to maintain consistency across the connector client [3][5].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import urllib.request
urls = [
    "https://raw.githubusercontent.com/oomol-lab/open-connector/main/docs/runtime-api.md",
    "https://raw.githubusercontent.com/oomol-lab/open-connector/main/docs/runtime-api.md",
]
for url in urls[:1]:
    with urllib.request.urlopen(url, timeout=20) as r:
        text = r.read().decode("utf-8")
    start = text.find("## Runtime API")
    end = text.find("## SDK", start)
    section = text[start:end] if end != -1 else text[start:start+1600]
    print(section)
PY

echo
echo "== fetch open-connector repo runtime-api markdown excerpt =="
curl -fsS https://raw.githubusercontent.com/oomol-lab/open-connector/main/docs/runtime-api.md | sed -n '1,260p'

Repository: edenai/docs

Length of output: 2435


🌐 Web query:

"github.com/oomol-lab/open-connector" "data" "choices" "cost" "/v1/actions/edenai.create_chat_completion"

💡 Result:

The path /v1/actions/edenai.create_chat_completion refers to a specific Action within the OpenConnector ecosystem, which is an open-source gateway for connecting AI agents to various SaaS providers [1][2]. Regarding "data choices" and "cost": 1. Data Choices: OpenConnector acts as a mediator for API calls [3]. When using an action like edenai.create_chat_completion, the runtime handles the routing of your request to the Eden AI API [4][5]. The specific "data choices"—such as the model selection, message history, and other parameters—are defined by the schema of the Eden AI Chat Completions API [6][7]. OpenConnector exposes these through its generated OpenAPI specification, allowing you to inspect the required and optional inputs (e.g., model, messages, temperature) directly from the runtime's generated /openapi.json or through the Web Console [1][4]. 2. Cost: OpenConnector itself is an open-source gateway software [1][2] and does not inherently charge for executing actions. However, the cost of calling edenai.create_chat_completion depends entirely on your subscription or usage plan with Eden AI [7][8]. Because OpenConnector simply proxies these requests to the provider [4][5], any financial costs, rate limits, or data usage fees are governed by your direct agreement with Eden AI [7]. For technical implementation, you can call this action using the Connector SDK, the oo CLI, or by making a direct HTTP POST request to the /v1/actions/edenai.create_chat_completion endpoint on your OpenConnector runtime [1][9][4]. Ensure your runtime is configured with the necessary Eden AI credentials (usually an API key) in the Web Console, as the runtime maintains credential isolation [4][2][10].

Citations:


Describe the OpenConnector response envelope correctly.

OpenConnector /v1 responses wrap the payload in data, so the OpenAI-compatible completion fields and Eden AI cost in this SDK/API call should be documented under data, not as top-level fields.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@v3/integrations/open-connector.mdx` at line 62, Update the OpenConnector
response description to state that `/v1` responses wrap the payload in a
top-level `data` field, with the OpenAI-compatible completion fields and Eden AI
`cost` documented inside `data` rather than at the response root.

@MVS-source
MVS-source merged commit edda562 into main Jul 27, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant