Skip to content

AI Capabilities

AI that takes actions, not just AI that talks

Anyone can drop a chat box into a product. The hard, valuable part is wiring AI into your real systems so it gets work done — safely. That's the work I specialize in.

AI capabilities

Tool-based agents

Agents built around typed tools — create a record, launch a campaign, fetch analytics. Claude decides which tool to call; your API does the work. Reliable enough for production because each tool validates its own inputs.

MCP servers

Model Context Protocol servers that expose your systems to an agent through one consistent interface — so adding the tenth tool is as clean as the first, and access stays auditable.

Production chatbots

Assistants that handle real workflows — bookings, support, onboarding — in Arabic, French and English, with confirmation steps before anything irreversible happens.

AI media generation

Image and video generation (Veo 3, Nano Banana and more) wired behind real-time previews, so users watch creatives appear instead of waiting on a spinner.

Model selection & routing

Choosing the right model for each task — Claude for agentic and multilingual work, others where they fit — balancing accuracy, latency and cost rather than chasing benchmarks.

Guardrails & evals

Least-privilege tools, input validation, logging and confirmation gates. AI features get the same engineering rigor as the rest of the codebase.

The pattern I use

Tools, not prompts

The reliability trick isn't a clever prompt — it's giving the model a set of small, typed tools and letting it choose. Each tool validates its own inputs, so a vague request becomes a clarifying question instead of a wrong action. Here's the shape of a real agent, using the Anthropic SDK.

  • Every action is a typed, validated tool
  • Claude selects and sequences; your code executes
  • Irreversible actions get a confirmation gate
  • Everything is logged for audit and evals
agent.ts
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

// Each capability is a typed tool. Claude chooses; your code executes.
const tools = [
  {
    name: "create_campaign",
    description: "Create an ad campaign from a natural-language brief.",
    input_schema: {
      type: "object",
      properties: {
        objective: { type: "string", enum: ["traffic", "leads", "sales"] },
        daily_budget: { type: "number", description: "USD per day" },
        audience: { type: "string", description: "Who to target" },
      },
      required: ["objective", "daily_budget"],
    },
  },
] as const;

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  tools,
  messages: [
    {
      role: "user",
      content: "Launch a $40/day sales campaign retargeting last month's visitors.",
    },
  ],
});

// Claude returns a tool_use block; you run it, validate, then return the result.
for (const block of message.content) {
  if (block.type === "tool_use" && block.name === "create_campaign") {
    const campaign = await ads.createCampaign(block.input); // your API, your validation
    // ...send { type: "tool_result", tool_use_id: block.id, content } back to Claude
  }
}

Models I work with

Anthropic Claude

My default

For agentic, tool-using and multilingual work. The reasoning and reliability make it the model I reach for first — it's what powers Scalify's and Spacloudy's agents.

OpenAI

Where it fits

For specific tasks and ecosystems where its models or tooling are the better fit.

Google Gemini

Where it fits

For multimodal and Google-ecosystem work where it has an edge.

FAQ

About building with AI

What's the difference between an AI chatbot and an AI agent?
A chatbot answers questions with text. An agent takes actions. The agents I build use tool calling — they create database records, launch ad campaigns, fetch live analytics and book appointments by calling your real APIs. The conversation is just the interface; the work happens in your systems.
What is MCP and why does it matter?
MCP (Model Context Protocol) is an open standard for connecting AI models to tools and data sources through a consistent interface. It matters because it lets one agent securely use many tools without bespoke glue code for each. I build MCP-style tool architectures so AI features stay maintainable as they grow.
Can an AI agent handle bookings or support in Arabic and French?
Yes. The Claude-powered assistant I built for Spacloudy handles spa and salon bookings in Arabic, French and English, switching language to match the customer. Claude's multilingual strength makes high-quality MENA-region support practical without separate models per language.
Which AI model should I use for my product?
It depends on the task. I default to Anthropic Claude for agentic, tool-using and multilingual workloads because of its reliability and reasoning. I also work with OpenAI and Gemini where they fit better. I'll recommend a model based on your accuracy, latency, cost and language requirements — not hype.
Is it safe to let an AI agent take actions in my system?
Yes, when it's built carefully. I scope each tool to least privilege, validate every input, add confirmation steps for irreversible actions and log everything. The agent can only do what its tools allow, so the safety boundary is the tool design — which is exactly where I focus.

Have an AI feature in mind?

From a single agent to a full assistant, I'll help you build AI that's reliable enough to ship.