{
"request": "Triage Jira ticket MZCLD-3742: Expose a stable, authenticated read API of the service catalog for programmatic and agent consumers",
"references": [
"https://mozilla-hub.atlassian.net/browse/MZCLD-3742"
],
"sourceContext": {
"issue": "MZCLD-3742"
}
}MZCLD-3742 requests a stable, authenticated read-only API for the MozCloud service catalog aimed at headless/agentic consumers, distinct from today's human-oriented Auth0 SSO access to Backstage. The ticket is well-scoped but currently in Backlog with zero comments and an explicit, unresolved dependency on two other in-flight tickets (MZCLD-3734 and MZCLD-3643) that govern the IAP/SSO fronting decision for Backstage. I attempted to pull those linked tickets for context but was blocked by run-scope policy (only MZCLD-3742 is in this run's subject), so I could not confirm their current status. Triage should acknowledge the dependency explicitly, flag the sequencing risk, and request the five sub-scopes (machine identity, read API surface, stability contract, rate limits, client docs) be broken into trackable sub-tasks once the auth decision lands.
[
{
"capability": "jira.issue.read",
"args": {
"key": "MZCLD-3742"
},
"result": {
"key": "MZCLD-3742",
"summary": "Expose a stable, authenticated read API of the service catalog for programmatic and agent consumers",
"status": "Backlog",
"description_text": "An Agentic Platform has to be able to enumerate MozCloud services programmatically , with no human in the loop. Today access is designed around interactive humans (Auth0 SSO), which does not serve a headless client. Scope Machine identity \u2014 a documented, supportable way for a non-human client to authenticate. This has to survive whatever we decide about fronting Backstage with IAP or a WAF: IAP in particular makes headless access awkward, since a service account needs an IAP-signed JWT rather than a user session. Read API surface \u2014 confirm the Backstage Catalog API endpoints an agent needs to list services and read an individual entity. Stability contract \u2014 state which endpoints are considered stable, and how they are versioned, so an agent integration does not silently break. Rate limits \u2014 define what a programmatic consumer is allowed to do, so agent traffic cannot degrade the service for humans. Client documentation \u2014 write down how to authenticate and query, well enough that someone can wire up a client without reverse-engineering it. Dependencies The auth path here is coupled to the IAP/SSO decision \u2014 see MZCLD-3734 and MZCLD-3643 . This ticket should not invent a second auth mechanism ahead of that decision; it should make sure programmatic access is a first-class requirement of that decision.",
"comment_count": 0,
"comments": []
}
},
{
"capability": "jira.issue.read",
"args": {
"key": "MZCLD-3734"
},
"result": {
"error": "read blocked by policy: resource not in run subject",
"args": {
"key": "MZCLD-3734"
}
},
"blocked": true
},
{
"capability": "jira.issue.read",
"args": {
"key": "MZCLD-3643"
},
"result": {
"error": "read blocked by policy: resource not in run subject",
"args": {
"key": "MZCLD-3643"
}
},
"blocked": true
}
]{
"model": "claude-sonnet-5",
"input_tokens": 5881,
"output_tokens": 2304,
"estimated_cost_usd": 0.052203
}[]