Observed since 21 Oct, 09:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Agno Toolkit for the Ejentum Reasoning Harness. Eight agent-callable methods: four dynamic (reasoning, code, anti_deception, memory) and four adaptive (adaptive_reasoning, adaptive_code, adaptive_anti_deception, adaptive_memory) that pre-fit the operation to the task via an adapter LLM. Each call retrieves a structured cognitive injection: a natural-language procedure plus an executable reasoning topology.
Agno Toolkit for the Ejentum Reasoning Harness. EjentumTools() registers eight agent-callable methods: four dynamic (reasoning, code, anti_deception, memory) and four adaptive (adaptive_reasoning, adaptive_code, adaptive_anti_deception, adaptive_memory).
Use the harness before the agent generates on complex, multi-step, or multi-constraint tasks where the model's default reasoning template would miss a constraint, take a shortcut, or drift across turns. Each call returns a cognitive operation: a structured procedure (numbered steps with a failure pattern to refuse and a falsification test) paired with an executable reasoning topology (a DAG of those steps with decision gates, parallel branches, bounded loops, and meta-cognitive exit nodes). The agent reads both layers before producing its response.
Dynamic methods return the top-1 abstract operation; adaptive methods additionally run an adapter LLM that rewrites the operation with task-specific identifiers. Adaptive methods require the Go or Super tier.
Method symbols use underscores because Python identifiers cannot contain hyphens. The on-wire API mode strings stay hyphenated (anti-deception, adaptive-anti-deception); the translation is internal to each method.
pip install agno-ejentum
export EJENTUM_API_KEY="ej_..."
Or pass it explicitly: EjentumTools(api_key="..."). Get a key at ejentum.com/pricing.
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno_ejentum import EjentumTools
architect = Agent(
name="Senior architect",
model=Claude(id="claude-sonnet-4-6"),
tools=[EjentumTools()],
instructions=(
"Pragmatic; pushes back on sunk-cost framings. "
"Call anti_deception (or adaptive_anti_deception for high-stakes cases) "
"before evaluating any decision the prompt pressures you to validate."
),
)
architect.print_response(
"We have spent three months on the GraphQL gateway. "
"Should we keep going or pivot to REST?"
)
The Agno agent sees the method name verbatim (underscored form).
| Method | Mode string (on wire) | Library size |
|---|---|---|
reasoning(query) | reasoning | 311 |
code(query) | code | 128 |
anti_deception(query) | anti-deception | 139 |
memory(query) | memory | 101 |
| Method | Mode string (on wire) |
|---|---|
adaptive_reasoning(query) | adaptive-reasoning |
adaptive_code(query) | adaptive-code |
adaptive_anti_deception(query) | adaptive-anti-deception |
adaptive_memory(query) | adaptive-memory |
Each method accepts a single query: str argument and returns the injection as a string. For memory and adaptive_memory, format as "I noticed X. This might mean Y. Sharpen: Z.".
Errors return as human-readable strings; methods do not raise.
EjentumTools(
api_key: str | None = None,
api_url: str = "https://api.ejentum.com/harness/",
timeout_seconds: float = 10.0,
**toolkit_kwargs,
)
| Field | Default | Description |
|---|---|---|
api_key | None | If unset, read from EJENTUM_API_KEY at call time. |
api_url | https://api.ejentum.com/harness/ | Override for self-hosted gateway. |
timeout_seconds | 10.0 | Per-call HTTP timeout. |
**toolkit_kwargs | Forwarded to agno.tools.Toolkit. |
POST https://api.ejentum.com/harness/
Headers: Authorization: Bearer <key>, Content-Type: application/json
Body: { "query": <string>, "mode": <one of 8 mode strings> }
Response (200): [ { "<mode>": "<injection string>" } ]
Response (401|403|429): { "error": "..." }
Full wire contract, field structure of an injection, DAG syntax, and a canonical dynamic-vs-adaptive comparison on the same query are documented in the ejentum-mcp README.
The same eight tools are exposed as MCP tools at https://api.ejentum.com/mcp. If you prefer that route, configure Agno with the MCP client of your choice.
agno>=2.0.0requests>=2.31.0The Ejentum harness is benchmarked publicly under CC BY 4.0 at github.com/ejentum/benchmarks:
Methodology, scenarios, run scripts, and raw outputs are all in-repo.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.0 | 31 May 2026 | 7 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 09:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:f1f0e5bf25654caf43edcf775edcb03b8664dfa47c2d857090f783600adf6f1b