Thin client + CLI for Azure AI Foundry agent NatureLM-Idun-5-MoE
Project description
Idun SDK
Thin, stdlib-only client + CLI for the NatureLM-Idun-5-MoE agent on
Azure AI Foundry (codename Idun). No httpx, no azure-identity — it
runs headless on Termux/Android with nothing but the Python standard library.
Idun is a tool agent: it reasons and calls tools (web_search,
memory_search). This SDK surfaces the full agent trajectory — every
reasoning step and tool call — instead of a black-box chatbot wheel, so you
can see how it arrived at an answer.
Install
pip install idun-sdk
The idun CLI and the idun Python package (plus the stdlib MCP server
idun_mcp.py) are installed.
Authenticate (device-code, Entra)
idun login
# opens https://microsoft.com/devicelogin — enter the printed code,
# sign in with your QMFI-Research admin account.
# Token is saved to ~/foundry_token.txt (FOUNDRY_TOKEN).
Alternatively export FOUNDRY_TOKEN directly.
Use
# final answer only
idun chat "Fasse in einem Satz zusammen, was Contoso im Bereich Nachhaltigkeit kommuniziert."
# full agent trajectory (reasoning + web_search tool steps)
idun trace "Use web_search to find the current CEO of Contoso and report the name."
Python
from idun import IdunClient
res = IdunClient().complete("Your prompt here")
print(res.text) # final answer
for s in res.steps: # agent trajectory
if s.kind == "tool":
print("TOOL", s.tool, s.status, s.query)
else:
print("REASON", s.text[:80])
IdunResult has:
text— the final answersteps— list ofStep(kind="reasoning"|"tool", plustool/query/statusfor tool steps)model— the backing model (e.g.gpt-5.4-2026-03-05)raw— the verbatim Foundry responses payload
Request shape (verified working)
POST {base}/api/projects/{project}/agents/{agent}/endpoint/protocols/openai/responses?api-version=2025-05-15-preview
Authorization: Bearer ***
Content-Type: application/json
{"model": "model-router", "input": "<prompt string>", "max_output_tokens": 4096}
Notes:
modelMUST be"model-router"(the agent id is already in the URL).- Do not send a
toolskey — the agent owns its capabilities; doing so returns400 invalid_payload. - The answer is in
output[].content[].text; tool calls appear asweb_search_callitems withaction.queriesandstatus.
MCP — agent + docs
Idun is available as an MCP server and has a GitMCP docs mirror, so other agents can both call Idun and read its documentation without hallucinating.
1. Idun MCP server (stdlib-only, local)
idun_mcp.py is a zero-dependency stdio MCP server — no FastMCP / httpx
needed (runs on bare Python, ideal for Termux/Android).
python3 idun_mcp.py # stdio MCP server
Tools exposed:
idun_chat(prompt)— final answer textidun_trace(prompt)— full agent trajectory (steps + text)
Add to any MCP client (e.g. Cursor ~/.cursor/mcp.json):
{
"mcpServers": {
"idun": { "command": "python3", "args": ["/abs/path/idun-sdk/idun_mcp.py"] }
}
}
2. GitMCP docs mirror (remote, zero-setup)
https://gitmcp.io/qapdex-maker/idun-sdk/sse
For stdio-only clients (Claude Desktop, Cline, Msty):
{ "mcpServers": { "idun-docs": { "command": "npx", "args": ["mcp-remote", "https://gitmcp.io/qapdex-maker/idun-sdk/sse"] } } }
Recommended combo for a foreign agent: both idun (calls the agent) and
idun-docs (reads the SDK docs) — it can invoke Idun and look up the exact
IdunClient signature on its own.
Why stdlib-only?
Many AI agents run on constrained hosts (Termux on Android, minimal
containers). Pulling httpx/pydantic/azure-identity breaks those setups.
This SDK uses urllib.request + json only, so pip install idun-sdk just
works everywhere Python 3.8+ runs.
Links
- PyPI: https://pypi.org/project/idun-sdk/
- SDK repo: https://github.com/qapdex-maker/idun-sdk
- Playground repo: https://github.com/qapdex-maker/idun-playground
- GitMCP docs: https://gitmcp.io/qapdex-maker/idun-sdk/sse
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file idun_sdk-0.1.1.tar.gz.
File metadata
- Download URL: idun_sdk-0.1.1.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4526c55eaa79bd882a273a144050441ff6174f3dd53db7e001f4e834d04ec47
|
|
| MD5 |
00d0bb009bc7077bfd31ab2323e3edd3
|
|
| BLAKE2b-256 |
64e33d9372c7160cc7aeb26f6bb288625f3bd34514983f976ccf11c46591455b
|
File details
Details for the file idun_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: idun_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0c967a9029750854345abf64dd65688af1b0a17f070ff1c9ca407dc49cffe63
|
|
| MD5 |
5efc9132651f065e460b9b58acc99975
|
|
| BLAKE2b-256 |
56bb163b21372e009ee915833cf5a37570b4c8c5ea94f1aae1e25adbd4d7f737
|