Looks like it's defined using protocol buffers, with "rich Go and Rust bindings" and links to implementations for many other languages.
> Note on the name: SCIP is pronounced the same way as “skip” and it’s a recursive acronym that stands for “SCIP Code Intelligence Protocol.”
> SCIP is also a purposeful nod to SICP (Structure and Interpretation of Programs), a book about analyzing programs.
https://sourcegraph.com/blog/announcing-scip#:~:text=SCIP%20...
https://en.wikipedia.org/wiki/Secure_Communications_Interope...
Uber uses SCIP as part of the LSP implementation for our Java monorepo (Pieces of which we've [open-sourced](https://github.com/uber/scip-lsp)). Standardizing on SCIP has helped us generalize tools to be independent of the compiler/language ecosystem (eg we could do call-stack-analysis on any project that exports valid SCIP; do feature flag cleanup; find refs/impls across a wider scope than most LSP servers can handle due to memory constraints).