I think what you’re looking for is community.lexicon.calendar.SearchEvents. Under the hood, this is what drives the widgets feature.
Example: https://smokesignal.events/xrpc/community.lexicon.calendar.SearchEvents?query=upcoming
The query query string parameter is required and can be used with the optional repository query string parameter to limit results to a single identity. Currently pagination is disabled and it’ll only give the first 10 search results, but given load isn’t crazy, I’m cool with opening that up substantially.