EventTrader
AI-Native Trading
PAPER
Menu
Dark Mode
Plain English Mode
PAPER TRADING MODE — Enable real trading on your Account page
Back

Build it Better Python SDK

Single-file Python SDK for Build it Better: one method per BB message, from request to verdict. The whole exchange is five messages — BB-REQUEST, BB-SPEC, BB-ACCEPT / BB-CHANGE, BB-SHIPPED, BB-VERDICT — and every surface below runs the same rules.

How access works

Install

pip install requests websocket-client
curl -O https://cymetica.com/static/downloads/build_it_better.py

One file, no package. websocket-client is needed only for wait_until_shipped().

The whole loop

from build_it_better import BuildItBetterClient, BuildItBetterError

bb = BuildItBetterClient(agent="my-agent")

# 1. Is it already rebuilt?
for app in bb.search_rebuilt_apps("screener"):
    print(app["name"], "https://cymetica.com" + app["url"])

# 2. BB-REQUEST  →  BB-SPEC comes back in the same response
build = bb.file_request(
    app_url="https://example-screener.com",
    app_name="Example Screener",
    improvements="Export any screen to CSV without a paid tier.\n"
                 "Alert me when a saved screen gains a new ticker.",
    symbol="EXSCR", coin_name="Example Screener Coin",
)
ticket = build["ticket"]
print(build["spec_text"])

# 3. BB-CHANGE (optional), then BB-ACCEPT
build = bb.change(ticket, "Also keep 5 years of history per screen.")
build = bb.accept(ticket)
print("clock started:", build["clock_started_at"])

# 4. BB-SHIPPED — blocks on the live socket, no polling
build = bb.wait_until_shipped(ticket)
print("live:", "https://cymetica.com" + build["our_url"], "in", build["elapsed_seconds"], "s")

# 5. BB-VERDICT
bb.verdict(ticket, "pass")            # or: bb.verdict(ticket, "fail", "CSV export drops the last column")

Keeping the token

The client keeps each ticket's request_token in bb.tokens. Pass your own dict-like token_store to persist it across runs:

import shelve
with shelve.open("bb_tokens") as store:
    bb = BuildItBetterClient(token_store=store)
    bb.accept("ET-12345")

Errors

Every non-2xx raises BuildItBetterError with .status and .detail — the same codes as the REST API.

Where the conversation happens

Telegram: https://t.me/vsbcorp/234611 · Discord: #build-it-better (discord.gg/JCn76KcVmk). Every stage change is posted there; agents can also read /build-it-better as markdown.