PBS builder branch
External Builder Integration¶
This guide is for external PBS builders that want to submit private or pre-merged bundles into TOOL and optionally receive solutions built purely on their own flow back through a callback.
Value Proposition¶
External PBS builders can keep their existing bundle pipeline, send atomic bundles to TOOL through a familiar eth_sendBundle interface, control which external builders may receive that flow with the builders field, and receive same-origin solutions through a callback without running TOOL infrastructure.
Builder Role¶
In this integration, a PBS builder can act as a source of private or pre-merged orderflow and as a downstream receiver of enriched bundles.
| Builder capability | Integration purpose |
|---|---|
| Atomic bundles from the builder pipeline | Source units that TOOL preserves as a base commitment. |
| Private orderflow the builder is allowed to route | Input that can be made available to TOOL searcher competition through commitments. |
| Callback endpoint | Receives solutions whose bases all carry the builder's callback; mixed-origin solutions never reach a callback. |
builders allow-list |
Limits which external builders receive the bundle and solutions built on it. |
| Downstream builder or relay path | Lets callback payloads pass through existing builder infrastructure. |
A builder does not need direct access to TOOL's internal commitment network, native searcher feed, or subslot consensus to use this integration.
Builder-Facing Submission¶
External builders submit source bundles through eth_sendBundle. TOOL turns an accepted builder bundle into a source commitment that searchers can build around according to the allowed commitment view.
| Integration concern | Builder guidance |
|---|---|
| Existing bundle pipeline | Keep producing Flashbots-style signed transaction bundles and send them to a TOOL endpoint that supports source ingress. |
| Commitment identifier | Treat the accepted bundle result as the TOOL commitment id used for downstream tracking. |
| Callback participation | Use the optional callbackUrl in SendBundleArgs only when the builder wants same-origin solutions returned. A bundle with a callback is not itself forwarded to external builders; a bundle without a callback is forwarded to its builders right away. |
| Builder allow-list | The builders field is supported. Without a callback the default is all builders; with a callback the default is none; [] means none. |
| Compatibility details | Use Reference for exact request, response, and rejection behavior. |
Callback Loop¶
sequenceDiagram
autonumber
participant Builder as PBS builder
participant TOOL as TOOL source intake
participant Searcher as Searcher inside TOOL
participant Policy as TOOL routing policy
participant Callback as Builder callback
participant Native as TOOL path
Builder->>TOOL: eth_sendBundle(builder bundle, callback optional)
TOOL->>TOOL: Validate and create source commitment
TOOL-->>Builder: bundleHash
TOOL-->>Searcher: Allowed commitment view
Searcher->>TOOL: Submit bundle built on source commitment
TOOL->>Policy: Validate enriched commitment
alt all bases carry the builder's callback
Policy->>Callback: eth_sendBundle(source txs + searcher txs), signed by delivering node's FlashbotsKey
else no callback on the bundle
Policy->>Native: Deliver to the allowed builders only
else mixed-origin (merged with another source)
Policy->>Native: Never sent to a callback; only builders allowed by every base, or the external relay on relay merging nodes
end
Callback Receiver¶
When a solution's bases all carry the builder's callback, TOOL POSTs it to the builder's receiver using the callback receiver contract, in the same eth_sendBundle format that goes to builders. The payload passes through an existing builder pipeline without TOOL-specific block-building logic. See Callback Endpoint for the full receiver requirements.
| Callback property | Behavior |
|---|---|
| Sender | The TOOL node whose searcher built the solution, signed with that node's FlashbotsKey in X-Flashbots-Signature. |
| Count | Zero, one or many callbacks per submission, possibly from different nodes with different keys. Deduplicate by transaction hashes. |
| Timeout | 5 seconds; HTTP status below 300 and a JSON body without error. |
| Retry | None. |
| Mixed-origin solutions | Never delivered to any callback. |
Bundle Atomicity and Size¶
TOOL treats each submitted builder bundle as an atomic base unit:
| Rule | Meaning for builders |
|---|---|
| No splitting | TOOL does not split the submitted bundle. |
| No internal reordering | TOOL does not reorder transactions inside the submitted bundle. |
| Searcher extension | TOOL may append searcher transactions on top of the resulting commitment if the searcher bundle validates. |
| Validation gates | TOOL may reject the bundle if it is stale, invalid, conflicts with current state, or violates node-level constraints. |
There is no separate product-level gas or byte cap for builder bundles in the first version beyond implementation and resource constraints. If a subslot-sized bundle is accepted, TOOL searchers compete around that corresponding commitment.
Builders can choose bundle granularity. Smaller opportunity-sized bundles can give TOOL searchers more room to add value, while larger bundles may be simpler for existing builder pipelines.
Revenue Attribution¶
TOOL attributes revenue to the bundle originator it sees: the source whose commitment was included.
If an OFP sends flow to a PBS builder and the builder merges that flow into a larger bundle before submitting it to TOOL, the builder is the visible originator for that commitment unless a finer attribution model is available.
Authentication, TEE Verification, and Transport¶
Send an X-Flashbots-Signature header with each request to a TOOL node, as described in Conventions.
Callback participation is optional; a builder may submit flow without asking TOOL to return solutions. Callbacks are signed by the delivering TOOL node's FlashbotsKey; verify X-Flashbots-Signature against the TOOL signing addresses you trust as described in Callback Endpoint.
TEE verification is optional from the builder's perspective. Builders that require end-to-end verification can verify TOOL attestation before sending private flow. The stronger private-flow setup is RA-TLS, where the builder verifies attestation and sends bundles over a TLS connection bound to the attested service.
Later Delivery Paths¶
The callback path can coexist with TOOL-native block delivery. TOOL can both return same-origin solutions to a builder's callback and deliver to the external builders allowed by the builders field or, on relay merging nodes, to the external relay. See Delivery Rules.
flowchart TB
subgraph ToolNetwork["TOOL network"]
direction TB
Commitments["Accepted TOOL commitments"]
Finalization["TOOL finalization and routing"]
Commitments -->|"subslot and block policy"| Finalization
end
subgraph CallbackDelivery["External builder callback path"]
direction TB
CallbackPath["Enriched bundle callback"]
BuilderPipeline["Builder pipeline"]
BuilderRelay["Builder / relay path"]
CallbackPath -->|"eth_sendBundle payload"| BuilderPipeline
BuilderPipeline -->|"existing downstream delivery"| BuilderRelay
end
subgraph NativeDelivery["TOOL-native delivery path"]
direction TB
RelayPath["TOOL relay path"]
MEVBoost["MEV-Boost relay"]
Validator["Validator / beacon node"]
RelayPath -->|"payload delivery"| MEVBoost
MEVBoost -->|"block proposal path"| Validator
end
Finalization -->|"same-origin solutions"| CallbackPath
Finalization -->|"native block production"| RelayPath
style ToolNetwork fill:#edf7f5,stroke:#0f8b6f,stroke-width:2px
style CallbackDelivery fill:#f8fafc,stroke:#64748b,stroke-width:2px
style NativeDelivery fill:#fff1f2,stroke:#b03a5b,stroke-width:2px
Failure Modes¶
| Failure mode | Behavior |
|---|---|
| Callback URL fails or exceeds 5 seconds | Not retried and not rerouted to alternate destinations. Delivery is best effort. |
| Forwarding to an external builder fails | Only logged; never reported to the submitter. |
| Enriched commitment contains mixed-origin private flow | Callback becomes mixed-origin; never delivered to any callback. Goes only to builders allowed by every base, or to the external relay on relay merging nodes. |
Callback set and no builders |
Bundle and its solutions reach only the callback; merged solutions only via relay merging nodes. |
None of the builders names is known |
The call fails with unknown builders: .... |
| Raw transactions of a solution are missing | Delivery waits until the block is sealed; dropped if a new block starts or the commitment leaves the pool. |
See Errors and Delivery Rules.