portable serves the defer_loading tools with router-built search and call wrappers on any model and keeps the catalog fixed. universal defers every wrappable tool behind the same wrappers so the provider-facing tool list never changes, and rebuilds the catalog from each request so tools can be added or removed mid-conversation.