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 same-origin enriched bundles 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, and receive callback-safe enriched bundles without running TOOL infrastructure for the initial integration path.
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 enriched bundles when the payload is same-origin safe. |
| 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 callback field in SendBundleArgs only when the builder wants same-origin enriched bundles returned. |
| 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 callback authenticated and same-origin safe
Policy->>Callback: eth_sendBundle(source txs + searcher txs)
else no callback or unsafe payload
Policy->>Native: Keep commitment inside TOOL path
end
Callback Receiver¶
When a callback is configured and routing policy allows it, TOOL returns an enriched bundle to the builder's receiver using the callback receiver contract. The returned payload is intended to pass through an existing builder pipeline without requiring TOOL-specific block-building logic.
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¶
Flashbots-style authentication is required for callback-enabled sources. Callback participation is optional; a builder may submit flow without asking TOOL to return enriched bundles.
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. In later production setups, TOOL can both return enriched bundles to builders and submit final blocks through its own relay path.
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 callback-safe"| 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 | Callback retry and timeout policy must fit the block/slot deadline; failed callbacks are not rerouted to alternate destinations. |
| Enriched commitment contains mixed-origin private flow | Do not return it to a single external source in the current implementation. |
| Parent or fork choice changes make an enriched commitment stale | Treat the commitment as stale according to the active block-building deadline. |