githubEdit

Examples

Complete end-to-end examples showing how to use DocFlow MCP tools together.

Example 1: Create a Custom Card and Use It in a Workflow

This example walks through the full lifecycle: create a partner card, validate it, test it, approve it, and build a workflow that uses it.

Step 1: Create the Card

Call sdk_create_card:

{
  "app_manifest": {
    "id": "com.example.invoice-tools",
    "name": "Invoice Tools",
    "version": "1.0.0",
    "partner": {
      "id": "example-partner",
      "name": "Example Corp"
    }
  },
  "card_manifest": {
    "id": "high-value-check",
    "title": {"en": "High Value Invoice Check"},
    "entry_point": "src/high_value.py",
    "class_name": "HighValueCheck",
    "args": [
      {
        "id": "threshold",
        "title": {"en": "Amount Threshold"},
        "type": "number",
        "required": true
      }
    ]
  },
  "card_type": "condition",
  "source_code": "from api.sdk.base import PartnerCard\nfrom api.sdk.result import CardResult, CardStatus\n\nclass HighValueCheck(PartnerCard):\n    def execute(self, context):\n        threshold = float(self.variables.get('threshold', 1000))\n        total = float(context.document_fields.get('total_amount', 0))\n        if total > threshold:\n            return CardResult(status=CardStatus.SUCCESS, message=f'High value: {total}')\n        return CardResult(status=CardStatus.FAILURE, message=f'Below threshold: {total}')",
  "test_code": "def test_high_value():\n    assert True  # Basic test"
}

Note the card_id from the response — you'll need it in the following steps.

Step 2: Validate the Card

Call sdk_validate_card with the card ID:

Review the validation report. All 5 stages should pass.

Step 3: Test the Card

Call sdk_test_card with a mock document context:

Verify the response shows CardStatus.SUCCESS.

Step 4: Approve the Card

Call sdk_approve_card (requires admin):

The card is now active and available for use in workflows.

Step 5: Build a Workflow with the Card

First, get the available cards using list_cards or sdk_list_cards_picker to find card IDs.

Then call create_advanced_workflow:

Step 6: Test the Workflow

Call test_advanced_workflow:

Review the execution logs to verify each node executed correctly.


Example 2: Build a Workflow with Built-in Cards

This example creates a workflow using only built-in cards (no custom cards needed).

Step 1: Discover Available Cards

Call sdk_list_cards_picker to see all available cards with their role flags:

Filter by role:

  • is_when: true — Use in WHEN nodes (triggers)

  • is_and: true — Use in AND nodes (additional conditions)

  • is_then: true — Use in THEN nodes (actions)

Step 2: Create the Workflow

This creates a workflow: WHEN document is an invoice AND amount > 1000 THEN set status to review.


Example 3: Import Cards from GitHub

If your partner cards are in a GitHub repository, you can import them directly:

For private repositories, include a GitHub token:

After import, the cards go through validation automatically. Check their status with sdk_list_submissions and approve them with sdk_approve_card.

Last updated

Was this helpful?