This tutorial is not trying to prove that agents can chat with other agents. It uses data analytics to teach a more useful Agentic Resource Discovery pattern:
Agents can use capabilities they do not own.
The Agentic Resource Discovery protocol answers: what capabilities exist?
The runtime answers: how does a discovered capability become part of a real workflow?
The split matters. A catalog entry is metadata. A callable runtime target is an execution boundary with identity, policy, traces, and a local workflow around it.
The tutorial keeps the lifecycle explicit:
- ARD is enabled.
- A provider publishes a specific reasoner.
- A consumer imports the catalog entry.
- The consumer marks the import callable.
- A workflow calls the capability.
No single step silently grants all the others.
MarketDataCo owns:
- ClickHouse credentials.
- Row-level benchmark data.
- The privacy guard.
- The provider-side benchmark workflow.
ProductCo receives:
- an aggregate market answer;
- an external capability record;
- enough structure to compose the result into its own planning workflow.
That is the useful boundary. The consumer gets an answer, not the system behind the answer.
The provider call is not a single function. MarketDataCo runs:
fetch_market_sliceinterpret_market_positionapply_privacy_guardpackage_benchmark_context
ProductCo then composes the borrowed result through:
pricing_strategylaunch_motionrisk_reviewfinal_recommendation
Agentic Resource Discovery helps the consumer find the capability. The runtime lets both sides run their own multi-agent workflows around the boundary.
A connector usually gives a caller access to a system.
This pattern gives the caller access to a capability.
That is why the example uses ClickHouse as a stand-in for larger data platforms. A Snowflake, Databricks, ClickHouse Cloud, or internal data org could expose governed capabilities that answer bounded questions while keeping data, credentials, and policy in the provider control plane.
After running ./scripts/smoke.sh, inspect these surfaces:
http://localhost:8081/.well-known/ai-catalog.json- the provider catalog.http://localhost:8082/ui/- the consumer import and planning run.http://localhost:8081/ui/- the provider-side benchmark run.- The ProductCo response fields:
borrowed_capability,data_boundary,consumer_workflow, andcall_graph.
The key moment is seeing ProductCo's planning workflow depend on external.market_data.pricing_benchmark while MarketDataCo remains the owner of the data and execution.
After the local tutorial works, read the protocol and runtime docs in that order:
- Agentic Resource Discovery specification
- How to publish an ARD catalog
- AgentField external agent discovery guide
- AgentField service discovery
- AgentField cross-agent calls
The useful mental model is protocol first, runtime second: ARD tells consumers what exists; the runtime decides what can be imported, called, traced, and governed.