IR
irwinrodriguez.dev
FA Perpetual license · One-time payment

You want Claude or other agents to understand your VFP application and work with it while it runs.

Claude talks to your VFP app. In real time.

An AI agent (Claude, from Claude Desktop, Claude Code or any MCP client) inspects and drives your running VFP application: it reads variables, queries cursors, looks at the active form, searches your source and calls business functions written in plain VFP. Without changing a single line of your existing architecture.

Who it is for
  • VFP developers
  • Diagnostics
  • Automation
  • AI integration

No credit card. Verify your email and you get 30 days of a full license (not a cut-down build) for FoxServer, FoxCore, FoxBridge, FoxAgent, FoxCli and FoxCli MCP, installer included, in your portal. One per person and product; after 30 days it expires.

With FoxAgent, once the trial expires the Broker still starts: it falls back to the evaluation limits (1 instance and 1 custom tool, with all 55 built-ins uncut) and prints your machineId so you can buy. Nothing has to be deleted, and that mode also works without signing up.

FoxAgent 1.64.3 Windows x64 Visual FoxPro 9 (SP2) Bridge: .NET Framework 4.8 Self-contained Broker and McpHost Digitally signed binaries

Features

Real-time inspection

Public variables, open cursors, the form on screen, the call stack: all live, without pausing the application or stealing the user's focus.

55 built-in tools

From get_variables to search_in_source: they read the live session, drive the app through its own interface, and work with DBFs and sources on disk with no running instance required.

User Defined Tools (UDT)

A VFP class with a name, a description, parameters and an Execute(). The agent calls it by name. If you can write a VFP class, you can extend the agent.

Roles: who bounds each tool

Four rungs. 0: only your business tools. 10 operator: your screen and driving it, where your permission model is still in charge. 20 inspector: the process behind it, variables and cursors. 90 engineer: raw VFP. Your application declares the rung in Connect() and only your code raises it, with Elevate(), never the chat; policy.json can only lower it.

All local, over Named Pipes

The Bridge (COM, .NET 4.8) lives inside your process; the Broker registers instances; the McpHost speaks MCP over stdio. All on the same machine: the Broker's HTTP listens on localhost:7400 only, nothing is open to the network, there is no telemetry and the license is validated offline.

Developer and Runtime

Developer: one license per development machine, bound to that machine, or a company license for 3, 5, 10 or all of your machines, bound to none. Runtime: one per company, and it ships inside your installer and removes the limits for every one of your customers.

How it works

  1. 1
    Load the Bridge in your VFP app

    Three lines at start-up (CREATEOBJECT('FoxAgent.Bridge'), SetInstance(_VFP) and Connect()) and one on the way out: Disconnect(), which is not optional. The instance registers with the local Broker and heartbeats every 15 seconds. Startup order matters: Broker → your application → the AI client.

  2. 2
    Connect your MCP client

    Claude Desktop, Claude Code or any MCP client: FoxAgent shows up as an MCP server and the agent discovers, at runtime, the tools the session's active role allows.

  3. 3
    Write UDTs for your domain

    find_product, sales_today, stock below minimum: twenty lines of VFP with a SELECT. Explicit registration with RegisterTool() in your startup code: easy to read, easy to audit.

The 55 tools, by where they act

Grouped by the rung each band requires, plus the band that needs no running VFP instance at all.

Your own business tools, and session plumbing Rung 0

execute_tool, describe_udt, get_tools, list_instances, get_role, set_role

The screen, and driving it (operator) Rung 10

take_screenshot, get_screen_state, list_open_forms, get_active_form, get_form_controls, find_control, get_control_state, get_control_text, click_control, send_key, set_control_text, refresh_form

The process behind the screen (inspector) Rung 20

get_variables, variable_exists, get_cursors, get_cursor_data, get_cursor_schema, get_datasessions, get_environment, eval_expression (read-only), list_prg_files

Outside the application (engineer) Rung 90

exec_command, set_variable, invoke_method, set_control_property, goto_record, set_cursor_field, close_cursors, close_instance, get_call_stack, get_object_members, reload_procedure

No instance needed Always

query_table, describe_table, list_tables, insert_row, update_row, set_memo, backup_table, get_source_file, write_source_file, search_in_source, list_tests, run_tests, get_project_structure, build_project, launch_instance, eval_vfp, foxagent_onboarding

FoxAgent at work

Three moments from a demo against FoxMart, an ordinary VFP point of sale. Nothing is mocked up.

