@@ -85,6 +85,8 @@ async def main() -> None:
8585 inspection = await service.inspect()
8686 print (inspection.document.name)
8787 print ([operation.name.value for operation in inspection.document.operations])
88+ protocols = inspection.document.protocols
89+ print ([protocol.name.value for protocol in protocols.trust] if protocols else [])
8890
8991 page = await service.search_offerings(
9092 OfferingSearchRequest(query = " plant" ),
@@ -200,7 +202,7 @@ a fragment reference such as `#node`.
200202` Service.handle() ` , and copy the returned status, headers, and body into the framework response.
201203
202204``` python
203- from offering_protocol.core import Collection, Offering
205+ from offering_protocol.core import Collection, Offering, Protocol, TrustProtocol
204206from offering_protocol.service import ServiceBuilder, StaticCatalog, StaticCatalogOptions
205207
206208catalog = StaticCatalog(
@@ -226,6 +228,7 @@ service = (
226228 endpoint_base = " /odp" ,
227229 )
228230 .keywords([" houseplants" , " indoor-plants" ])
231+ .protocols([], [], [TrustProtocol(name = Protocol.TAP )])
229232 .website_url(" https://example.com" )
230233 .build(catalog)
231234)
@@ -245,9 +248,9 @@ See [examples/README.md](./examples/README.md) for a runnable Service and Agent.
245248## Protocol composition
246249
247250ODP discovers what a Service offers and how an Agent can act on an Offering. A Service document and
248- its Actions can advertise AEP enrollment and MPP or x402 payment requirements , but ODP does not
249- create credentials, invoke Actions, or submit payments. Applications compose the appropriate
250- enrollment and payment client around an Action resolved through ODP.
251+ its Actions can advertise enrollment, payment, and trust protocols , but ODP does not create
252+ credentials, invoke Actions, submit payments, or implement trust protocols . Applications compose
253+ the appropriate protocol clients around an Action resolved through ODP.
251254
252255## Errors and validation
253256
0 commit comments