Back to Browse

Agentled MCP Server

Developer ToolsModerate7.1MCP RegistryLocal
Free

Server data from the Official MCP Registry

Intelligent AI workflow orchestration with long-term memory, 100+ integrations, and unified credits.

About

Intelligent AI workflow orchestration with long-term memory, 100+ integrations, and unified credits.

Security Report

7.1
Moderate7.1Low Risk

The visible code is a thin MCP tool layer for the Agentled workflow API. It forwards tool calls to a remote client with an API key from the environment, which fits the stated purpose. The score is held below 8 because the scanner flagged data-exfiltration-associated tool names that cannot be verified in the truncated source, and the bundled Codex hook pack was not provided for review. Package verification found 1 issue.

1 file analyzed Β· 5 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Your AgentLed workspace API key (generate in Workspace Settings > Developer)Required

Environment variable: AGENTLED_API_KEY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-agentled-mcp-server": {
      "env": {
        "AGENTLED_API_KEY": "your-agentled-api-key-here"
      },
      "args": [
        "-y",
        "@agentled/mcp-server"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@agentled/mcp-server

The automation engine built for AI agents. Intelligent AI workflow orchestration with long-term memory, 100+ integrations, and unified credits.

npm version license

Agentled Server MCP server

What is Agentled?

Agentled is the automation engine built for AI agents. It gives Claude, Codex, Cursor, Windsurf, and any MCP-compatible client direct access to intelligent workflow orchestration, long-term memory, and 100+ integrations.

Three things make it different:

🧠 Long-Term Memory β€” A built-in Knowledge Graph stores insights across workflow executions. Your agents get smarter over time β€” they remember past research, lead scores, content performance, and business context.

⚑ Unified Credits β€” One API key, one credit system, 100+ services. No need to sign up for LinkedIn, email, scraping, AI models, or video generation separately. Connect once, use everything.

🎯 Intelligent Orchestration β€” AI reasons at every step. Workflows aren't just "if this then that" β€” they understand context, make decisions, and adapt to results.

See it in action

$ agentled create "Outbound to fintech CTOs in Europe"

Loading workspace context from Knowledge Graph...
✦ ICP loaded  ✦ 3 prior campaigns  ✦ 847 contacts in KG

Creating campaign with 3 workflows...

━━ Workflow 1: Prospect Research  linkedin Β· hunter Β· clearbit
  βœ“ LinkedIn: CTO + fintech + EU β†’ 189 profiles
  βœ“ Enriched via Hunter + Clearbit β†’ 156 matched
  βœ“ ICP scoring β†’ 43 high-intent leads

━━ Workflow 2: Signal Detection  web-scraper Β· crunchbase
  βœ“ Job postings β†’ 12 hiring devops
  βœ“ Crunchbase β†’ 8 recently funded
  βœ“ Cross-match: hiring + funded β†’ 5 hot leads

━━ Workflow 3: Outreach  email Β· linkedin Β· kg
  βœ“ Personalized emails from context
  βœ“ LinkedIn requests with custom notes
  βœ“ 43 leads saved to Knowledge Graph

Campaign saved. Scheduled: every 48h
Credits used: 720
β†’ https://www.agentled.app/your-team/fintech-cto-outbound

One prompt. Three workflows. LinkedIn enrichment, email finding, AI scoring, multi-channel outreach β€” all orchestrated, all stored in the Knowledge Graph for the next run.

Quick Start

claude mcp add --transport stdio --scope user agentled \
  -e AGENTLED_API_KEY=wsk_... \
  -- npx -y @agentled/mcp-server

--scope user registers the server in your user MCP config so it loads in every project (not only the repo where you ran the command). Use a distinct server name (e.g. agentled_my_workspace) if you add multiple workspaces. For team-shared config in git, use --scope project and .mcp.json instead (Claude Code MCP scopes).

Claude Code plugin (one-step install)

Prefer the plugin if you want the MCP server and the Agentled skill installed together. In Claude Code:

/plugin marketplace add Agentled/mcp-server
/plugin install agentled@agentled

Then set your API key in the shell Claude Code runs from:

export AGENTLED_API_KEY=wsk_...

Codex plugin (one-step install)

The same repository is a Codex marketplace. Install the Agentled plugin with:

codex plugin marketplace add Agentled/mcp-server
codex plugin add agentled@agentled

Then set AGENTLED_API_KEY=wsk_... in the shell that launches Codex and start a new task. The plugin bundles the Agentled skills, starts the MCP server through npx -y @agentled/mcp-server, and loads its lifecycle hooks from the standard hooks/hooks.json path.

The plugin bundles the agentled skill (workflow-authoring guidance, namespaced agentled:agentled) and auto-starts the MCP server via npx -y @agentled/mcp-server. The same plugin directory carries both Claude Code and Codex manifests β€” one bundle, both hosts.

For Codex, the hook pack acts as in-session guidance around the CLI/MCP loop: session start explains the Agentled/Codex business-loop split, prompt/tool hooks add turn-level guidance when client needs, priorities, failures, or product gaps appear, and stop hooks nudge implementation handoffs to include readiness, validation, side effects, and next decision. Hooks do not store feedback, call Agentled APIs, run automations, spend credits, or perform customer/workspace writes. In Codex, run /hooks after installing or changing the plugin so the local hook definitions are reviewed and trusted before they run.

Use Codex automations for outside-workspace FDE cadence such as Outlook/client email follow-up, vendor replies, repo/build checks, and weekly operator reviews. Use Agentled routines for Agentled workspace/runtime checks such as workflow health, routine health, execution review, workspace summaries, and managed-agent operations. Use submit_feedback_to_agentled or agentled feedback submit when the user explicitly wants product feedback captured.

Pick one install path, not both. If you previously ran claude mcp add agentled ... or --setup-skills, remove those before (or instead of) installing the plugin β€” otherwise you get two identical MCP server processes and the skill registered twice. Cleanup: claude mcp remove agentled and delete .claude/skills/agentled/ (or ~/.claude/skills/agentled/). --setup-skills now detects an installed plugin and refuses to double-register unless you pass --force.

To develop the plugin locally:

claude --plugin-dir ./plugins/agentled     # load from source
claude plugin validate ./plugins/agentled  # check manifest + structure

plugins/agentled/skills/ is a generated mirror of skills/ (synced by publish.sh) β€” edit skills/agentled/SKILL.md, never the mirror.

Local development

Use the local built entrypoint when you want to test unpublished changes against a local app. npx -y @agentled/mcp-server always uses the latest published npm package.

cd agentled-mcp-server
npm run build

claude mcp add --transport stdio agentled_local \
  --env AGENTLED_API_KEY=wsk_... \
  --env AGENTLED_URL=http://localhost:8080 \
  -- node /absolute/path/to/agentsled-front/agentled-mcp-server/dist/index.js

Getting your API key

  1. Sign up at agentled.app
  2. Open Workspace Settings > Developer
  3. Generate a new API key (starts with wsk_)

Why Agentled MCP?

One API Key. One Credit System. 100+ Services.

No need to sign up for LinkedIn APIs, email services, web scrapers, video generators, or AI models separately. Agentled handles all integrations through a single credit system.

CapabilityCreditsWithout Agentled
LinkedIn company enrichment50LinkedIn API ($99/mo+)
Email finding & verification5Hunter.io ($49/mo)
AI analysis (Claude/GPT/Gemini)10-30Multiple API keys + billing
Web scraping3-10Apify account ($49/mo+)
Image generation30DALL-E/Midjourney subscription
Video generation (8s scene)300RunwayML ($15/mo+)
Text-to-speech60ElevenLabs ($22/mo+)
Knowledge Graph storage1-2Custom infrastructure
CRM sync (Affinity, HubSpot)5-10CRM API + middleware

Workflows That Learn

Other automation tools start from zero every run. Agentled's Knowledge Graph remembers across executions β€” what worked, what didn't, what humans corrected. Scoring workflows can use compact row-level scoring_profile summaries and bounded scoring-memory retrieval so every run compounds on the last without dumping raw history into prompts.

Run 1:  Investor scoring β†’ 62% accuracy (cold start)
Run 5:  β†’ 78% (learning from IC feedback)
Run 12: β†’ 89% (compound learning from outcomes, zero manual tuning)

Intelligent Orchestration

Unlike trigger-action tools, Agentled workflows have AI reasoning at every step. Multi-model support (Claude, GPT-4, Gemini, Mistral, DeepSeek, Moonshot), adaptive execution, and human-in-the-loop approval gates when needed.

Agent Teams

Agent Teams let you run multiple AI specialists in a single workflow step. Pick a preset and describe what you need β€” the team handles coordination, delegation, and synthesis.

"Add an Agent Team step that researches the company and produces an investment memo"

Six built-in presets cover the most common patterns:

PresetWhat it does
research-and-summarizeSpecialists gather information, one synthesizes a summary
analyze-and-recommendMultiple analysts evaluate options, produce a ranked recommendation
generate-then-reviewA generator drafts content, reviewers critique and refine
compare-optionsSpecialists argue for competing options, coordinator arbitrates
investigate-in-parallelIndependent specialists explore different angles simultaneously
review-and-improveReviewers find issues, an editor applies improvements

When creating Agent Team steps via MCP, include preset metadata so the step opens correctly in the builder:

{
  "id": "analyze",
  "type": "agentOrchestrator",
  "name": "Agent Team",
  "orchestratorConfig": {
    "pattern": "supervisor",
    "workers": [
      { "id": "researcher", "name": "Researcher", "systemPrompt": "Research {{input.company_url}} β€” team, funding, market position" },
      { "id": "analyst", "name": "Analyst", "systemPrompt": "Analyse the research. Identify risks and growth signals." }
    ]
  },
  "metadata": {
    "agentTeamPreset": "research-and-summarize",
    "agentTeamMode": "simple",
    "agentTeamUxVersion": 1
  },
  "next": { "stepId": "milestone" }
}

Existing steps created with raw orchestratorConfig and no metadata continue to work β€” they open in advanced mode in the builder without errors.

Analytics vs ROI semantics

When describing workflow outcomes, keep these terms separate:

  • pipeline.analyticsConfig = business metrics (execution outcome stats shown in Business Metrics cards/charts).
  • pipeline.metadata.roi = ROI assumptions/rollups (time saved and cost-value estimates).

If you update one without the other, name exactly what changed (e.g. "business metrics configured" vs "ROI assumptions configured").

CLI parity guard

The repository includes an automated parity guard so MCP tool additions do not silently drift from the CLI surface.

  • Test: __tests__/cli/cli-mcp-parity.test.ts
  • Docs: docs/CLI_MCP_PARITY.md

Run it with:

yarn test:node -- cli-mcp-parity.test.ts

What Can You Build?

Lead Enrichment & Sales Automation

"Find fintech CTOs in Europe, enrich via LinkedIn + Hunter, score by ICP fit,
draft personalized outreach, save everything to the Knowledge Graph"

Content & Media Production

"Scrape trending topics in our niche, generate 5 LinkedIn posts with AI,
create thumbnail images, schedule publishing for the week"

Company Research & Intelligence

"Research this company from its URL β€” team, funding, market position, competitors.
Generate an investment memo. Store in KG for future reference."

VC Investor Matching (real case study)

"Match this startup against our 2,000+ investor database. Score by sector focus,
stage preference, check size, and portfolio synergy. Compare with last round's outcomes."

3,000+ profiles processed. IC-ready reports. Prediction vs outcome learning β€” accuracy went from 62% to 89% over 12 runs with zero manual tuning.

Built-in Skills And Integrations

Media Production: Video generation, image generation, text-to-speech, auto-captions, media assembly

AI Intelligence: Multi-model AI (Claude, GPT-4, Gemini, Mistral, DeepSeek, Moonshot, xAI), Knowledge Graph, feedback loops, scoring & analytics

Data & Integration: LinkedIn (search, enrich, post), email (send, personalize), web scraping, social publishing, CRM sync, document analysis, OCR

Available Tools

Use-case operating guides

When work starts from an existing workflow ID, call get_workflow first and inspect useCaseContext. Then call get_use_case with the returned key or workflow graph ID, and read any operatingGuides before answering workflow-specific questions, running backfills, or editing live config. Missing guide warnings mean the operating README is not attached yet and the context is incomplete.

When work starts from a user's business goal rather than an existing workflow, use How to Build Use Cases From User Goals. It covers the external-agent lifecycle from bounded chat result to KG text/list state, WorkspaceUseCase, workflows, approval queues, and home summary updates.

Workflows

ToolDescription
list_workflowsList all workflows in the workspace
get_workflowGet full workflow definition by ID, including useCaseContext when linked
get_workflow_creditsGet ledger-derived, period-labelled workflow credit usage; opt in to cost drivers with includeCostDrivers
create_workflowCreate a new workflow from pipeline JSON
update_workflowUpdate an existing workflow (top-level scalars; for context/metadata prefer update_workflow_context)
update_workflow_contextWorkflow-level analog of update_step β€” three explicit verbs (updates / replace / unset) on context.* and metadata.* paths, returns diff + warnings
add_stepAdd a step with automatic positioning and next-pointer rewiring
update_stepLow-level deep-merge updates into a single step by ID
replace_step_dictionaryMerge keys into a dictionary path (fieldUpdates, responseStructure, fieldMapping) without dropping siblings
replace_step_pathSet one nested path while preserving siblings (e.g. renderer.config.layout)
unset_step_pathDelete one step path
append_step_array_itemAppend one item to a step array (tools, integrations, …)
remove_step_array_itemRemove one array item by index or match
remove_stepRemove a step with automatic next-pointer rewiring
delete_workflowPermanently delete a workflow
validate_workflowValidate pipeline structure, returns errors per step
publish_workflowChange workflow status (draft, live, paused, archived)
export_workflowExport a workflow as portable JSON
import_workflowImport a workflow from exported JSON

Public Form Links

Public form links are the external intake surface for workflows with context.executionInputConfig fields. Use them when people outside the workspace need to submit a workflow form without signing in: inbound lead forms, pitch deck submissions, referral forms, support intake, assessment questionnaires, or any workflow whose first step is a manual/input trigger.

Do not use a public form link for internal child workflows. Child workflows should use context.executionInputConfig.internal: true and be called from another workflow with agentled.call-workflow.

ToolDescription
list_public_form_linksList existing public form links for a workflow
create_public_form_linkCreate and enable a public form link
update_public_form_linkEnable/disable a link or update limits, expiry, auto-share, and thank-you copy. To revoke external access, set enabled: false.

Deletion is intentionally not exposed via the external API or MCP. To revoke a public form link, call update_public_form_link with enabled: false. Permanent deletion requires an authenticated workspace member acting through the UI β€” destructive ops on the form-link surface are not granted to the public API key.

Typical agent flow:

1. get_workflow({ workflowId })
2. Confirm context.executionInputConfig exists and is not internal.
3. list_public_form_links({ workflowId })
4. If none exists, create_public_form_link({ workflowId, enabled: true })
5. Return the publicUrl to the user.

The public URL is /en/forms/{formLinkId}. On submit, Agentled validates the form link, starts the workflow with the submitted input, records a PublicFormSubmission, and increments submissionCount. Optional settings:

  • enabled: disable without deleting the link.
  • expiresAt: ISO datetime expiry.
  • submissionLimit: maximum accepted submissions.
  • autoShare: when true, the public form status page can show generated results after completion. Use this only when the workflow output is safe for the submitter to see.
  • shareExpiresInDays: expiry for auto-shared result links.
  • successMessage: custom thank-you message after submission.

Internal-only Workflows

Mark a workflow as a child / sub-workflow that is only run via agentled.call-workflow from an orchestrator by setting context.executionInputConfig.internal: true. The UI then hides the Run button and replaces the manual run form with an info banner. Inputs are still validated and passed by orchestrators via executionInputData exactly as before β€” this is a UI guard, not a runtime restriction.

Use it for any workflow whose goal/description starts with "Internal sub-workflow", that ends in a return step, or that you only intend to invoke from another workflow.

{
  "context": {
    "executionInputConfig": {
      "title": "Save Sourced Candidates",
      "internal": true,
      "fields": [{ "name": "candidates", "label": "Candidates", "type": "text", "required": true }]
    }
  }
}

Flip the flag via update_workflow_context β€” fetch first, merge locally, replace at the parent level (the merge-order trap from update_step applies here too β€” see docs/MCP_STEP_EDITING.md):

// 1. get_workflow β†’ read context.executionInputConfig
// 2. local: { ...executionInputConfig, internal: true }
// 3.
{
  "updates": { "context": { "executionInputConfig": {...full merged value...} } },
  "replace": ["context.executionInputConfig"]
}

Editing existing workflows: merge model

Prefer the surgical path tools for common single-path edits β€” they call get_step when needed and map to the same merge contract:

  • replace_step_dictionary β€” dictionary key merges (fieldUpdates, responseStructure, fieldMapping)
  • replace_step_path β€” nested path sets that must preserve siblings
  • unset_step_path β€” delete one path
  • append_step_array_item / remove_step_array_item β€” array mutations

Keep raw update_step for complex multi-path edits. It accepts three explicit operations on the same call; at least one must be non-empty.

  • updates β€” partial step patch, deep-merged ONE LEVEL deep. Top-level scalars are replaced; nested objects (pipelineStepPrompt, stepInputData, etc.) get their direct keys merged with the stored value's keys. Keys nested two levels deep are overwritten as a unit, not merged.
  • replace: string[] β€” dot-paths whose values from updates are assigned wholesale, skipping the deep-merge. Use this for dictionary-shaped fields where keys are user data (not config) β€” patching one inner key with updates alone silently wipes the others.
  • unset: string[] β€” dot-paths to delete. Each path must currently exist on the step (validated against the original).

Read before editing dictionary fields. Prefer replace_step_dictionary. With raw update_step, call get_step({ workflowId, stepId }) (~1KB), modify locally, send the full new object back via replace[].

Diff in the response. Every update_step / surgical-tool call returns diff: { addedPaths, changedPaths, removedPaths } and warnings[]. If the merge silently removed β‰₯6 fields without an explicit unset, a warning fires.

What to use where:

Path / fieldAPIHow to editNotes
name, goal, description, pipelineStepPrompt.template, creditCostupdate_stepupdatesPlain scalar; safe to send alone.
next, loopConfig, entryConditions (full block)update_stepupdatesDirect nested config; sending the new value wholesale is fine.
tools, integrationssurgical / update_stepappend_step_array_item / remove_step_array_item, or updates with full arrayArrays replace wholesale by design.
stepInputData.fieldUpdatessurgicalreplace_step_dictionaryKeys are user data; raw one-level merge can drop sibling mappings.
pipelineStepPrompt.responseStructuresurgicalreplace_step_dictionaryOutput-shape dictionary; treat as user data.
knowledgeSync.fieldMappingsurgicalreplace_step_dictionarySource→target dict; same trap as fieldUpdates.
renderer.config (when preserving sibling keys matters)surgical / update_stepreplace_step_path on the nested key, or full renderer.config + replaceSurgical wrappers replace the owning top-level field safely.
entryConditions.criteria (when preserving the rest of entryConditions)update_stepupdates: { entryConditions: {...full block...} }Send the full entryConditions block; one-level merge already does the right thing for direct children.
Removing a step input or stale fieldsurgical / update_stepunset_step_path or unset: ["stepInputData.oldKey"]Path must exist on the original.
context.inputPages, context.outputPages, context.executionInputConfigupdate_workflow_contextThree explicit verbs (updates / replace / unset) on workflow-relative paths. Compatibility: { contextKey, value } still accepted for wholesale per-key replacement.Workflow-level, not step-level. update_step cannot reach context.* and vice versa.
metadataupdate_workflow_contextSame three verbs on metadata.* pathsWorkflow-level. Metadata bypasses the draft snapshot β€” even on live workflows it writes direct to the Pipeline row, immediately.

Executive summaries for workflow groups. When a user asks to save a summary for a workflow, workflow group, cluster, or home card, write it to metadata.executiveSummary with update_workflow_context. Do not store it as Knowledge text unless the user explicitly asks for a reusable note. For a group, write exactly once to the owner pipeline: prefer metadata.workflowGraph.role === "orchestrator", otherwise use the lowest metadata.workflowGraph.order pipeline. Keep the body to 1-2 short sentences, include concrete counts/rates and the reporting period when available, and set author to the active workspace agent, not the external tool/coding agent.

{
  "workflowId": "2e1cdd60-2fcf-441a-856f-583ae76b38a5",
  "updates": {
    "metadata": {
      "executiveSummary": {
        "body": "Startup Outreach sent 46 founder emails for the reporting period, with 28 opens and 9 clicks: a 60.9% open rate, 19.6% click rate, and 32.1% click-to-open rate.",
        "bullets": ["Clicks: 6 UTM Pitch Night, 2 plain Pitch Night, 1 calendar."],
        "generatedAt": "2026-06-03T00:00:00.000Z",
        "author": "AngelHive Assistant"
      }
    }
  }
}

Type changes. step.type is technically mutable but stale type-specific fields (pipelineStepPrompt, app, tools, orchestratorConfig) persist unless you unset them. For clean conversions, prefer remove_step + add_step.

Live workflows. Edits are routed to a draft snapshot. Response includes editingDraft: true. Inspect via get_draft, ship via promote_draft, throw away via discard_draft. For high-stakes edits, create_snapshot first as a manual checkpoint.

Draft staleness. When a draft exists, every update_step and get_step response includes a draft summary with exists, draftCreatedAt, liveUpdatedAt, stale, modifiedStepIds, and modifiedFields. If draft.stale === true, the live workflow advanced after the draft was created β€” promoting will land the draft's older values for fields you didn't touch. update_step also emits a staleness warning. Recovery: discard_draft and re-apply.

⚠ discard_draft only reverts pending context (and step) changes β€” NOT metadata. Metadata writes via update_workflow_context bypass the draft and apply immediately to the live Pipeline row. If you need a single rollback point covering metadata too, create_snapshot before the edit. See docs/MCP_STEP_EDITING.md for the full atomicity contract.

Never send a full steps[] array via update_workflow. Use surgical path tools, update_step, add_step, remove_step instead.

For the deep reference (StepMergeError codes, dot-path validation rules, full diff semantics) see docs/MCP_STEP_EDITING.md.

Drafts & Snapshots

ToolDescription
get_draftGet the current draft version of a workflow
promote_draftPromote a draft to the live version
discard_draftDiscard the current draft
create_snapshotCreate a manual config snapshot
delete_snapshotDelete a specific config snapshot
list_snapshotsList version snapshots for a workflow
get_snapshot_contentRead a snapshot's full config (steps, context, etc.) without restoring it
restore_snapshotRestore a workflow to a previous snapshot

Executions

ToolDescription
start_workflowStart a workflow execution with input. Returns executionInputId always and executionId only when the async execution row is already available. Pass useMocks: false to force a real (credit-consuming) run that ignores per-step mock data; defaults to honoring the workflow's configured mocks.
list_executionsList executions for a workflow (paginated via nextToken), including pipelineExecutionInputId for matching a start result that only returned executionInputId.
get_executionGet execution details with step results. Requires the real executionId, not executionInputId; if needed, call list_executions and match pipelineExecutionInputId.
list_timelinesList step execution records (timelines) for an execution (paginated via nextToken)
get_timelineGet a single timeline by ID with full step output
stop_executionStop a running execution
retry_executionRetry a failed step β€” auto-detects the most recent failure if no timeline ID provided
rerunRerun or retry any step by timelineId β€” works for failed AND succeeded steps, disambiguates loop iterations

Run deep links use /<locale>/<workspace>/<workflowPathname>/runs?runId=<executionId>&step=<stepId>. The step query param is optional only for run-level handoffs. When a response points to a specific approval card, output, failure, or current step, include &step=<stepId> and do not ask the human to open the step manually after a run-only URL. When present, the app expands that workflow step and scrolls to it. stepId is the workflow step id, not the timeline id. Inside the app chat/navigation tool surface, navigateToExecutionPage accepts the same stepId.

Knowledge row deep links use /<locale>/<workspace>/knowledge-and-data/<listKey>?rowId=<rowId>. The app opens the Knowledge & Data list page and opens the row editor sheet for that row. The backwards-compatible route /<locale>/<workspace>/knowledge-and-data/<listKey>/row/<rowId> redirects to the canonical query-param URL.

Knowledge text deep links use /<locale>/<workspace>/knowledge-and-data/<key>. The backwards-compatible route /<locale>/<workspace>/knowledge-and-data/text/<key> redirects to the canonical item URL.

Apps & Testing

ToolDescription
list_appsList available apps and integrations
list_connectionsList which app connections are configured
verify_app_connectionVerify native OAuth health without executing an app action
get_app_actionsGet action schemas for an app
test_app_actionExecute one app action in isolation without creating a workflow
test_ai_actionTest an AI prompt without creating a workflow
test_code_actionTest JavaScript code in the same sandboxed VM as production
get_step_schemaGet allowed PipelineStep fields grouped by category
AI step types: aiAction vs aiActionWithTools

Pick the right type β€” validate_workflow will reject the wrong one:

You need…Use
Reason over inputs already present in the prompt variablesaiAction (single LLM call, no tool loop)
Live web search, workspace memory recall/write, knowledge-graph lookupaiActionWithTools with the matching builtinType
The AI to decide at runtime what inputs to pass to an app actionaiActionWithTools with an appActionConfig tool

aiActionWithTools requires at least one tool β€” placed under step.tools or step.agent.tools (both are merged at runtime). If you omit tools from both locations, validate_workflow returns a blocker AI_STEP_TOOLS_REQUIRED. If the prompt says "search the web" / "recall memory" / "knowledge graph" without the matching tool attached, you get a warning AI_STEP_TOOL_PROMPT_MISMATCH: web-search prompts need web_search; memory prompts need workspace_memory; KG lookup prompts need kg_search or kg_traverse. fetch_website_content fetches a known URL and kg_write writes KG data, so neither satisfies those lookup/search prompts.

Valid builtinType values: web_search, file_search, code_interpreter, fetch_website_content, kg_search, kg_traverse, kg_nodes, kg_write, workspace_memory.

Prompt caching for repeated AI steps

Agentled enables provider prompt caching where supported. Caching reuses prompt processing for an identical prefix; it does not cache or replay the AI response. To benefit in bulk workflows, especially scoring/matching loops, write prompts with the stable material first:

[stable role and task]
[stable rubric / scoring dimensions]
[stable output JSON schema]
[stable examples or decision rules]

Runtime inputs:
{{currentItem}}
{{steps.previous.output}}
{{input.field}}

Do not start high-volume prompts with INPUTS, {{currentItem}}, {{steps.*}}, {{input.*}}, {{execution.id}}, {{now}}, or {{today}}. Keep changing payloads, dates, execution IDs, and per-item records at the end so OpenAI/Anthropic can cache the shared prefix.

// aiActionWithTools example
{
  "id": "research",
  "type": "aiActionWithTools",
  "name": "Research Company",
  "tools": [
    { "type": "builtin", "builtinType": "web_search", "name": "Web Search" }
  ],
  "pipelineStepPrompt": {
    "template": "Search the web for the founder of {{input.company}} and return their name.",
    "responseStructure": { "firstName": "string", "lastName": "string" }
  },
  "creditCost": 10,
  "next": { "stepId": "find-email" }
}

Knowledge & Data

ToolDescription
get_workspaceGet workspace info, company settings, active team members, pending invitations, and knowledge-list schemas
get_workspace_company_profileGet the editable workspace company profile and company knowledge text
update_workspace_company_profileUpdate top-level company profile fields like name, URLs, logo, industry, size, and additional information
update_workspace_executive_summaryWrite the workspace-wide executive summary on the Workspace Assistant card
list_pinned_outputsList output pages pinned to the workspace home/sidebar
set_output_page_pinPin or unpin a workflow output page on the workspace home/sidebar
inspect_home_recent_tabInspect the Home tabs, the default tab, the display-only Home Recent tab config, and the current workspace revision
configure_home_recent_tabConfigure or reset bounded recent-run sources, optional navigation CTAs, and which Home tab opens by default
list_workspace_viewsList saved workspace view manifests and source/action guidance
create_workspace_viewCreate a saved operating-surface manifest over KG, workflows, approvals, agents, routines, actions, output pages, external APIs, or custom sources
get_workspace_viewGet one saved workspace view by id or key
update_workspace_viewUpdate a saved workspace view manifest without mutating source data or executing actions
archive_workspace_viewArchive a workspace view without deleting linked data
list_knowledge_listsList knowledge lists in the workspace
get_knowledge_rowsGet rows from a knowledge list (paginated via nextToken, max 200)
get_knowledge_rows_by_idsFetch specific rows by ID (max 200) β€” use after query_kg_edges
get_knowledge_textGet text content from a knowledge entry
create_knowledge_listCreate a new knowledge list with a typed schema (idempotent on key collision)
update_knowledge_list_schemaAdd or remove fields on an existing list schema
delete_knowledge_listPermanently delete a list and all its rows
upsert_knowledge_rowsInsert or update rows in a list (max 500/call, per-row error reporting)
delete_knowledge_rowsDelete rows by ID
upsert_knowledge_textCreate or update a text knowledge entry
delete_knowledge_textDelete a text knowledge entry by key
query_kg_edgesQuery knowledge graph edges
get_scoring_historyGet scoring history for an entity

Credits and Cost Drivers

Credit reporting tools are opt-in for cost-driver detail so existing balance checks stay compact. Every credit total is ledger-derived and returned with a period object containing label, display, start, and end; always show that period label next to totals.

For a human/operator UI check, open the workspace credit usage page:

https://www.agentled.app/en/{workspace}/account/billing/credits-usage

Example: https://www.agentled.app/en/inovexus/account/billing/credits-usage.

ToolDescription
get_workspace_creditsWorkspace balance, usage, executions, and recent ledger rows. Optional args: period, includeCostDrivers, includeRecentUsage, limit.
get_workspace_credit_cost_driversConvenience report with includeCostDrivers=true by default. Returns bounded top workflows, steps, models, and apps.
get_workflow_creditsWorkflow-level usage and optional cost drivers, scoped to workflows in the authenticated API key workspace.

Supported periods:

  • rolling-30-days: moving 30-day window ending at request time.
  • rolling-7-days: moving 7-day window ending at request time.
  • current-month / month-to-date: UTC calendar month-to-date, not the billing renewal period.
  • previous-month: prior UTC calendar month.
  • all-time: full ledger before the request time; use intentionally because it can scan more rows.

Examples:

// Compact balance/burn-rate check
{ "tool": "get_workspace_credits", "arguments": { "period": "rolling-30-days" } }

// Workspace cost drivers for a calendar month-to-date window
{ "tool": "get_workspace_credit_cost_drivers", "arguments": { "period": "current-month", "limit": 5 } }

// Workflow cost drivers
{ "tool": "get_workflow_credits", "arguments": { "workflowId": "wf_abc123", "period": "rolling-30-days", "includeCostDrivers": true } }

External API equivalents:

GET /api/external/workspace/credits?period=rolling-30-days&include=costDrivers&limit=5
GET /api/external/workflows/{workflowId}/credits?period=current-month&include=costDrivers

Billing-period reporting is separate from calendar-month reporting and should not be implied unless a future API adds an explicit billing-period label.

Branding (Whitelabel)

ToolDescription
get_brandingGet the workspace's whitelabel branding config (displayName, logo, colors, favicon, badge)
update_brandingUpdate branding β€” set displayName, logoUrl, tagline, primaryColor, primaryColorDark, faviconUrl, hideBadge

Agents

First-class workspace AI Agents with identity, instructions, tools, config files, and assigned workflows. All agents are conversational by default. For scheduled/autonomous work, attach routines via create_routine to create an AI Agent with routines. SOUL.md and TOOLS.md live in configFiles; reflection context (JOURNAL.md, OBJECTIVES.md, PEOPLE.md) lives as linked AgentFiles and is auto-seeded for active AI Agents using reflection. Agents decide what durable signal belongs in those files; AgentLed only provides scoped storage and scheduled Reflection. An agent created entirely via MCP renders identically to one built in the Agent Wizard.

ToolDescription
list_agentsList agents in the workspace (filter by status: active, paused, draft)
get_agentGet full agent config β€” instructions, files, workflows, attached routines
create_agentCreate an agent. Accepts agentType presets (personal-assistant, competitive-researcher, social-media-marketer, customer-support, content-marketer, lead-qualifier, deal-sourcer, custom), enabledApps, appPermissions, assignedWorkflowIds, linkedFileIds, configFiles (SOUL.md/TOOLS.md), avatar_icon_name, avatar_color, chatModel, activate: true or status: "active". Unknown fields are rejected; daily credit caps and model tier belong on routines (create_routine)
update_agentSurgical update via updates / replace / unset (fields: name, slug, description, instructions, goals, chatModel, status, enabledApps, enabledActions, appPermissions, skillIds, assignedWorkflowIds, linkedFileIds, configFiles, avatar). status: "active" runs the activation check and returns its errors; updates.slug renames the agent email slug, moves the AgentEntity id to {slug}@{workspace}, and rebinds routines/file links/channel sessions/chat sessions where available
activate_agentActivate an agent (draft/paused β†’ active). Attached routines begin running on schedule
pause_agentPause an active agent. Attached routines stop until resumed
manage_agent_workflowsAdd/remove/set the workflows assigned to an agent without rewriting the full config
delete_agentPermanently delete an agent and all its files
chat_with_agentSend a message to a specific agent. Multi-turn via session_id

Slug convention: slug is the short role ID used in URLs and email addresses. Keep Agent in the display name when useful, but do not append -agent to the slug just because the display name includes it; for example, Deal Sourcing Agent should use deal-sourcing@{workspace}.agentled.ai, not deal-sourcing-agent@{workspace}.agentled.ai.

Built-in app result cache

Separate from prompt caching: many app actions reuse prior results via workspace KnowledgeRow defaults. See the Agentled skill section Built-in app result cache (skills/agentled/SKILL.md). MCP rerun tools default forceWithoutCache: true.

Agent Files
ToolDescription
list_agent_filesList files attached to an agent (knowledge, context, reference docs)
get_agent_fileGet the content of a specific agent file
upload_agent_fileUpload a file (max 400KB text/markdown) to an agent
update_agent_fileUpdate a file already attached to an agent; use this after get_agent_file for JOURNAL.md, OBJECTIVES.md, and PEOPLE.md edits
delete_agent_fileDelete a file from an agent

Documentation truncated β€” see the full README on GitHub.

Reviews

No reviews yet

Be the first to review this server!