Idea for a tool for candid indexing and interface searching

I have been pondering with an idea for a little while now and would like to get feedback from the community about its applicability and usefulness.

The idea is to create an indexing and search tool for candids of all canisters on IC. The purpose of this tool is to have a method to quickly and easily find canisters which have specific interfaces or types integrated in their candid. In a far stretched analogy, it would by like a Google for canister candids. The difference to tools like canlista, where users can look up the candid of canisters, is that here users could easily search through the candid of all canisters (with some limitations).

An immediate application for such a tool could be the following.

  • Find canisters that follow certain standards, like NFT and fungible token standards. One could filter for canisters that have certain interfaces implemented and curate a list of those. This would allow to obtain a more complete list of these canisters as opposed to the manually controlled lists offered by DAB.

Some thoughts have gone into the possible implementation and since I’m currently learning Motoko and how the IC works, there are certainly many steps missing. In a nutshell, the tool would store the information about each canister’s candid in an indexer and allow users of the tool to quickly query which canisters contain which candid interface methods.

For a first proof of concept, a few steps would be involved

  • Get an up to date list of all canisters on IC and query their candids. → Could be done by crawling the canisters of IC or implement with existing tools like canlista.
  • Implement an indexing strategy for the candid that can be quickly queried for candid interfaces and the matching canisters.
  • Create an API that can be called to query the information.
  • Application token standards: Filter candid interfaces for the desired standards and curate the lists of canisters that follow these.

There are some direct limitations that came to my mind.

  • Only Motoko canisters publicly share their candid by default. Rust canisters need to manually make the candid available (see here). By utilizing tools like canlista, where canister controllers can upload their candid manually, the gap of available candids could be reduced but not entirely filled. On the other hand, some canisters may not want to be discoverable and decide not to share their candid for legitimate reasons.
  • Application token standards: How to avoid picking canisters that have the same interfaces as certain standards implemented but are not actually an NFT or fungible token canister?

I hope I could clearly describe the idea, otherwise, let me know and I try to clarify better.

Particular questons that came to my mind are the following:

  • Do you think such a tool could be useful?
  • What possible applications do you see for such a tool?
  • What do you think about the limitations?
  • What other limitations do you see?

Looking forward to getting feedback on this.