Repository navigation
fix(mcp): Return only the email domain in list_cloud_organizations; fill workspace_url in list_cloud_workspaces - #1377
Conversation
list_cloud_organizations no longer returns full contact emails for every organization; it reports email_domain instead, while describe_cloud_organization returns both email and email_domain. describe_cloud_organization previously returned email=None because _get_organization_by_id uses the get_organization_info Config API, whose response does not include the contact email. CloudOrganization.email now falls back to the public organizations listing (one extra call, cached). list_cloud_workspaces now fills workspace_url the same way describe_cloud_workspace does. Co-Authored-By: AJ Steers <[email protected]>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksTesting This PyAirbyte VersionYou can test this version of PyAirbyte using the following: # Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1792013722-org-email-domain-workspace-url' pyairbyte --help
# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1792013722-org-email-domain-workspace-url'PR Slash CommandsAirbyte Maintainers can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful ResourcesCommunity SupportQuestions? Join the #pyairbyte channel in our Slack workspace. |
Code coverage overviewLanguages: Python Python / code-coverage/pytest-no-creds
View coverage of the 10 most impacted files.
Python / code-coverage/pytest
View coverage of the 10 most impacted files.
Python / code-coverage/pytest-unit
Line coverage data for the release-candidate/v1 branch is not yet available. View coverage of the 10 most covered files.
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. Updated |
…xture Co-Authored-By: AJ Steers <[email protected]>
There was a problem hiding this comment.
🟢 Approval recommended
The focused changes match the stated behavior, include regression coverage, and have no identified blocking issues.
0 open findings
What changed in this PR
Updates Cloud MCP responses to limit contact-email exposure in organization listings and include workspace links.
Changes:
- Organization listings return email domains; descriptions retain full emails.
- Organizations resolved by ID gain a cached email lookup fallback.
- Workspace listings include web URLs, with focused regression tests.
| File | Description |
|---|---|
| tests/unit_tests/test_mcp_cloud.py | Updates the organization fixture with an email domain. |
| tests/unit_tests/test_cloud_credentials.py | Tests email visibility, lookup caching, domain extraction, and workspace URLs. |
| airbyte/mcp/cloud.py | Updates organization response fields and workspace links. |
| airbyte/cloud/organizations.py | Adds domain extraction and cached email lookup. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Devin, confirm there aren't any notable performance penalties for this change. |
There was a problem hiding this comment.
Devin Review found 2 potential issues.
1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
|
Confirmed: no notable performance penalty. The only new API call is one extra call per describe-by-ID.
|
a7a63c1
into
release-candidate/v1
Overview
👉 TL;DR: Organization list results stop showing each organization's full contact email and show only its domain. Describing a single organization now returns the full email, which used to come back empty. Workspace list results now include the workspace web link, the same way describing a workspace does.
Specifically, this adds
email_domaintoCloudOrganizationResultandCloudOrganization, adds an org-listing fallback forCloudOrganization.email, and setsworkspace_urlinlist_cloud_workspaces.Changes
list_cloud_organizations: returnsemail_domain(lowercased, the part after@) and leavesemailnull.describe_cloud_organization: returns bothemailandemail_domain.CloudOrganization.email: theget_organization_infoConfig API response has no email field, so this was always null for orgs looked up by ID. It now falls back to the org listing (one cached lookup).list_cloud_workspaces: fillsworkspace_url, matchingdescribe_cloud_workspace.Risks
emailfromlist_cloud_organizationsresults now getsnull. Usedescribe_cloud_organization, or reademail_domain.Test plan
Link to Devin session: https://app.devin.ai/sessions/a51d808f26c9402fafc93e7640648187
Open in Devin Desktop: https://app.devin.ai/desktop/session/a51d808f26c9402fafc93e7640648187?variant=devin
Requested by: Aaron ("AJ") Steers (@aaronsteers)