Robot Framework — 18 Operations for AI Agents

Robot Framework specs encode acceptance tests in keywords QA teams and machines both read. act101 maps test cases and keyword definitions as structure, so agents jump from a failing test to the keyword behind it.

This page is the canonical reference an AI coding agent uses to refactor, query, and analyze Robot Framework code through the act MCP server. 18 operations available: 0 refactor, 18 query, 0 analysis. Each operation is callable from Claude Code, Cursor, Codex, OpenCode, or any MCP-compatible agent host. Click any operation for a stable anchor link suitable for citation.

18Query

Worked Robot Framework examples

act101 reads a Robot Framework suite's *** Settings *** lines — Library, Resource, Suite Setup — as field declarations named for the setting itself, its *** Variables *** entries as variable, its test cases as method, and its *** Keywords *** definitions as function. symbols covers the identical set and adds one more construct the skeleton does not read: a keyword's own [Arguments] settings tag, also reported as field. The unit of structure in this grammar is the top-level entry under each ***-delimited section: neither query descends into a test case's or keyword's own step lines, so Submit Loan Application and Offered APR Should Be Below — the individual calls a test case or keyword makes — never appear as declarations of their own. Each example below is the verbatim output of the command shown, run against the file shown. Query outputs are pretty-printed with the timing block omitted.

Read the suite's settings, variables, tests, and keywords as a skeleton

loan_application.robot is a lending-portal acceptance suite: it loads SeleniumLibrary and a shared resource file, sets an applicant SSN and a max APR, runs two test cases, and defines one keyword, Submit Loan Application.

$ act query skeleton loan_application.robot

Before

*** Settings ***
Library    SeleniumLibrary
Resource    keywords/lending_portal.resource
Suite Setup    Open Lending Portal

*** Variables ***
${APPLICANT_SSN}    555-00-1234
${MAX_APR}    24.99

*** Test Cases ***
Applicant With Good Credit Is Approved
    Submit Loan Application    ${APPLICANT_SSN}    credit_score=780
    Offered APR Should Be Below    ${MAX_APR}
    Application Status Should Be    approved

Applicant With Missing Income Is Rejected
    Submit Loan Application    ${APPLICANT_SSN}    income=0
    Application Status Should Be    rejected
    Rejection Reason Should Be    insufficient_income

*** Keywords ***
Submit Loan Application
    [Arguments]    ${ssn}    ${credit_score}=700    ${income}=50000
    Fill Application Form    ${ssn}    ${credit_score}    ${income}
    Click Button    submit-application

Output

{
    "type": "Skeleton",
    "declarations": [
        {
            "kind": "field",
            "name": "Library",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 2,
                    "column": 1,
                    "byte_offset": 17
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 3,
                    "column": 1,
                    "byte_offset": 44
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 2,
                    "column": 1,
                    "byte_offset": 17
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 2,
                    "column": 8,
                    "byte_offset": 24
                }
            }
        },
        {
            "kind": "field",
            "name": "Resource",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 3,
                    "column": 1,
                    "byte_offset": 44
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 4,
                    "column": 1,
                    "byte_offset": 89
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 3,
                    "column": 1,
                    "byte_offset": 44
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 3,
                    "column": 9,
                    "byte_offset": 52
                }
            }
        },
        {
            "kind": "field",
            "name": "Suite Setup",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 4,
                    "column": 1,
                    "byte_offset": 89
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 6,
                    "column": 1,
                    "byte_offset": 125
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 4,
                    "column": 1,
                    "byte_offset": 89
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 4,
                    "column": 12,
                    "byte_offset": 100
                }
            }
        },
        {
            "kind": "variable",
            "name": "APPLICANT_SSN",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 7,
                    "column": 1,
                    "byte_offset": 143
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 8,
                    "column": 1,
                    "byte_offset": 175
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 7,
                    "column": 3,
                    "byte_offset": 145
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 7,
                    "column": 16,
                    "byte_offset": 158
                }
            }
        },
        {
            "kind": "variable",
            "name": "MAX_APR",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 8,
                    "column": 1,
                    "byte_offset": 175
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 10,
                    "column": 1,
                    "byte_offset": 196
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 8,
                    "column": 3,
                    "byte_offset": 177
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 8,
                    "column": 10,
                    "byte_offset": 184
                }
            }
        },
        {
            "kind": "method",
            "name": "Applicant With Good Credit Is Approved",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 11,
                    "column": 1,
                    "byte_offset": 215
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 16,
                    "column": 1,
                    "byte_offset": 414
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 11,
                    "column": 1,
                    "byte_offset": 215
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 11,
                    "column": 39,
                    "byte_offset": 253
                }
            }
        },
        {
            "kind": "method",
            "name": "Applicant With Missing Income Is Rejected",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 16,
                    "column": 1,
                    "byte_offset": 414
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 21,
                    "column": 1,
                    "byte_offset": 616
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 16,
                    "column": 1,
                    "byte_offset": 414
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 16,
                    "column": 42,
                    "byte_offset": 455
                }
            }
        },
        {
            "kind": "function",
            "name": "Submit Loan Application",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 22,
                    "column": 1,
                    "byte_offset": 633
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 26,
                    "column": 1,
                    "byte_offset": 832
                }
            },
            "name_range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 22,
                    "column": 1,
                    "byte_offset": 633
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 22,
                    "column": 24,
                    "byte_offset": 656
                }
            }
        }
    ]
}

