Now in early access

Your Toolbox for Tiny, Composable Functions

Write code. Hit save. It's deployed. Compose functions, trigger them instantly, let AI write new ones.

1. Write
2. Save
3. Deployed
david / get-weather
get-weather.ts
import fn from "@microfn/fn";

export async function main() {
  const res = await fetch("https://wttr.in/Tokyo?format=3&m");
  const text = await res.text();

  // Compose with a notifier function
  await fn.executeFunction("david/send-discord-message", {
    channelId: "1419082455608197140",
    content: text,
  });

  return text;
}

curl -X POST https://microfn.dev/run/david/get-weather

Start Building

No credit card • Deploy in seconds • Free tier available

One Function, Many Ways In

Trigger your function from anywhere — HTTP webhooks, scheduled jobs, inbound email, or your AI assistant.

Your Function
david/send-discord
Deployed
Webhook
POST /run/:user/:fn
AI Assistant
MCP tool calls your function
Scheduled (CRON)
Runs on a schedule
Siri Shortcuts
Voice and iOS automation
Webhook
POST /run/:user/:function
AI Assistant
MCP tool calls your function
Scheduled (CRON)
Runs on a schedule
Siri Shortcuts
Voice and iOS automation
Your Function
david/send-discord

Compose and Link Functions

Functions can call other functions. Build small, compose big.

get-weather.ts
export async function main() {
  const res = await fetch(
    "https://wttr.in/Tokyo"
  );
  return res.text();
}
weather-to-discord.ts
import fn from "@microfn/fn";

export async function main() {
  const weather = await fn.executeFunction(
    "david/get-weather"
  );

  return fn.executeFunction(
    "david/send-discord",
    { message: weather }
  );
}
send-discord-message.ts
export async function main(input: { channelId: string, content: string }) {
  const token = await secret.getRequired("DISCORD_BOT_TOKEN");

  const response = await fetch(
    `https://discord.com/api/v10/channels/${input.channelId}/messages`,
    {
      method: "POST",
      headers: {
        Authorization: `Bot ${token}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ content: input.content }),
    },
  );

  if (!response.ok) {
    const data = await response.json().catch(() => ({}));
    throw new Error(`Discord error: ${response.status} ${JSON.stringify(data)}`);
  }

  return await response.json();
}

Your AI's Function Workshop

Let your LLM generate, edit, and run functions in a secure sandbox — spinning up new tools on the fly.

Claude
ChatGPT
Execute Function

Call any function as a tool

Create Function

Generate new functions on demand

Update Code

Edit existing functions safely

Change Settings

Adjust triggers, secrets, and visibility

Build Together, Ship Faster

Zero Setup

Start coding immediately. No local development environment, no configuration files, no deployment headaches.

Instant Triggers

Turn any function into an endpoint, cron job, or email trigger in seconds.

One-Click Remix

Clone any public function and customize it for your needs. Share your improvements back to the community.

Fixed Monthly Subscription

Predictable costs with a flat monthly fee. No surprises, just unlimited potential.

AI Assistant Ready

Connect AI assistants via MCP protocol. Let Claude and other AI tools trigger your functions dynamically.

Choose Your Plan

Start free and upgrade as you grow. Transparent pricing with no hidden fees.

Free

Perfect for getting started

$0 /month
3 active functions
100 executions per day
Community support
Get Started
Most Popular

Pro

For power users and teams

$8 /month
Unlimited functions
Unlimited daily executions
Priority support
Higher API rate limits
Early access to new features
Team collaboration (coming soon)
Upgrade to Pro

Join the Function Economy

Be part of a community where every function is a building block for something bigger. Create, share, and profit from your innovations.