Skip to content

feat(integrations): add looot MCP integration - #765

Open
walidboulanouar wants to merge 1 commit into
OpenHands:mainfrom
walidboulanouar:add-looot-integration
Open

walidboulanouar wants to merge 1 commit into
OpenHands:mainfrom
walidboulanouar:add-looot-integration

Conversation

@walidboulanouar

@walidboulanouar walidboulanouar commented Oct 11, 2026 •

Copy link
Copy Markdown

HUMAN:
I run looot. It gives agents one account for 2,500+ data endpoints. Happy to answer questions

Why

looot (https://looot.ai) is a hosted MCP server with one account and one prepaid balance for 2,500+ data API endpoints (work emails, phone numbers, company and people search, web search, LinkedIn profiles, local businesses). The agent searches the catalog, sees the price before a call runs, and pays per call. A failed call costs nothing. There is no subscription, and top-ups start at $5. The integration catalog has Exa, Tavily and Brave Search for web search but nothing for people and company data.

Summary

  • Add integrations/catalog/looot.json: a hosted Streamable HTTP MCP server at https://api.looot.ai/mcp. Option 1 is OAuth 2.1 with PKCE and dynamic client registration. Option 2 is an optional bearer token.
  • Regenerate integrations/catalog-index.js with npm run build:integrations.

Issue Number

None.

How to Test

Checked against the live endpoints, no paid run:

curl -s https://api.looot.ai/.well-known/oauth-authorization-server
  authorization_endpoint https://api.looot.ai/oauth/authorize
  token_endpoint         https://api.looot.ai/oauth/token
  registration_endpoint  https://api.looot.ai/oauth/register
  code_challenge_methods_supported ['S256']
  token_endpoint_auth_methods_supported ['none', ...]

curl -si -X POST https://api.looot.ai/mcp -H 'content-type: application/json' -d '{}'
  HTTP 401, www-authenticate: Bearer resource_metadata="https://api.looot.ai/.well-known/oauth-protected-resource", scope="catalog.read runs.execute runs.read usage.read"

Against this branch:

node scripts/build-integration-catalog.mjs          # regenerates catalog-index.js, one new import
python3 -c "Draft202012Validator(schema).iter_errors(looot.json)"   # schema errors: []
node -e "listIntegrationCatalog({mcp:true,oauth:true}).some(x => x.id==='looot')"   # true

I did not run the pytest suite (no pytest in my environment), so tests/test_catalog_schema.py and tests/test_integration_catalog_in_sync.py are covered only by the schema check and the regenerate step above. I did not exercise the OpenHands install modal. A live call needs a looot account (sign in with the browser flow on first use).

Video/Screenshots

None, data-only change.

Notes

Adds integrations/catalog/looot.json (hosted OAuth MCP at https://api.looot.ai/mcp with a
bearer-token fallback) and regenerates integrations/catalog-index.js.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the type: feat A new feature label Oct 11, 2026
@walidboulanouar
walidboulanouar marked this pull request as ready for review October 11, 2026 22:14

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant