First, You must pass to commands ui from repo object: repo.ui:
commands.incoming(repo.ui, repo)
(http://mercurial.808500.n3.nabble.com/repository-default-not-found-using-API-td3999339.html) And than we have KeyError: 'bundle'
I dont know why mercurial does not set the default for options bundle and force, so we need pass its too:
commands.incoming(repo.ui, repo, bundle=None,force=False)
Also, You can set hardly your remote repo:
commands.incoming(repo.ui, repo, source='default', bundle=None,force=False)
For more see lib/site-packages/mercurial/commands.py, hg.py