zambo-haystack
Verifiable execution receipts for Haystack agents. Give your Haystack agent Zambo's 100+ live tools. Every tool call is executed by Zambo and mints a verifiable AER-1 receipt: a public URL carrying the tool, its arguments, the observed result, a SHA-256 fingerprint, and machine-readable JSON-LD.
from haystack.components.agents import Agent
from haystack.components.generators.chat import OpenAIChatGenerator
from zambo_haystack import zambo_tools
agent = Agent(
chat_generator=OpenAIChatGenerator(), # any Haystack chat generator works
tools=zambo_tools(["live_price", "prompt_shield"]),
)
result = agent.run([{"role": "user", "content": "What is the live BTC price?"}])
Bring any Haystack chat generator (OpenAIChatGenerator above needs OPENAI_API_KEY; the Zambo calls themselves need no account and no key).
No account. No API key. Free tier: 20 calls per tool per day.
What the receipt actually proves
Each receipt page (for example https://zambo.dev/run/<id>) is Zambo's tamper-evident record that Zambo executed the tool call itself: the tool name, the exact arguments your agent sent, the observed result, a timestamp, and a SHA-256 fingerprint of the record, published as JSON-LD. Anyone can re-verify it with no account.
Every Haystack tool returned by zambo_tool appends the minted receipt URL to its result text, and records it in a registry you can query with lookup_receipt(tool_name, arguments_json):
from zambo_haystack import lookup_receipt
url = lookup_receipt("live_price", '{"symbol": "BTC"}')
print(url) # https://zambo.dev/run/<id>
Or register a callback to capture each receipt as it is minted:
from zambo_haystack import zambo_tool
price_tool = zambo_tool(
"live_price",
on_receipt=lambda tool, url: print(f"[receipt] {tool}: {url}"),
)
Install
pip install zambo-haystack
One tool, custom schema
from zambo_haystack import zambo_tool
price_tool = zambo_tool(
"live_price",
params_json_schema={
"type": "object",
"properties": {"symbol": {"type": "string"}},
"required": ["symbol"],
},
)
Browse the full catalog any time with zambo_haystack.list_tools(), or pick tools by use case through Zambo's capability_search tool.
Notes
- Zambo calls need no key and no signup. Heavy runs (dozens of tool calls) will reach the free daily limit; the tool raises a clear error and the agent run continues with the other tools.
- The receipt registry is thread-safe and never breaks your run: the wrapper only reads and writes its own registry entry, and it ignores anything else in the pipeline.
- Receipts are public by design. Do not pass secrets as tool arguments.
Links
- Zambo: https://zambo.dev
- AER-1 receipt spec: https://zambo.dev/aer-1/
- Framework agent execution receipts: https://zambo.dev/guides/framework-agent-execution-receipts/
- What is an AI agent execution receipt?: https://zambo.dev/guides/ai-agent-execution-receipt/
MIT License.
Local AER-1 receipts (no network needed)
The package also mints AER-1 execution receipts locally, with no API calls:
from zambo_haystack import mint_receipt, verify_receipt
receipt = mint_receipt("my_tool", {"query": "hello"}, {"answer": "hi"}, ms=42)
assert verify_receipt(receipt) # recomputes the SHA-256 locally
Local receipts follow the AER-1 core members (id, created_at, tool, provenance_class, canonical_bytes, output_hash) and use the provenance class EXECUTED BY ZAMBO-HAYSTACK, naming this package as the recording system. They pass the same hash-recomputation check as any AER-1 receipt.
Metadata
Release files for zambo-haystack 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zambo_haystack-0.1.3.tar.gz | 9.0 kB | Without provenance | Details for zambo_haystack-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zambo_haystack-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for zambo_haystack-0.1.3-py3-none-any.whl |
Total release size: 17.9 kB
Release files / zambo_haystack-0.1.3.tar.gz
| Download URL | zambo_haystack-0.1.3.tar.gz |
|---|---|
| Size | 9.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
68dd166a90f9566c088fcee5d507b1b1ffb8d881d6966219a6d045acb6053daa
|
|
BLAKE2b-256 checksum How to use checksums |
9d1d65c84fecb2f9ff7199a4b23a74174ad0b04c39f142cb337491017d5eb65e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
rambo-pypi-grab/0.1.0
|
Release files / zambo_haystack-0.1.3-py3-none-any.whl
| Download URL | zambo_haystack-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73b28845a31c6c7ed56c0c0493808e66e6d94ac3fcf653c8dada8259d471a4ab
|
|
BLAKE2b-256 checksum How to use checksums |
01c2345b2bab15de91595e6f585c66559ec50d5f536979f654f3697b00066479
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
rambo-pypi-grab/0.1.0
|
Security for zambo-haystack 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.