The agent adds three units to the open sale
Five calls to put three units on the open sale: read the controls, fill two of them, click Add to cart, and a screenshot to confirm. The agent presses what a user would press; the form's own logic does the rest.
The sale form with the new line and the updated total
The result on the user's screen: the new line and the updated total.
Two FoxAgent refusals: reading variables needs rung 20 and opening a BROWSE needs rung 90
The rungs, live: reading the variables needs 20 (inspector), opening a BROWSE needs 90 (engineer), and the session is at 10 (operator). The agent may not raise its own role: only the application's own code raises it, with Elevate(), after authenticating the person.

For software houses

You ship your ERP to three hundred customers. The question isn't what FoxAgent costs per seat; it is how many licenses you will have to administer. The answer is one.

One license, not three hundred

The Runtime license is issued to your company, travels inside your installer and never expires. It is not counted per customer, per seat or per site.

Your developers, separately

The Developer license is what gives the agent access on a development machine, tied to that machine. The Runtime license is what makes the application installed at your customer run without restrictions.

Perpetual, with a year of updates

The version you buy works forever. Renewing maintenance is optional and only keeps new versions coming.

One Runtime license. Every customer, every seat, forever. Updates for a year; renew if you want more.

Pricing

Perpetual license, one-time payment, one year of updates included. Renewing maintenance is optional: it costs 25 % of the license (the figure is under each price), and you ask for it by writing to soporte@irwinrodriguez.dev.

TierLicensePriceMaintenance / year
1 machine Bound to one development machine 299 € 75 € Buy
Team 3 Company license, not bound to a machine 719 € 179 € Buy
Team 5 Company license, not bound to a machine 1,079 € 269 € Buy
Team 10 Company license, not bound to a machine 1,790 € 449 € Buy
Company Company license, not bound to a machine 2,990 € 749 € Buy

1 machine: the license is bound to that development machine. From Team 3 up it is a company license: a single foxagent.lic, in the company's name, valid on as many machines as the tier says and bound to none. The number is contractual: FoxAgent does not phone home.

One-time payment with 12 months of updates. After that year the license keeps working with the versions inside its maintenance; renewing it is handled by writing to soporte@irwinrodriguez.dev.

Runtime (ISV)
1,999 €
Optional renewal: 499 € a year
One per company: it ships inside your installer and removes the limits for every one of your customers, with no seats or sites to count.
See the Runtime

Frequently asked questions

Do I need to modify my existing VFP application?
Three initialization lines (CREATEOBJECT('FoxAgent.Bridge'), SetInstance(_VFP) and Connect()) and a Disconnect() in your exit routine, which is mandatory: without it the user can be shown "Mismatched pushjmp/popjmp call" on the way out and the license seat stays held. The architecture does not change and the Bridge loads like any COM object, but you do recompile your application, of course. If you are going to write your own tools, you also load the two SDK base files.
Which AI clients does it work with?
Claude Desktop, Claude Code and any client that speaks MCP. MCP is an open standard; FoxAgent implements the VFP side of the contract, so your tools keep working as clients come and go.
Can the agent modify data in my application?
As far as the rung your application gives it. A business user connects at 10 (operator): the agent changes data only through your screens, pressing what that person would press, and your validation and permissions are still in charge. Anything that goes around the application (raw VFP, writing a cursor past the form) requires 90 (engineer), which nobody connects at: only your own code raises it, with Elevate(), after authenticating the person, for a while, and it expires by itself. The chat cannot raise its own role. And on a customer's workstation, policy.json can lower the ceiling and switch off the tools that write DBFs on disk without going through any application.
What is a UDT and how do I create one?
A User Defined Tool is a VFP class that inherits from FoxAgentTool: ToolName, ToolDescription, parameters in DefineParameters() and the logic in Execute(). The SDK ships the base class, a template and working examples.
Does it need an internet connection?
No. Broker, Bridge and McpHost run locally; the only internet connection is your AI client's to its API. The license is validated offline against a public key built into the binary, and there is no telemetry: the only thing written is a local audit log.
How do I try it without buying?
Install it and you are in evaluation mode: 1 connected instance and 1 custom tool, with the 55 built-in tools uncapped. Registering on the portal also gets you a one-month trial.
How many VFP sessions can I have open at once?
With the purchased Developer license, eight instances registered with the Broker on that machine, plenty for developing with several projects open. The trial license brings one, and the Runtime sets no cap. When you reach it, the extra instance is refused with "Instance limit reached for this license": not a failure, just the cap.
What happens when my maintenance ends?
Nothing to what you already have installed: the license is perpetual and the builds it covers start the same ten years from now. What expires is the right to new builds. Install one compiled after your date and the Broker starts in evaluation and says so (mode MaintenanceExpired), with the date and the build on the first line of the log. Two ways out: go back to the earlier build, or renew.

Your VFP app, amplified with AI

Connect an agent to your legacy application and start inspecting, diagnosing and operating it with natural language.

Buy now