linear
linear.
A Linear issue — list/filter, full-text search, fetch one,
setup & usage
crée une clé API personnelle dans Linear (Settings → Security & access → Personal API keys — voir la doc développeur), puis colle-la dans oto.
linear gère le suivi de tickets/projets de l'équipe, en 8 tools :
linear_issue(op="list", team_id="...", state_id="...")linear_issue(op="search", query="facturation")linear_issue(op="create", title="...", team_id="...", description="...")linear_issue(op="update", issue_id="...", assignee_id="...", state_id="...")linear_team(op="states", team_id="...") (à faire avant un update qui change le statut — il faut le state_id)linear_comment(op="create", issue_id="...", body="...")linear_project(op="list", team_id="...")linear_project(op="create", name="...", team_ids=["..."]) puis op="update", status_id="..." (status_id — pas un statut en texte libre, lis-le sur un projet existant via op="get"|"list")linear_project(op="delete", project_id="...") / linear_label(op="delete", label_id="...")linear_cycle(op="list", team_id="...")linear_label(op="list", team_id="...")linear_user(op="viewer")linear_webhook(op="create", url="...", team_id="...", resource_types=["Issue"]) (resource_types est requis par Linear, pas seulement url)Construit à partir de la documentation développeur Linear (GraphQL, pas de spec OpenAPI — Linear expose un schéma GraphQL, pas un contrat REST), puis testé en live le 2026-08-21 contre un vrai workspace (introspection GraphQL + cycle complet create/get/update/delete/archive sur issues, commentaires, projets, labels, webhooks, tout nettoyé après coup). 6 vrais bugs trouvés et corrigés, aucun détectable par la seule introspection :
Project n'a pas de champ state en lecture (c'est status, un objet) ni en écriture (ProjectCreateInput/ProjectUpdateInput n'ont que statusId) — d'où status_id plutôt qu'un statut en texte libre sur linear_project.list_issues/list_projects/list_cycles/list_labels/search dès qu'UN SEUL filtre parmi plusieurs était absent.Query.webhooks n'accepte aucun argument filter/teamId — le filtrage par équipe passe par team(id:){webhooks{...}}.issueSearch existe dans le schéma mais est mort en pratique (« This endpoint deprecated. ») — linear_issue(op="search") passe désormais par issues(filter:{searchableContent:{contains:...}}).linear_project(op="list") a besoin du wrapper some: (accessibleTeams est une collection, pas un filtre simple) — confirmé contre un vrai projet."ENG-123") fonctionne, confirmé en live — identique à l'UUID.Contrairement à la plupart des API à clé de ce connecteur (Fireflies, Grain, Granola…), Linear attend la clé brute dans le header Authorization, sans préfixe Bearer — une spécificité documentée par Linear elle-même, pas une découverte empirique.
outils
utilisation
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.pipx install oto-cli puis oto linear …