Skip to content

Python SDK (Beta)

The Jentic Python SDK is a comprehensive library for discovering and executing APIs and workflows, with helpers to turn them into LLM tools.

Backed by the data in Jentic Public APIs.


Install

pip install jentic
````

## Configure your key

Create an Agent API key in the app, then set:

```bash
export JENTIC_AGENT_API_KEY=<your-agent-api-key>

You can also point the SDK at a non‑default API URL (e.g., QA):

export JENTIC_API_URL=https://directory-api.qa1.eu-west-1.jenticdev.net

Quick start: search → load → execute

import asyncio
from jentic import Jentic, SearchRequest, LoadRequest, ExecutionRequest

async def main():
    client = Jentic()

    # 1) Search for a capability
    search = await client.search(SearchRequest(query="send a Discord DM"))
    entity_id = search.results[0].id          # op_... or wf_...

    # 2) Load details (inspect inputs / auth)
    load = await client.load(LoadRequest(ids=[entity_id]))
    inputs_schema = load.tool_info[entity_id].inputs
    print(inputs_schema)

    # 3) Execute
    result = await client.execute(
        ExecutionRequest(id=entity_id, inputs={"recipient_id": "123", "content": "Hello!"})
    )
    print(result)

asyncio.run(main())

The snippet above corrects a small naming mismatch in the original README (search vs results) so you can copy/paste and run immediately.


Use with LLM agents (tool definitions + execution)

from jentic.lib.agent_runtime import AgentToolManager

# Generate LLM-compatible tool specs (OpenAI/Anthropic)
manager = AgentToolManager(format="anthropic")
tools = manager.generate_tool_definitions()   # pass to your LLM

# --- inside your agent loop, when a tool is requested ---
result = await manager.execute_tool(
    "discord_send_message",
    {"recipient_id": "123", "content": "Hi"}
)
print(result)

What the runtime provides

  • Generate tool specs from Arazzo workflows & OpenAPI operations
  • Execute workflows/operations via a unified interface
  • Runtime classes:

  • AgentToolManager — tool lifecycle & execution

  • LLMToolSpecManager — tool specification generation
  • TaskExecutor — standardized execution results

Dev install (optional)

# from the SDK repo
pip install -e .

Or reference it in another project:

# pyproject.toml
dependencies = [
  "jentic @ file:///path/to/jentic/sdk"
]

Testing (optional)

# unit tests
pdm run test

# integration tests (dev)
pdm run integration-dev

# integration tests (prod)
pdm run integration

Integration config

# copy examples and edit with your creds/UUIDs
cp tests/integration/.env.example tests/integration/.env.dev
cp tests/integration/.env.example tests/integration/.env.prod

Examples of required values:

DISCORD_GET_MY_USER_OPERATION_UUID="op_xxx"
DISCORD_GET_USER_DETAILS_WORKFLOW_UUID="wf_xxx"
JENTIC_API_URL=https://directory-api.qa1.eu-west-1.jenticdev.net
DISCORD_BOTTOKEN="your_bot_token_here"

MCP plugin

Prefer MCP? Use the MCP server in our mono‑repo to expose the same capabilities to MCP clients (Windsurf, Claude Desktop, Cursor). See the Guides → MCP section in the sidebar.

---

### `reference/sdks/typescript.md`

```markdown
# TypeScript SDK

We don't have an official **TypeScript SDK** for Jentic yet.

If you'd like to see one, please open a request in our public tracker:  
👉 **[Request a TypeScript SDK](https://github.com/jentic/jentic-public-apis/issues)**

> Tell us your use case (framework, runtime, and target agent stack). Community feedback helps us prioritize.

(Optional) tiny nav tweak

Your mkdocs.yml already lists:

  - Reference:
      - SDKs:
          - Overview: reference/sdks/index.md
          - Python: reference/sdks/python.md
          - TypeScript: reference/sdks/typescript.md

No changes needed—these pages will slot right in.

If you later move MCP docs under SDKs, add a line like:

          - MCP Plugin (external): https://github.com/jentic/jentic-sdks/tree/main/mcp