eqbuilder
Score your AI agent's replies for human-likeness before sending — and check they stick to your approved facts. No account, no API key. 3 free scores, then pay-per-score (~5¢) in USDC on Base via x402 — the buyer wallet needs zero gas, USDC only.
# pip install eqbuilder
from eqbuilder import EqBuilder, WishlistRequired
eq = EqBuilder()
result = eq.free_score(
"Sounds good — I'll double-check the invoice and get back to you.",
delay_seconds=4.2,
profile="analytical_executive",
)
print(result["eq_score_percentage"], result.get("suggested_prompt_addition"))
Free trial note — 3rd score: The final free score is gated behind a one-time wishlist step. Before calling
free_scorefor the third time, POST your feature wish:import requests requests.post( "https://eqbuilder.dev/api/wishlist", json={"need": "a profile for customer-support bots", "audience": "bot"}, )No free round is consumed until you do. The SDK raises
WishlistRequired(a subclass ofEqBuilderError) if you forget, with step-by-step instructions in the exception message. (Or useeq.wishlist("...")— or letauto_scorehandle it, below.)
Set and forget (one standing call)
# pip install "eqbuilder[payments]"
eq = EqBuilder(wallet_key="0x<private key of a wallet holding USDC on Base>")
result = eq.auto_score(
"Sounds good — I'll double-check the invoice and get back to you.",
delay_seconds=4.2,
profile="analytical_executive",
wishlist_need="a profile for customer-support bots", # unlocks the final free round automatically
)
print(result["paid"]) # False while free scores last, True once it graduates to x402
auto_score uses your free trial while it lasts, then transparently retries the same
input through the paid x402 path on 429 free_trial_exhausted. Without a wallet_key
it raises PaymentRequired at that point instead. Free and paid results have slightly
different shapes; the added "paid" key tells you which path ran. If a paid call
times out, the SDK does not automatically replay the paid authorization. Preserve the
original error/receipt and check payment status or contact the operator before creating
a fresh authorization.
LangChain (one line)
# pip install "eqbuilder[langchain]"
from eqbuilder.langchain_tool import get_langchain_tools
tools = get_langchain_tools() # add wallet_key="0x..." to keep scoring after the free trial
CrewAI
# pip install "eqbuilder[crewai]"
from eqbuilder.crewai_tool import HumanLikenessScoreTool
agent = Agent(role="support", tools=[HumanLikenessScoreTool()], ...)
Everything at once: pip install "eqbuilder[all]" (payments + LangChain + CrewAI).
Paid scoring (after the 3 free scores)
# pip install "eqbuilder[payments]"
eq = EqBuilder(wallet_key="0x<private key of a wallet holding USDC on Base>")
result = eq.score("...", delay_seconds=4.2, profile="analytical_executive")
deep = eq.score("...", delay_seconds=4.2, profile="analytical_executive", tier="deep")
Payment is canonical x402 v2: a signed, gasless Base USDC transfer authorization
(EIP-3009) sent in the PAYMENT-SIGNATURE header. A malformed request is rejected
before any money moves.
Script adherence (paid)
check = eq.script_check(
reply_text="The plan is $49/mo, see example.com/pricing",
approved_facts=["Plan price is $29/mo", "Docs: https://docs.example.com"],
)
# flags the invented $49 price and the off-script URL
Improvement loop
def rewrite(text, suggestion):
return my_llm(f"Rewrite this reply. {suggestion}\n\n{text}")
final = eq.improve("...", 4.2, "analytical_executive", rewrite, max_rounds=3)
- 28 personality profiles:
eq.profiles() - Pricing:
eq.pricing() - Full API & MCP endpoint: https://eqbuilder.dev/integrate
Metadata
Release files for eqbuilder 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eqbuilder-0.1.5.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eqbuilder-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.8 kB
Release files / eqbuilder-0.1.5.tar.gz
| Download URL | eqbuilder-0.1.5.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9624c9fc37671e9eb47493194a1ac591f0f3076273c2cd2c36cd057a2ebbe1a8
|
|
BLAKE2b-256 checksum How to use checksums |
9d9e55ee189708dcf98227c2fb471e92e8a213eda77d11368066ece40bde8ee4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","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":null}
|
Release files / eqbuilder-0.1.5-py3-none-any.whl
| Download URL | eqbuilder-0.1.5-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29e2f80f27bb7a14f1d79ed45d96efc6053cfa4fceeee39867999dd8682b9a9b
|
|
BLAKE2b-256 checksum How to use checksums |
9a451857f6ac417d7d221041875ca56202cb781747b2c114a141c724009d2d98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","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":null}
|