The skeleton reports eight declarations: three settings — Library, Resource, Suite Setup — as field; APPLICANT_SSN and MAX_APR as variable; the two test cases as method; and Submit Loan Application as function.

List the same suite as symbols, plus the keyword's own argument tag

Submit Loan Application declares its own [Arguments] tag, defaulting credit_score to 700 and income to 50000 when a test case doesn't pass them.

$ act query symbols loan_application.robot

Before

*** Settings ***
Library    SeleniumLibrary
Resource    keywords/lending_portal.resource
Suite Setup    Open Lending Portal

*** Variables ***
${APPLICANT_SSN}    555-00-1234
${MAX_APR}    24.99

*** Test Cases ***
Applicant With Good Credit Is Approved
    Submit Loan Application    ${APPLICANT_SSN}    credit_score=780
    Offered APR Should Be Below    ${MAX_APR}
    Application Status Should Be    approved

Applicant With Missing Income Is Rejected
    Submit Loan Application    ${APPLICANT_SSN}    income=0
    Application Status Should Be    rejected
    Rejection Reason Should Be    insufficient_income

*** Keywords ***
Submit Loan Application
    [Arguments]    ${ssn}    ${credit_score}=700    ${income}=50000
    Fill Application Form    ${ssn}    ${credit_score}    ${income}
    Click Button    submit-application

Output

{
    "type": "Symbols",
    "symbols": [
        {
            "name": "Library",
            "kind": "field",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 2,
                    "column": 1,
                    "byte_offset": 17
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 2,
                    "column": 8,
                    "byte_offset": 24
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "Resource",
            "kind": "field",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 3,
                    "column": 1,
                    "byte_offset": 44
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 3,
                    "column": 9,
                    "byte_offset": 52
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "Suite Setup",
            "kind": "field",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 4,
                    "column": 1,
                    "byte_offset": 89
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 4,
                    "column": 12,
                    "byte_offset": 100
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "APPLICANT_SSN",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 7,
                    "column": 3,
                    "byte_offset": 145
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 7,
                    "column": 16,
                    "byte_offset": 158
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "MAX_APR",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 8,
                    "column": 3,
                    "byte_offset": 177
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 8,
                    "column": 10,
                    "byte_offset": 184
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "Applicant With Good Credit Is Approved",
            "kind": "method",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 11,
                    "column": 1,
                    "byte_offset": 215
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 11,
                    "column": 39,
                    "byte_offset": 253
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "Applicant With Missing Income Is Rejected",
            "kind": "method",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 16,
                    "column": 1,
                    "byte_offset": 414
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 16,
                    "column": 42,
                    "byte_offset": 455
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "Submit Loan Application",
            "kind": "function",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 22,
                    "column": 1,
                    "byte_offset": 633
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 22,
                    "column": 24,
                    "byte_offset": 656
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "Arguments",
            "kind": "field",
            "range": {
                "start": {
                    "file": "loan_application.robot",
                    "line": 23,
                    "column": 6,
                    "byte_offset": 662
                },
                "end": {
                    "file": "loan_application.robot",
                    "line": 23,
                    "column": 15,
                    "byte_offset": 671
                }
            },
            "visibility": "unknown"
        }
    ]
}

symbols reports the identical eight declarations under the identical kinds, plus one more: Arguments, the [Arguments] tag inside Submit Loan Application, also tagged field.

Query

18 query tools, the same on every supported language. Descriptions live in the shared reference: /docs/query-tools.

callers control_flow data_flow definition diagnostics effect_closure effect_summary fix_auto get_type graph import_organize interface mutations references repo_outline skeleton symbols symbols_batch

← ReScriptRuby →