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, do not blindly retry — the charge may have settled; reconcile via
GET /api/wallet/{address}/statement?auth_tx_hash=... first.
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 a signed, gasless USDC transfer authorization (EIP-3009) sent in the
X-PAYMENT header — the platform's facilitator settles it on-chain. 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
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 eqbuilder-0.1.4.tar.gz.
File metadata
- Download URL: eqbuilder-0.1.4.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbbb4052b0b770d8d51bcd23ac71c2a9fc0118533164357590a55678cd2e8251
|
|
| MD5 |
c2cd8753c5cfa8e817f482779c3c6251
|
|
| BLAKE2b-256 |
97e769821c62bbede085d519944a6369c17f0a83a9289db96b5bbfa974d4f172
|
File details
Details for the file eqbuilder-0.1.4-py3-none-any.whl.
File metadata
- Download URL: eqbuilder-0.1.4-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec6daaa56a05e286004ebed282ffee0cadf03f3e3b327ad1e140873cecca4623
|
|
| MD5 |
d7788b5deddb7e92891dc93207e635e9
|
|
| BLAKE2b-256 |
b499bbf07b1ec33e799aec2a07d9845a8ddacf7bc54fb941b85f9cc15afa43ef
|