{
  "schemaVersion": "1.0",
  "item": {
    "slug": "erpnext-frappe",
    "name": "Frappe MCP",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Ravana-indus/erpnext-frappe",
    "canonicalUrl": "https://clawhub.ai/Ravana-indus/erpnext-frappe",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/erpnext-frappe",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=erpnext-frappe",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "definitions/stock_entry.json",
      "definitions/create_supplier.json",
      "definitions/create_project.json",
      "definitions/process_payment.json",
      "definitions/create_lead.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/erpnext-frappe"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/erpnext-frappe",
    "agentPageUrl": "https://openagent3.xyz/skills/erpnext-frappe/agent",
    "manifestUrl": "https://openagent3.xyz/skills/erpnext-frappe/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/erpnext-frappe/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Business Claw Skills",
        "body": "High-level business workflows that combine multiple MCP tools into reusable, executable skills for ERPNext."
      },
      {
        "title": "Overview",
        "body": "Skills are pre-defined workflows stored as JSON files in definitions/. Each skill defines:\n\nTriggers: Natural language patterns that activate the skill\nTools: MCP tools to execute in sequence\nInput Schema: Required and optional parameters\nWorkflow Steps: Ordered execution plan with variable substitution\nGuardrails: Validation rules for safe execution\nOutput Template: Formatted response message"
      },
      {
        "title": "CRM Skills",
        "body": "SkillDescriptionCategorycreate_customerCreate a new customer with contact and addresscrmcreate_leadRegister a new leadcrmcreate_supplierAdd a new suppliercrm"
      },
      {
        "title": "Sales Skills",
        "body": "SkillDescriptionCategorycreate_sales_orderCreate a sales ordersalescreate_quotationCreate a quotationsalescreate_invoiceGenerate sales invoicesalescomplete_sales_workflowFull Quotation → SO → Invoice → Paymentsales"
      },
      {
        "title": "Purchase Skills",
        "body": "SkillDescriptionCategorycreate_purchase_orderCreate a purchase orderpurchase"
      },
      {
        "title": "Inventory Skills",
        "body": "SkillDescriptionCategorycreate_itemCreate new item in inventoryinventorystock_entryRecord stock movementsinventory"
      },
      {
        "title": "Project Skills",
        "body": "SkillDescriptionCategorycreate_projectCreate a new projectproject"
      },
      {
        "title": "Financial Skills",
        "body": "SkillDescriptionCategoryprocess_paymentRecord payment entrypayments"
      },
      {
        "title": "Utility Skills",
        "body": "SkillDescriptionCategorysearch_recordsSearch across DocTypesutilitybulk_operationBulk create/update/deleteutilitygeneric_taskFlexible multi-step workflowutility"
      },
      {
        "title": "Loading Skills",
        "body": "from bc_skills import get_available_skills, load_skill\n\n# List all available skills\nskills = get_available_skills()\nprint(skills)  # ['create_customer', 'create_sales_order', ...]\n\n# Load a specific skill\nskill = load_skill(\"create_customer\")"
      },
      {
        "title": "Executing Skills",
        "body": "from bc_skills.loader import execute_skill\n\nresult = execute_skill(\n    name=\"create_customer\",\n    context={\n        \"customer_name\": \"ACME Corp\",\n        \"customer_type\": \"Company\",\n        \"customer_group\": \"Commercial\",\n        \"email\": \"contact@acme.com\"\n    },\n    user=\"Administrator\"\n)\n\nprint(result)"
      },
      {
        "title": "Trigger Examples",
        "body": "Skills respond to natural language triggers:\n\nTrigger PhraseSkill\"create customer\"create_customer\"add customer\"create_customer\"new customer\"create_customer\"complete sales workflow\"complete_sales_workflow\"full sales process\"complete_sales_workflow\"process order to payment\"complete_sales_workflow\"create sales order\"create_sales_order\"generate invoice\"create_invoice"
      },
      {
        "title": "Skill Definition Schema",
        "body": "{\n  \"name\": \"skill_name\",\n  \"version\": \"1.0.0\",\n  \"description\": \"What the skill does\",\n  \"author\": \"Business Claw Team\",\n  \"category\": \"crm|sales|purchase|inventory|project|payments|utility\",\n  \n  \"triggers\": [\n    \"trigger phrase 1\",\n    \"trigger phrase 2\"\n  ],\n  \n  \"tools\": [\n    {\n      \"name\": \"tool_name\",\n      \"description\": \"What it does\",\n      \"required\": true\n    }\n  ],\n  \n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"param_name\": {\n        \"type\": \"string\",\n        \"description\": \"Parameter description\",\n        \"enum\": [\"option1\", \"option2\"]\n      }\n    },\n    \"required\": [\"required_param\"]\n  },\n  \n  \"workflow\": {\n    \"steps\": [\n      {\n        \"step\": \"step_name\",\n        \"tool\": \"tool_to_call\",\n        \"arguments\": {\n          \"doctype\": \"DocType\",\n          \"data\": {\n            \"field\": \"${variable}\"\n          }\n        }\n      }\n    ]\n  },\n  \n  \"guardrails\": {\n    \"rule_name\": true\n  },\n  \n  \"output_template\": \"Formatted output {{variable}}\"\n}"
      },
      {
        "title": "Variable Substitution",
        "body": "Workflow steps support ${variable} substitution from execution context:\n\n{\n  \"step\": \"create_order\",\n  \"tool\": \"create_document\",\n  \"arguments\": {\n    \"doctype\": \"Sales Order\",\n    \"data\": {\n      \"customer\": \"${customer_id}\",\n      \"items\": \"${items}\"\n    }\n  }\n}"
      },
      {
        "title": "Creating Custom Skills",
        "body": "Create a JSON file in definitions/\nDefine triggers, tools, input schema, and workflow\nUse the SkillLoader to load and execute\n\nExample custom skill structure:\n\n{\n  \"name\": \"my_custom_skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"My custom workflow\",\n  \"category\": \"utility\",\n  \"triggers\": [\"my trigger\"],\n  \"tools\": [\n    {\"name\": \"get_doctype_meta\", \"required\": true},\n    {\"name\": \"create_document\", \"required\": true}\n  ],\n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"param1\": {\"type\": \"string\"}\n    },\n    \"required\": [\"param1\"]\n  },\n  \"workflow\": {\n    \"steps\": [\n      {\n        \"step\": \"step1\",\n        \"tool\": \"get_doctype_meta\",\n        \"arguments\": {\"doctype\": \"Item\"}\n      }\n    ]\n  },\n  \"output_template\": \"Result: {{result}}\"\n}"
      },
      {
        "title": "Architecture",
        "body": "loader.py - SkillLoader class manages skill loading and execution\ndefinitions/ - JSON files containing skill definitions\nSkills use the ToolRouter to execute MCP tools in sequence\nGuardrails provide validation before skill execution"
      },
      {
        "title": "Requirements",
        "body": "Frappe/ERPNext environment\nbc_mcp module for tool routing\nJSON or YAML skill definitions"
      },
      {
        "title": "License",
        "body": "MIT"
      }
    ],
    "body": "Business Claw Skills\n\nHigh-level business workflows that combine multiple MCP tools into reusable, executable skills for ERPNext.\n\nOverview\n\nSkills are pre-defined workflows stored as JSON files in definitions/. Each skill defines:\n\nTriggers: Natural language patterns that activate the skill\nTools: MCP tools to execute in sequence\nInput Schema: Required and optional parameters\nWorkflow Steps: Ordered execution plan with variable substitution\nGuardrails: Validation rules for safe execution\nOutput Template: Formatted response message\nAvailable Skills\nCRM Skills\nSkill\tDescription\tCategory\ncreate_customer\tCreate a new customer with contact and address\tcrm\ncreate_lead\tRegister a new lead\tcrm\ncreate_supplier\tAdd a new supplier\tcrm\nSales Skills\nSkill\tDescription\tCategory\ncreate_sales_order\tCreate a sales order\tsales\ncreate_quotation\tCreate a quotation\tsales\ncreate_invoice\tGenerate sales invoice\tsales\ncomplete_sales_workflow\tFull Quotation → SO → Invoice → Payment\tsales\nPurchase Skills\nSkill\tDescription\tCategory\ncreate_purchase_order\tCreate a purchase order\tpurchase\nInventory Skills\nSkill\tDescription\tCategory\ncreate_item\tCreate new item in inventory\tinventory\nstock_entry\tRecord stock movements\tinventory\nProject Skills\nSkill\tDescription\tCategory\ncreate_project\tCreate a new project\tproject\nFinancial Skills\nSkill\tDescription\tCategory\nprocess_payment\tRecord payment entry\tpayments\nUtility Skills\nSkill\tDescription\tCategory\nsearch_records\tSearch across DocTypes\tutility\nbulk_operation\tBulk create/update/delete\tutility\ngeneric_task\tFlexible multi-step workflow\tutility\nUsage\nLoading Skills\nfrom bc_skills import get_available_skills, load_skill\n\n# List all available skills\nskills = get_available_skills()\nprint(skills)  # ['create_customer', 'create_sales_order', ...]\n\n# Load a specific skill\nskill = load_skill(\"create_customer\")\n\nExecuting Skills\nfrom bc_skills.loader import execute_skill\n\nresult = execute_skill(\n    name=\"create_customer\",\n    context={\n        \"customer_name\": \"ACME Corp\",\n        \"customer_type\": \"Company\",\n        \"customer_group\": \"Commercial\",\n        \"email\": \"contact@acme.com\"\n    },\n    user=\"Administrator\"\n)\n\nprint(result)\n\nTrigger Examples\n\nSkills respond to natural language triggers:\n\nTrigger Phrase\tSkill\n\"create customer\"\tcreate_customer\n\"add customer\"\tcreate_customer\n\"new customer\"\tcreate_customer\n\"complete sales workflow\"\tcomplete_sales_workflow\n\"full sales process\"\tcomplete_sales_workflow\n\"process order to payment\"\tcomplete_sales_workflow\n\"create sales order\"\tcreate_sales_order\n\"generate invoice\"\tcreate_invoice\nSkill Definition Schema\n{\n  \"name\": \"skill_name\",\n  \"version\": \"1.0.0\",\n  \"description\": \"What the skill does\",\n  \"author\": \"Business Claw Team\",\n  \"category\": \"crm|sales|purchase|inventory|project|payments|utility\",\n  \n  \"triggers\": [\n    \"trigger phrase 1\",\n    \"trigger phrase 2\"\n  ],\n  \n  \"tools\": [\n    {\n      \"name\": \"tool_name\",\n      \"description\": \"What it does\",\n      \"required\": true\n    }\n  ],\n  \n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"param_name\": {\n        \"type\": \"string\",\n        \"description\": \"Parameter description\",\n        \"enum\": [\"option1\", \"option2\"]\n      }\n    },\n    \"required\": [\"required_param\"]\n  },\n  \n  \"workflow\": {\n    \"steps\": [\n      {\n        \"step\": \"step_name\",\n        \"tool\": \"tool_to_call\",\n        \"arguments\": {\n          \"doctype\": \"DocType\",\n          \"data\": {\n            \"field\": \"${variable}\"\n          }\n        }\n      }\n    ]\n  },\n  \n  \"guardrails\": {\n    \"rule_name\": true\n  },\n  \n  \"output_template\": \"Formatted output {{variable}}\"\n}\n\nVariable Substitution\n\nWorkflow steps support ${variable} substitution from execution context:\n\n{\n  \"step\": \"create_order\",\n  \"tool\": \"create_document\",\n  \"arguments\": {\n    \"doctype\": \"Sales Order\",\n    \"data\": {\n      \"customer\": \"${customer_id}\",\n      \"items\": \"${items}\"\n    }\n  }\n}\n\nCreating Custom Skills\nCreate a JSON file in definitions/\nDefine triggers, tools, input schema, and workflow\nUse the SkillLoader to load and execute\n\nExample custom skill structure:\n\n{\n  \"name\": \"my_custom_skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"My custom workflow\",\n  \"category\": \"utility\",\n  \"triggers\": [\"my trigger\"],\n  \"tools\": [\n    {\"name\": \"get_doctype_meta\", \"required\": true},\n    {\"name\": \"create_document\", \"required\": true}\n  ],\n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"param1\": {\"type\": \"string\"}\n    },\n    \"required\": [\"param1\"]\n  },\n  \"workflow\": {\n    \"steps\": [\n      {\n        \"step\": \"step1\",\n        \"tool\": \"get_doctype_meta\",\n        \"arguments\": {\"doctype\": \"Item\"}\n      }\n    ]\n  },\n  \"output_template\": \"Result: {{result}}\"\n}\n\nArchitecture\nloader.py - SkillLoader class manages skill loading and execution\ndefinitions/ - JSON files containing skill definitions\nSkills use the ToolRouter to execute MCP tools in sequence\nGuardrails provide validation before skill execution\nRequirements\nFrappe/ERPNext environment\nbc_mcp module for tool routing\nJSON or YAML skill definitions\nLicense\n\nMIT"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Ravana-indus/erpnext-frappe",
    "publisherUrl": "https://clawhub.ai/Ravana-indus/erpnext-frappe",
    "owner": "Ravana-indus",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/erpnext-frappe",
    "downloadUrl": "https://openagent3.xyz/downloads/erpnext-frappe",
    "agentUrl": "https://openagent3.xyz/skills/erpnext-frappe/agent",
    "manifestUrl": "https://openagent3.xyz/skills/erpnext-frappe/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/erpnext-frappe/agent.md"
  }
}