Skip to main content

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_score for 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 of EqBuilderError) if you forget, with step-by-step instructions in the exception message. (Or use eq.wishlist("...") — or let auto_score handle 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)

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)

Source distribution for eqbuilder 0.1.5
File Size Uploaded
eqbuilder-0.1.5.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eqbuilder 0.1.5
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release 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