Skip to main content
Glama

create_domain

Define domain-specific languages for mathematical diagrams by specifying types and predicates to create visual representation rules.

Instructions

Create domain-specific language (DSL) definitions

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesDomain name
typesYes

Implementation Reference

  • Main execution logic for the 'create_domain' tool. Validates input arguments, constructs and stores a Domain object in the in-memory 'domains' Map, and returns a confirmation message.
    case "create_domain": { const args = request.params.arguments; if (!args || typeof args !== 'object') { throw new Error('Invalid arguments'); } const { name, types } = args as { name?: string; types?: Array<any> }; if (!name || !Array.isArray(types)) { throw new Error('Invalid domain definition: requires name and types array'); } // Validate types const validatedTypes: Array<DomainType> = types.map(type => { if (!type.name || typeof type.name !== 'string') { throw new Error('Invalid type definition: requires name'); } const validatedType: DomainType = { name: type.name }; if (type.predicates) { if (!Array.isArray(type.predicates)) { throw new Error('Invalid predicates: must be an array'); } validatedType.predicates = type.predicates.map((pred: any) => { if (!pred.name || !Array.isArray(pred.args)) { throw new Error('Invalid predicate: requires name and args array'); } return { name: String(pred.name), args: pred.args.map((arg: any) => String(arg)) }; }); } return validatedType; }); const domain: Domain = { name, types: validatedTypes }; domains.set(name, domain); return { content: [{ type: "text", text: `Created domain: ${name}` }] }; }
  • JSON Schema defining the expected input structure for the 'create_domain' tool, including domain name and array of types with optional predicates.
    inputSchema: { type: "object", properties: { name: { type: "string", description: "Domain name" }, types: { type: "array", items: { type: "object", properties: { name: { type: "string", description: "Type name" }, predicates: { type: "array", items: { type: "object", properties: { name: { type: "string" }, args: { type: "array", items: { type: "string" } } }, required: ["name", "args"] } } }, required: ["name"] } } }, required: ["name", "types"] }
  • src/index.ts:172-212 (registration)
    Tool registration in the ListTools response, specifying name, description, and input schema for 'create_domain'.
    { name: "create_domain", description: "Create domain-specific language (DSL) definitions", inputSchema: { type: "object", properties: { name: { type: "string", description: "Domain name" }, types: { type: "array", items: { type: "object", properties: { name: { type: "string", description: "Type name" }, predicates: { type: "array", items: { type: "object", properties: { name: { type: "string" }, args: { type: "array", items: { type: "string" } } }, required: ["name", "args"] } } }, required: ["name"] } } }, required: ["name", "types"] } },
  • TypeScript type definitions for DomainType and Domain, used to type-check and structure the data created by the tool.
    interface DomainType { name: string; predicates?: Array<{ name: string; args: Array<string>; }>; } interface Domain { name: string; types: Array<DomainType>; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bmorphism/penrose-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server