<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Timo Hähne</title>
    <description>The latest articles on DEV Community by Timo Hähne (@iparker96).</description>
    <link>https://dev.to/iparker96</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3920636%2F3291d06f-7974-4586-a6eb-2b91bfd5199a.jpg</url>
      <title>DEV Community: Timo Hähne</title>
      <link>https://dev.to/iparker96</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iparker96"/>
    <language>en</language>
    <item>
      <title>We built an MCP server for employment contracts — remote HTTP, QES/eIDAS, 12 tools</title>
      <dc:creator>Timo Hähne</dc:creator>
      <pubDate>Fri, 08 May 2026 19:24:01 +0000</pubDate>
      <link>https://dev.to/iparker96/we-built-an-mcp-server-for-employment-contracts-remote-http-qeseidas-12-tools-4gh3</link>
      <guid>https://dev.to/iparker96/we-built-an-mcp-server-for-employment-contracts-remote-http-qeseidas-12-tools-4gh3</guid>
      <description>&lt;p&gt;If you've been building AI agent workflows, you've probably hit this wall: your agent can reason, plan, and execute — but connecting it to external systems still means writing custom API wrappers, auth logic, and error handling for every service.&lt;/p&gt;

&lt;p&gt;MCP (Model Context Protocol) solves this through standardization. A service that exposes an MCP server gives any MCP-compatible agent direct tool access — no custom integration needed.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://staffsign.de" rel="noopener noreferrer"&gt;staffSign&lt;/a&gt; — a digital employment contract API for HR and staffing agencies in the DACH region — with this in mind. The primary interface isn't a UI. It's the MCP server.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup (Claude Desktop / Cursor / Claude.ai)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"staffsign"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.promotionbasis.de/api/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"X-Api-Key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your-api-key&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remote HTTP server — nothing to install, no &lt;code&gt;mcp-remote&lt;/code&gt; needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  12 tools across two areas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Contract lifecycle:&lt;/strong&gt; &lt;code&gt;create_contract&lt;/code&gt;, &lt;code&gt;send_contract&lt;/code&gt;, &lt;code&gt;get_contract&lt;/code&gt;, &lt;code&gt;search_contracts&lt;/code&gt;, &lt;code&gt;cancel_contract&lt;/code&gt;, &lt;code&gt;delete_contract&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Template management:&lt;/strong&gt; &lt;code&gt;create_contract_template&lt;/code&gt;, &lt;code&gt;update_contract_template&lt;/code&gt;, &lt;code&gt;get_contract_template&lt;/code&gt;, &lt;code&gt;search_contract_templates&lt;/code&gt;, &lt;code&gt;activate_contract_template&lt;/code&gt;, &lt;code&gt;archive_contract_template&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A typical agent workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;candidate accepts offer in ATS
→ agent: create_contract(templateId, participants, signatureLevel="QES")
→ agent: send_contract(contractId)
→ candidate signs on phone (QES — eIDAS qualified, legally binding in all EU countries)
→ webhook: contract.signed → agent triggers onboarding
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full workflow in under 2 minutes, no human in the loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's notable from an MCP perspective
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remote HTTP&lt;/strong&gt; — direct &lt;code&gt;url&lt;/code&gt; + &lt;code&gt;headers&lt;/code&gt; config, no stdio wrapper needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QES (eIDAS)&lt;/strong&gt; — qualified electronic signature, legally binding across all EU countries, included by default&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency keys&lt;/strong&gt; on all POST endpoints — safe for agent retry logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured error responses&lt;/strong&gt; with recovery hints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhook events&lt;/strong&gt; for event-driven pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why we built the MCP server as the primary interface
&lt;/h2&gt;

&lt;p&gt;Most employment contract tools are built around a UI. We made a different bet: within 2-3 years, most integrations will be done by AI agents, not humans writing custom code. So we built the MCP server first, not as an afterthought.&lt;/p&gt;

&lt;p&gt;Pay-per-use from €3/contract, no subscription. Docs: &lt;a href="https://staffsign.de/docs" rel="noopener noreferrer"&gt;staffsign.de/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the remote HTTP setup, the QES/eIDAS angle, or the MCP design decisions.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>api</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
