Open FileMaker Text Standard

The universal script format for FileMaker and AI.

`.fmscript` is a readable, deterministic representation of FileMaker scripts. It gives humans, IDEs, plugins, and AI agents one shared language for script logic that can round-trip back into FileMaker.

Open Not owned by one editor, one model, or one extension.
Round-trip Designed for stable conversion to and from real FileMaker scripts.
AI-ready Strict grammar rules make generated scripts testable.

A standard, not a product page.

FileMaker developers need one textual grammar that tools can share. `.fmscript` is the neutral bridge: terse enough for humans, strict enough for compilers, and explicit enough for AI agents.

01 / Deterministic

One logical step, stable boundaries.

Simple steps remain compact. Multi-line calculations, JSON payloads, and long comment steps are preserved when FileMaker developers actually use them.

02 / Native

FileMaker semantics stay intact.

The grammar preserves FileMaker's real naming, parameters, spacing quirks, and bracket forms instead of inventing a prettier language that cannot paste back.

03 / Portable

Any tool can adopt it.

Editors, plugins, model agents, documentation systems, and deployment tools can all target the same `.fmscript` surface without depending on ai2fm.

Built for the new FileMaker toolchain.

AI can already write useful FileMaker logic when it has a strict target. `.fmscript` gives agents a compact grammar and gives developers something they can inspect before it enters the Script Workspace.

  • Versionable script text for Git and code review.
  • Stable syntax for VS Code-compatible editors.
  • A shared target for ChatGPT, Claude, Gemini, Codex, and local models.
  • A practical export/import format for plugin authors.
  • Preservation of inline // and /* */ comments inside calculation bodies.
frontPage.fmscript v0.90 grammar
# Correct context for customer data entry
Go to Layout [ “customers” (customers) ]

# New customer record
New Record/Request

# Set customer details
Set Field [ customers::firstName; "Ada" ]
Set Field [ customers::lastName; "Lovelace" ]

# Commit the new record to save it in the database
Commit Records/Requests [ No dialog ]

# Normalize customer data
Perform Script [ "normalizeCustomer"; Parameter: JSONSetElement (
  "{}" ;
  [ "id" ; customers::__pkCustomerID ; JSONString ] ;
  [ "fullName" ; customers::firstName & " " & customers::lastName ; JSONString ]
) ]

# Check for errors and provide feedback
If [ Get ( LastError ) = 0 ]

    Show Custom Dialog [ Title: "Saved" ; Message: "Customer created." ; Default Button: "Ok", Commit: "Yes" ]

End If

Adopters and implementers.

The standard is intended for the whole FileMaker ecosystem. Tool authors can use `.fmscript` as a textual export target, import target, or AI instruction format.

Plugins Vendors

Plugin export/import alignment

Reserved for FileMaker plugin vendors that align text export with the `.fmscript` grammar.

ai2fm logo

Editors and language servers

Syntax highlighting, snippets, diagnostics, folding, and language server support can all share one canonical grammar.

AI agents

Model-facing script generation

AI systems can target `.fmscript` directly, then let deterministic tooling validate and convert the result.

Start with the v0.90 grammar.

The first published spec captures the core rules: brackets, semicolons, field references, variables, comments, disabled steps, multi-line calculation bodies, and comment continuation.

core rule valid syntax
# Correct
Set Field [ Customers::FirstName ; "Ada" ]
Set Variable [ $name ; Value: Customers::FirstName ]
Perform Script [ Specified:From list; "Normalize Customer"; Parameter: $name ]

# Correct: inline comments inside calculation bodies
Set Variable [ $payload ; Value: JSONSetElement (
  "{}" ;
  [ "customer" ; Customers::Name ; JSONString ] ; // visible to the developer
  [ "active" ; 1 ; JSONBoolean ] /* FileMaker accepts this */
) ]

# Incorrect
Set Field Customers::FirstName = "Ada"
Set Variable $name = Customers::FirstName
Perform Script "Normalize Customer"