Skip to main content

engini

Agent-first Python SDK for the Engini Public API — discover tools, execute them against your connected apps, and wrap them as LLM tool definitions.

pip install engini            # SDK
pip install 'engini[cli]'     # SDK + the `engini` CLI

Quickstart

from engini import Engini

client = Engini(api_key="eng_…")          # or set ENGINI_API_KEY

# Discover canonical tool schemas
tools = client.tools.get(applications=["salesforce"], search="accounts", limit=5)

# Execute a tool against a connection
conn_id = next(c.connection_id for c in client.connections.list(application="salesforce"))
result = client.tools.execute(
    "salesforce_getrecords", {"sobject": "Account"}, connection_id=conn_id
)
print(result.output)

JWT auth is the fallback: Engini(token="<jwt>", company_token="<id>"), or set ENGINI_API_TOKEN / ENGINI_COMPANY_TOKEN. With an API key the company is bound to the key, so no company token is needed. Point at another host with Engini(..., base_url=…).

Use with an LLM

Provider adapters wrap canonical schemas into vendor tool definitions client-side, with no vendor SDK dependency. OpenAI is the default; Anthropic is also available.

# Bind applications → connections once, then drive a tool-calling loop
toolset = client.toolset(tools=["salesforce_getrecords"], connections={"salesforce": "Prod"})

openai_tools = client.provider.wrap_tools(toolset.tools())   # plain OpenAI tool-JSON dicts
# … send openai_tools to the model, get a response …
results = toolset.handle_tool_calls(llm_response)            # runs the calls, returns results

client.toolset(...) builds a local toolset (no I/O until used) or loads a server one via toolset_id=….

What this adds over the raw REST client

Built on the autogenerated engini-client, the SDK adds what the generated client deliberately lacks: typed errors (the EnginiError family), retry/backoff, auto-pagination, pluggable auth (ApiKeyAuth / BearerAuth), Provider adapters for OpenAI/Anthropic, and the ergonomic Toolset object.

Command-line interface

The engini[cli] extra ships an engini command — a machine-first CLI over the same surface.

engini --help     # login · logout · whoami · tools · applications · connections · connect
engini login --api-key eng_…                 # or run interactively on a TTY
engini whoami                                 # who am I / which company
engini applications list --available          # discover connector apps
engini tools list --application salesforce    # discover tools
engini tools call salesforce_getrecords --args '{"sobject":"Account"}' --connection <id>
engini connect                                # open the connections page in your browser

Output is machine-first: human-readable on a TTY, compact JSON when piped, pretty JSON with --json. Every command also accepts --quiet and --schema (a machine-readable arg schema), and mutating commands accept --dry-run. Exit codes are a stable contract (0 ok · 2 usage · 3 auth · 4 not found · 5 validation · 124 timeout).

Credentials and host config live in $XDG_CONFIG_HOME/engini/config.toml (%APPDATA%\engini\config.toml on Windows), written 0600. Resolution order is flags > environment > config; the env vars are ENGINI_API_KEY (preferred) or ENGINI_API_TOKEN, plus ENGINI_COMPANY_TOKEN.

Source & docs: https://github.com/engini/engini-sdk

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

engini-0.5.1.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

engini-0.5.1-py3-none-any.whl (45.1 kB view details)

Uploaded Python 3

File details

Details for the file engini-0.5.1.tar.gz.

File metadata

  • Download URL: engini-0.5.1.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for engini-0.5.1.tar.gz
Algorithm Hash digest
SHA256 9186c0b6b7dd331d94d21be2f86427f5a3419dd3970c8bf7895ab00c7bd66c33
MD5 aff98bb47a1e685fbedd809cd450c755
BLAKE2b-256 d5c29d330377196354234af475ff821cba694a8fe7f4cb035b0045f67d3d97b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for engini-0.5.1.tar.gz:

Publisher: release-python.yml on engini/engini-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file engini-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: engini-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 45.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for engini-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 817cf46500cd2f2019badef08316f55d625d56441d7f367e81529d2a1c7d19c0
MD5 1005fa7b0537e915d3d6597300a68915
BLAKE2b-256 9357c8b91f809caa4bd4efdea6c58e02155603da2045ce65916cc64f9f039034

See more details on using hashes here.

Provenance

The following attestation bundles were made for engini-0.5.1-py3-none-any.whl:

Publisher: release-python.yml on engini/engini-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.14.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.7.1

2 files

0.6.0

2 files

This release

0.5.1 This release

2 files

0.5.0

2 files

0.3.0

2 files

0.2.0

2 files

0.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page