<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Asana on Christian Roy</title>
    <link>https://christianroy.dev/tags/asana/</link>
    <description>Recent content in Asana on Christian Roy</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 26 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://christianroy.dev/tags/asana/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Asana&#39;s official Claude MCP connector can&#39;t create tasks in Claude Code CLI because its tools require interactive UI</title>
      <link>https://christianroy.dev/til/asana-mcp-create-task-claude-code-cli/</link>
      <pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://christianroy.dev/til/asana-mcp-create-task-claude-code-cli/</guid>
      <description>&lt;p&gt;Asana&amp;rsquo;s official Claude connector uses a tool called &lt;code&gt;create_task_preview&lt;/code&gt; instead of
&lt;code&gt;create_task&lt;/code&gt;. The name suggests a preview, but it&amp;rsquo;s actually the primary creation tool
in the v2 integration. The catch: it requires an interactive UI to render a confirmation
step. Claude Code CLI can&amp;rsquo;t render that interface, so task creation silently fails.&lt;/p&gt;
&lt;p&gt;This was surfaced in the Asana forum after &lt;code&gt;create_task&lt;/code&gt; also went missing from v1 toolset
temporarily (Asana accidentally dropped it during a v2 update, now restored). Asana
confirmed the CLI issue separately and said they&amp;rsquo;re working on detecting whether the surface
supports interactivity before offering interactive tools. ETA: about a week from March 26.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTPie interprets numeric keys as array indexes, breaks Asana custom field updates</title>
      <link>https://christianroy.dev/til/httpie-asana-custom-fields-oom/</link>
      <pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://christianroy.dev/til/httpie-asana-custom-fields-oom/</guid>
      <description>&lt;p&gt;Asana custom field GIDs are long numeric strings. When you pass them as nested keys
in HTTPie&amp;rsquo;s bracket syntax, HTTPie sees a numeric key and assumes you&amp;rsquo;re building an
array, then tries to allocate memory up to that index. With a 16-digit GID, that&amp;rsquo;s
enough to OOM the process.&lt;/p&gt;
&lt;p&gt;This breaks:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https --session pat PUT https://app.asana.com/api/1.0/tasks/1208765432100001 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  data&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;custom_fields&lt;span class=&#34;o&#34;&gt;][&lt;/span&gt;1205432109876543&lt;span class=&#34;o&#34;&gt;]=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1205432109876544&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;HTTPie reads &lt;code&gt;1205432109876543&lt;/code&gt; as an array index and tries to build a sparse array
of that size. It never gets to make the request.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LLMs struggle with Asana&#39;s strict non-standard rich text format</title>
      <link>https://christianroy.dev/til/asana-rich-text-llm/</link>
      <pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://christianroy.dev/til/asana-rich-text-llm/</guid>
      <description>&lt;p&gt;Asana&amp;rsquo;s rich text API doesn&amp;rsquo;t use standard HTML. It accepts a strict subset with
specific rules: only certain tags are allowed, nesting rules differ from what browsers
tolerate, and the format is closer to XML than HTML, meaning unclosed tags, loose
attributes, or anything outside the allowed set will be rejected or silently mangled.&lt;/p&gt;
&lt;p&gt;LLMs tend to produce plausible-looking but subtly wrong output here. They&amp;rsquo;ll use tags
Asana doesn&amp;rsquo;t support, nest things incorrectly, or generate valid HTML that Asana&amp;rsquo;s
parser rejects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP servers support prompts as a first-class concept, separate from tools</title>
      <link>https://christianroy.dev/til/mcp-server-asana-1-1-0-prompts/</link>
      <pubDate>Tue, 03 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://christianroy.dev/til/mcp-server-asana-1-1-0-prompts/</guid>
      <description>&lt;p&gt;When I shipped mcp-server-asana 1.1.0, the headline addition wasn&amp;rsquo;t the six new
Asana tools (task dependencies, stories, subtasks, project sections). It was prompts.&lt;/p&gt;
&lt;p&gt;In the MCP protocol, prompts and tools are distinct concepts. Tools are individual
actions an LLM can invoke: create a task, add a dependency, fetch a comment. Prompts
are predefined conversation templates: parameterized, reusable starting points that
an MCP host can surface directly to users.&lt;/p&gt;
&lt;p&gt;The task-summary prompt added in 1.1.0 illustrates the difference. Instead of leaving
the LLM to figure out what to fetch and how to present it, the prompt defines a
scaffold: current status, key updates, blockers, next steps. The LLM gets structure,
not a blank page.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
