> For the complete documentation index, see [llms.txt](https://docs.orbitfin.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.orbitfin.ai/orbit-api-reference/a2a/5.-a2a-best-practices.md).

# 5. A2A Best Practices

Call by default, don't let the outer Agent guess blindly If the user's message may be related to your own Agent Builder agent, prioritize calling Agent Builder to confirm, rather than answering directly based on the outer Agent's own knowledge — the cost of one unnecessary call is far lower than the cost of guessing wrong once.

Make good use of multi-turn context The creation process is completed step by step. Be sure to include the contextId in each round of requests, otherwise Agent Builder will treat the new request as a brand-new interaction and cannot correctly advance the previous draft.

Show the raw results as much as possible to reduce semantic loss The content returned by Agent Builder has already been designed (structured data + readable text). The less the outer Agent paraphrases, the higher the information fidelity. If paraphrasing is necessary, avoid restating structured facts such as numbers and lists — copy them directly, do not rewrite them from memory.

Convert authentication failures / network exceptions into user-friendly prompts Do not display the raw error stack directly to the end user; after catching the exception, convert it into a simple prompt (for example, "Temporarily unable to connect, please try again later"), and preserve the possibility of retrying.

For scenarios that require "seeing progress in real time", use message/stream For time-consuming interactions such as step-by-step creation, using the SSE streaming interface allows users to see intermediate progress, rather than waiting a long time for a one-time return.

Do not hard-code which capabilities Agent Builder supports Agent Builder's capabilities will continue to grow. Reading the Agent Card gives you the current latest list of capabilities, so there is no need to maintain a static list in your own code.
