The agent insists an issue does not exist and creates a duplicate — while the issue is right there in Linear. No error ever appears. Why?
The silent failure of Linear automation, with two compounding causes. First: archived and completed issues are excluded from default list and search scopes, so the agent queries the live set, finds nothing, and concludes creation is safe. Second: display-key confusion — the human says ENG-123, the API wants an internal UUID, and a fuzzy resolution step silently maps to nothing. The engineering fix: before any create operation, require a search that explicitly includes archived and completed states (the server exposes filters for this), and reference issues by full identifier only after a grounding lookup. A duplicate ticket is never a create bug — it is always a search-scope bug.
Can the agent move issues through custom workflow states?
Yes — Linear's workflow states are per-team and fully API-addressable, including custom states. But state names vary per team, so the agent must look up the team's state list rather than assume a universal Done exists.
Does it respect cycle boundaries automatically?
Only if prompted to. Creating an issue does not auto-assign it to the active cycle — the agent must explicitly resolve the current cycle and set it. Ungrounded creates land in the backlog by default, which is either correct behavior or silent mis-filing depending on your intent.
Hosted endpoint vs community self-hosted servers?
The hosted mcp.linear.app endpoint is maintained by Linear, OAuth-secured, and tracks API changes automatically. Community GraphQL wrappers require personal API keys (which act as you, 24/7, from any machine holding them) and rot as the schema evolves. Use hosted unless you need to strip write tools at the transport layer.