aeo
Internal answer-engine-optimization CLI + SDK for Agent Berlin staff
(admin_users, role admin). Sibling of backend/sdk-python — same transport
posture and the same OTP bootstrap, scoped to internal AEO work.
Status: scaffold. This release establishes the package on PyPI. The CLI has
only aeo --version; the SDK surface is not implemented yet.
Auth
aeo authenticates with a project-scoped token, minted by exchanging a
one-time OTP from the aeo MCP server's get_otp tool:
aeo configure --otp <OTP> --domain <project_domain> --title "<what this session is for>"
This reuses the customer MCP's bootstrap wholesale — the OTP is an
mcp_sessions row and the exchange endpoint is the existing
POST /cli/exchange-otp. There is no aeo-specific session table, exchange
endpoint, or token type.
Two consequences follow, and both differ from how a platform-wide internal tool would behave:
aeois project-scoped.--domainis required; the OTP is bound to that project when redeemed. An exchange without a domain cannot succeed.- SDK usage is billed to the project's owning org, not to us — the minted token carries the customer's org claim.
Access is gated to admin_users.role='admin'. That bound is set by
/cli/exchange-otp, which authorizes via IsAuthorizedForOrg (admin, or an FDM
assigned to that specific org) — marketing would receive an OTP that then
fails at exchange, so the MCP refuses the role up front. Widening it means
changing an endpoint shared with the customer MCP; it is not a local decision.
Release
Publishing is automated — see .github/workflows/aeo-publish.yml. Any push to
main touching backend/aeo/** bumps the minor version, commits the bump with
an [aeo-release] marker, builds with uv build, and publishes to PyPI via
Trusted Publishers (OIDC — no API token stored anywhere).
Do not edit version in pyproject.toml or __version__ in
src/aeo/__init__.py by hand; the workflow rewrites both.
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 aeo-0.1.0.tar.gz.
File metadata
- Download URL: aeo-0.1.0.tar.gz
- Upload date:
- Size: 2.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f93f7d749a00e33fcf200aa3ac7cb22d52e9b7bbb8b62f8079107aedbb5eb93b
|
|
| MD5 |
7960da1802b8b6ee90c134b4ba283baf
|
|
| BLAKE2b-256 |
90d1e84b57837e0f5dae99efbceb0120fb9f211531a3f832108ad847818ab55a
|
File details
Details for the file aeo-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aeo-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef744dd1ad8cd442ab68d625271eea79ad495dd9e4b964205b1817c37a471958
|
|
| MD5 |
fe6083c05be604b5f27c840dc7b8f3a3
|
|
| BLAKE2b-256 |
c82de892b26546f2191e638e21486b5f22b2362d07a42bbf8c40ceb2802e8eed
|