Endpoints are already beans you can configure yourself using Spring, Guice, CDI, Java code or whatever and wire them into a CamelContext.
Dependency injection frameworks can already configure Endpoints today. No need for a new magic interface and yet more work for component/endpoint developers to have to create (which can soon get out of sync with the actual implementation code).
Tools can use introspection already to figure out how to configure an Endpoint. Just check out how Spring does this or tools based around Spring.
There could be some added annotations we could use to make it easier to add extra metadata to tools; though where possible I think its better for the community to stick to standards that exist around DI (CDI / Spring / Guice) or around things like the Bean Validation Framework for adding things like min/max validation annotations. Those annotations are already well defined - lets not try reinvent DI / validation wheels.
I'd say tools either go the URL option, or go the bean configuration option using (say) spring/guice/CDI. The URI is always going to be a subset of the actual configuration; if you really want to support full endpoint configuration then the only real option is the full DI route; as there are things you can configure though DI tooling you can't through URIs.
In terms of the EndpointConfiguration interface, fromUri() makes no sense - since that is what a Component does. (Its really its main responsibility). There's no point forcing implementors to do the same thing twice in 2 separate APIs.
In terms of toUri() for an Endpoint; this is of dubious value IMHO; since its easily possible to create an Endpoint, configure it and then not be able to create a URI which truly reflects the configuration. Its way too easy to loose information; so why even bother trying to turn an Endpoint bean back into a URI? Just use the Endpoint object directly. Taking an Endpoint bean thats been configured somehow and turning it back into a URI just seems to be asking for trouble - when there's no real need to do that - just reuse the Endpoint object as is.