Real endpoints don't always return the same result for the same request. With declarative scenarios you can replicate stateful behavior in a way that's simpler than implementing the actual service.
Are your tests randomly failing or taking ages to finish? Chances are it's due to a race condition or pointless waiting. Use release keys to precisely control when a response is sent to the application under test!
The way you build mocks is the same regardless if you're testing just a small function or the whole application.
Thanks to sessions you don't need to worry about the state leaking between tests. Simply add a suffix to the URL and get instantaneous, isolated state.
The mocks run as an independent HTTP server. Anything that works with HTTP will work with these mocks.