Skip to main content
Glama

Naija Faker MCP Server

MCP server for @codegrenade/naija-faker. Let's AI assistant generates fake typical Nigerian data ranging from name, address, phone number, LGAs and states for you. It supports Yoruba, Igbo, and Hausa ethnic groups with culturally authentic data.

NB: You can invoke the server in any AI assistant that supports MCP.

Quick Start

Add to your Claude Desktop config at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "naija-faker-mcp": {
      "command": "npx",
      "args": ["-y", "@codegrenade/naija-faker-mcp@latest"]
    }
  }
}

PS: You can also use the inspector to debug the server. See the development section for more information.

Related MCP server: Mono Banking MCP Server

Available tools

Tool

Description

generate_person

Generate one basic composite person record with identity and contact fields: title, name, email, phone, and address. Use atomic tools for individual attributes.

generate_address

Generate a fake Nigerian address.

generate_phone_number

Generate a fake Nigerian phone number.

generate_lgas

Generate fake Nigerian LGAs.

generate_states

Generate fake Nigerian states.

generate_email

Generate a fake Nigerian email.

generate_nin

Generate a fake Nigerian NIN.

generate_bvn

Generate a fake Nigerian BVN.

generate_license_plate

Generate a fake Nigerian license plate.

generate_people

Generate an array of basic composite person records. Defaults to 10 records.

generate_title

Generate a fake Nigerian title.

generate_name

Generate a fake Nigerian name.

generate_vehicle_record

Generate a fake Nigerian vehicle record.

generate_company

Generate a fake Nigerian company.

generate_university

Generate a fake Nigerian university

generate_education_record

Generate a fake Nigerian education record

generate_work_record

Generate a fake Nigerian work record

generate_detailed_person

Generate one detailed composite record containing a consistent person plus date of birth, marital, health, financial, kin, education, work, and vehicle fields.

generate_detailed_people

Generate an array of detailed composite person records. Defaults to 1 record.

generate_date_of_birth

Generate a fake date of birth

generate_marital_status

Generate a fake marital status

generate_blood_group

Generate a fake blood group

generate_genotype

Generate a fake genotype

generate_salary

Generate a fake salary

generate_next_of_kin

Generate a fake Nigerian next of kin

generate_bank_account

Generate a fake Nigerian bank account

generate_consistent_person

Generate one basic composite person record plus geographically coherent state and LGA fields.

generate_consistent_people

Generate an array of geographically consistent composite person records. Defaults to 10 records.

Development

Clone Repository

git clone https://github.com/kodegrenade/naija-faker-mcp.git

Navigate to the project directory

cd naija-faker-mcp

Install dependencies

npm install

Run the server

npm run dev

Debug with inspector

npx @modelcontextprotocol/inspector npm run dev

License

MIT

Available Tools

28 tools
generate_addressGenerate a fake addressA
Read-only

Generates a synthetic Nigerian address.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description does not contradict them. It adds the detail that the output is synthetic, but it does not disclose further behavioral traits such as randomness or format variance; the output schema covers return-value shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence saying 'Generates a synthetic Nigerian address' is concise, front-loaded, and contains no filler. Every word adds information beyond the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless generator with full annotation coverage and an output schema, this description is sufficient. An agent knows what to invoke it for and can rely on the output schema for return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters and 100% description coverage, so there are no parameters whose semantics need explanation. The baseline of 4 applies, and the description offers the useful country constraint even though no parameter controls it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the verb 'generates' and a specific resource: a synthetic Nigerian address. This clearly identifies what the tool does and distinguishes it from sibling tools that generate persons, bank accounts, or vehicle records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for producing a fake Nigerian address when such data is needed, but it gives no explicit when-to-use guidance or alternatives. With zero parameters and a self-explanatory purpose, this implied usage is acceptable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_bank_accountGenerate a bank accountA
Read-only

Generates a synthetic bank account for test data.

ParametersJSON Schema
NameRequiredDescriptionDefault
bankNameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description usefully adds that the bank account is synthetic and intended for test data, but it does not add deeper behavioral context such as randomness, determinism, or output characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, front-loading the action and the resource. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no required parameters, a read-only annotation, and an output schema, the core invocation is adequately covered. However, the optional 'bankName' parameter is undocumented and the description provides no sibling-selection guidance, leaving minor but real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining the 'bankName' parameter, but it never mentions it. The parameter name is somewhat self-explanatory, yet optionality, expected format, and behavior when omitted are left to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Generates'), a concrete resource ('a synthetic bank account'), and the intended context ('for test data'). This clearly differentiates it from sibling generators such as generate_person, generate_vehicle_record, and generate_company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for test data' implies when the tool is appropriate, but there is no explicit guidance about when not to use it or which sibling alternative to choose. With 27 sibling generators, the agent must largely infer selection from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_blood_groupGenerate blood groupA
Read-only

Generates a synthetic blood group.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds the meaningful context that the result is synthetic, which is important for agents to understand they are not getting real-world data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately communicates the tool's function. It contains no filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only synthetic generator with an output schema and safety annotations, the description is complete. Nothing else is required for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter burden for the description to carry. A baseline of 4 is appropriate because no additional parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('generates') and the resource ('synthetic blood group'), so an agent knows exactly what this tool produces. It is distinct from sibling generators by naming a unique resource, though it does not explicitly call out how it differs from similar generator tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as generate_person or generate_genotype. The tool is a simple generator, but the description does not mention context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_bvnGenerate a fake BVNA
Read-only

Generates a synthetic BVN for test data only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and non-destructive behavior. The description adds meaningful behavioral context by stating the output is synthetic and intended for test data only, ruling out any expectation of a real BVN lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence delivers the key facts without redundancy. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless generator with an output schema already present, the description is fully sufficient. It tells the agent what is generated and the allowed use, and no invocation details are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and schema coverage is 100%, so the description does not need to explain any parameter details. The baseline of 4 applies because there is nothing missing for an agent to invoke the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact action ('generates'), the specific artifact ('synthetic BVN'), and the scope ('test data only'). This clearly separates it from sibling generators such as generate_nin or generate_person.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'For test data only' is an explicit usage context that tells an agent when this generator is appropriate. It does not explicitly enumerate sibling alternatives or when-not-to-use cases, but the boundary is clear enough for a parameterless generator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_companyGenerate a companyA
Read-only

Generates a synthetic Nigerian company record.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, covering the safety profile. The description adds the critical 'synthetic' qualifier (indicating fake data) and the geographical scope 'Nigerian', which are not in the annotations. This aligns with the annotations and adds valuable context about the nature of the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is fully front-loaded with the action and the output type. There is no filler or redundancy; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (0 parameters), the existence of an output schema (which documents the return structure), and annotations covering safety, the description is complete for an agent to understand what the tool does and when to invoke it. No additional behavioral or contextual details are needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description has no obligation to explain them. The baseline for 0 params is 4, and since the description doesn't attempt to add parameter details (which would be unnecessary), it meets the baseline appropriately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Generates a synthetic Nigerian company record' uses a specific verb (generates) and resource (company record), and includes the qualifier 'Nigerian' which distinguishes it from other generators. Among siblings like generate_person, generate_vehicle_record, etc., it clearly identifies the unique output type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this tool generates a synthetic Nigerian company record. While it doesn't explicitly state when not to use it or name alternatives, the purpose is unambiguous and the sibling list makes the domain obvious. There is no misleading information, so it meets the 'clear context, no exclusions' criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_consistent_peopleGenerate geographically consistent peopleA
Read-only

Generates an array of synthetic people with geographically coherent identity, address, state, and LGA fields. Accepts an optional positive count and returns 10 records by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoThe number of people to generate
genderNoThe person's gender
languageNoThe person's language

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the description correctly adds behavioral context beyond that by noting the array nature, the optional positive count, and the default of 10 records. This is useful for an agent deciding whether to pass count or rely on the default.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences. The primary behavior and scope are front-loaded, the default-count behavior is included, and there is no redundant repetition of schema or annotation details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations cover safety, the description is mostly complete for correctly invoking the tool. The only notable gap is that 'geographically coherent' is not elaborated enough to tell an agent exactly how fields are constrained across states, LGAs, and identity, but this does not block basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage of all three parameters, so the baseline is 3. The description adds value by stating that count is optional and that omitting it yields 10 records by default, which is not present in the schema. It does not discuss gender or language, but the schema already describes those fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Generates an array of synthetic people' with 'geographically coherent identity, address, state, and LGA fields.' This clearly distinguishes it from other people generators, especially the singular generate_consistent_person, by explicitly saying it returns an array.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'geographically consistent' implies the intended use, but the description does not explicitly state when to choose this tool over generate_people, generate_consistent_person, or generate_detailed_people. There are no exclusions or alternative routing, so usage guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_consistent_personGenerate a geographically consistent personA
Read-only

Generates one synthetic person whose identity, address, state, and LGA are geographically coherent. Accepts optional language and gender.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNoThe person's gender
languageNoThe person's language

Output Schema

ParametersJSON Schema
NameRequiredDescription
lgaYes
emailYes
phoneYes
stateYes
titleYes
addressYes
fullNameYes
lastNameYes
firstNameYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true and destructiveHint=false. The description adds that the generated person's identity, address, state, and LGA are mutually coherent, and that language and gender are optional. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the main purpose front-loaded and no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generator with only two optional enum parameters, an output schema, and safety annotations, the description is complete enough for an agent to understand and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters have enums and descriptions. The description only repeats that language and gender are optional, which is already visible from required:0. It adds no extra meaning about how these params affect coherence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Generates'), a single synthetic person, and the key property: identity, address, state, and LGA are geographically coherent. This clearly differentiates it from generic generate_person and from the plural generate_consistent_people.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when geographic coherence matters, but it does not explicitly name alternatives or state when not to use this tool. With many sibling generation tools, explicit routing would be stronger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_date_of_birthGenerate a date of birthB
Read-only

Generates a synthetic date of birth and age.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxAgeNo
minAgeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context: 'synthetic' indicates non-real data, and 'and age' shows that age is also generated. It does not explain randomness, how age is calculated relative to the current date, or how min/max age constraints affect the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with every word earning its place. It avoids repeating the schema or annotations and wastes no space. This is an appropriate size for a tool with only two optional parameters and an output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the output schema plus annotations cover return structure and safety, so the description need not explain those. However, with zero schema descriptions and no usage guidance, the semantics of minAge/maxAge and the decision among sibling tools remain unresolved. It is minimally usable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description bears the burden of explaining minAge and maxAge, but it does not mention them at all. An agent must infer from property names that these parameters bound the generated age. No defaults, inclusiveness, or behavior for invalid combinations are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generates') and names a concrete resource ('synthetic date of birth and age'), which clearly distinguishes it from sibling tools like generate_name or generate_phone_number. It is not a pure tautology because it adds 'synthetic' and the fact that age is also produced. It does not, however, clarify how it relates to generate_person, which might also produce a date of birth.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus the many sibling tools. It does not mention alternatives such as generate_person or generate_detailed_person for full profiles, nor does it state when a standalone date of birth is appropriate. The agent is left to infer selection from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_detailed_peopleGenerate detailed peopleA
Read-only

Generates an array of synthetic detailed people. Each record includes geographically consistent identity data plus health, financial, kin, education, work, and vehicle records. Returns one record by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoThe number of people to generate
genderNoThe person's gender
languageNoThe person's language

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds value by stating 'Returns one record by default' and specifying the geographic consistency and comprehensive record composition, which clarifies behavior beyond the schema. This is strong disclosure given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundant content. It front-loads the primary purpose and key detail (array, detailed), then adds default behavior and data breadth. Every sentence earns its place—efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has a rich output schema (not shown but indicated as present), the description doesn't need to enumerate return fields. It clearly explains the tool's scope, default behavior, and data categories, which is sufficient for agents to select and invoke it correctly. The complexity is high but well-covered by description plus annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter (count, gender, language) is already documented with types and descriptions. The description adds little beyond the schema—it doesn't explain how gender/language affect the records or what default values are used. At 100% coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates synthetic detailed people, specifying the resource ('array of synthetic detailed people') and the breadth of data included (identity plus health, financial, etc.). It distinguishes from generic people generators by emphasizing 'detailed' and listing covered domains, though it doesn't explicitly name a sibling like generate_detailed_person or generate_people, so it's clear but not fully distinguishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for generating bulk detailed records, but does not explicitly state when to prefer this over siblings like generate_detailed_person (single) or generate_consistent_people (consistency-specific). No exclusions or alternatives are mentioned, so context is only partially implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_detailed_personGenerate a detailed personA
Read-only

Generates one synthetic detailed person, including geographically consistent identity data plus health, financial, kin, education, work, and vehicle records. Accepts optional language and gender.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNoThe person's gender
languageNoThe person's language

Output Schema

ParametersJSON Schema
NameRequiredDescription
lgaYes
workYes
emailYes
phoneYes
stateYes
titleYes
salaryYes
addressYes
vehicleYes
fullNameYes
genotypeYes
lastNameYes
educationYes
firstNameYes
nextOfKinYes
bloodGroupYes
dateOfBirthYes
maritalStatusYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal a read-only, non-destructive operation, and the description adds value by revealing that generated data is geographically consistent and spans multiple domains. It also clarifies the tool produces exactly one person, not a batch. No contradiction with annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, dense sentence front-loads the core action ('Generates one synthetic detailed person') and then efficiently lists the included record categories and optional parameters. There is no filler or redundant elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, annotations cover safety, and both parameters are fully documented in the schema, the description is largely sufficient. It conveys the singular output, breadth of included data, and geographic consistency, leaving only the sibling-selection guidance less explicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both optional parameters already described and constrained by enums. The description only restates that language and gender are optional, adding no meaning beyond what the input schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generates'), a clear resource ('one synthetic detailed person'), and a concrete scope ('health, financial, kin, education, work, and vehicle records'). The word 'detailed' and the record list help distinguish it from simpler siblings like generate_person, though it does not explicitly name differences from generate_consistent_person.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for generating a comprehensive person profile with multiple bundled record types, which suggests when it would be preferred over a simpler generator. However, it never explicitly states when to use this tool instead of generate_person, generate_consistent_person, or generate_detailed_people, so the guidance remains inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_education_recordGenerate an education recordB
Read-only

Generates a synthetic education record.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds 'synthetic,' indicating the data is fabricated rather than real, which is useful. It doesn't disclose behavior like randomness or standalone output, but annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, direct sentence with no wasted words. It states the action and the synthetic nature of the output efficiently, though it could have included more useful context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has an output schema, and annotations cover side effects. However, the description gives no guidance on what an education record includes or when to select this among many sibling generators, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the optional 'language' parameter at all. The schema's enum is clear on its own, but the description was supposed to compensate for low coverage and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it generates a synthetic education record. The word 'synthetic' usefully signals fabricated data. It doesn't explicitly distinguish from sibling generators like generate_work_record, but the resource is specific enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus sibling generators such as generate_work_record, generate_university, or generate_detailed_person. The context signal listing many similar sibling tools makes this omission noticeable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_emailGenerate a fake emailB
Read-only

Generates a synthetic email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds the word 'synthetic' but provides no additional behavioral details (e.g., randomness, format, or how it interacts with the name parameter). It is consistent with annotations but adds minimal context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. It front-loads the purpose and wastes no words, achieving ideal conciseness for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity and the presence of an output schema, the description is mostly sufficient for calling the tool, but the missing parameter semantics and lack of usage context leave it incomplete. It is adequate for a trivial generator but not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the optional 'name' parameter, but it does not mention it at all. An agent cannot know what the name does or how to use it, leaving a critical gap for a parameter that could affect generation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('generates') and resource ('synthetic email address'), clearly distinguishing it from siblings like generate_person or generate_name. The title reinforces this, and the wording is not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool vs alternatives. The description does not mention any criteria, conditions, or exclusions, nor does it reference sibling tools. The agent is left to infer usage solely from the name, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_genotypeGenerate genotypeA
Read-only

Generates a synthetic genotype.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds 'synthetic', which clarifies that the output is simulated and not real, a useful behavior beyond the annotations' read-only/non-destructive hints. However, it doesn't describe what calling the tool implies (e.g., no side effects, deterministic vs random), though the lack of parameters and presence of output schema reduce the gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and object, and there is no filler or redundancy. Exactly as concise as needed for a parameterless generator.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and an output schema, the description is largely sufficient. The agent knows it generates a synthetic genotype and can rely on the output schema for return structure. The only gap is usage context among siblings, but that is already penalized in usage_guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description has no parameter semantics to add. According to the rubric, a zero-parameter tool gets a baseline of 4, and the description is consistent with that. It doesn't interfere with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb 'Generates' and a specific resource 'synthetic genotype', so an agent can tell it produces a genotype. It does not explicitly differentiate from siblings, but the resource name is unique among the generate_* tools, so it's identifiable without deeper schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus any sibling. With 27 generate_* siblings, an agent gets no hints about selecting this over alternatives like generate_person or generate_blood_group. No exclusions or conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_lgasGenerate Nigerian LGAsA
Read-only

Returns the available Nigerian LGAs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior, lowering the burden. The description adds that the tool returns the available LGAs rather than generating a random one, but it does not explain list shape, ordering, or relationship to states. With strong annotations, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence wastes no words and front-loads the core message. It is appropriately sized for a zero-parameter read-only lookup.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema and read-only annotations, the description is complete: an agent knows the operation is a safe list lookup. Nothing else is needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the semantics are vacuous and the description need not elaborate. The baseline for a no-parameter tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Returns') and resource ('available Nigerian LGAs'), making the core function clear. It distinguishes the resource from sibling generators like generate_states and generate_address, though it does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is given: the description does not say when to choose this tool versus generate_states or generate_address, nor does it mention prerequisites or exclusions. The agent must infer from the name that this is the LGA-listing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_license_plateGenerate a license plateC
Read-only

Generates a synthetic Nigerian license plate.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly and non-destructive behavior. The description adds the useful context that the output is synthetic and Nigerian-specific, but it does not disclose plate format, randomness, or any generation constraints beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that is front-loaded and contains no filler. Every word contributes to the meaning without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and annotations cover some context, but the description leaves the state parameter entirely unexplained, including whether it is a Nigerian state name, abbreviation, or something else. This gap prevents an agent from confidently invoking the tool with a correct state value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema includes a single 'state' parameter with 0% description coverage, and the tool description does not mention state at all. There is no guidance on allowed values, default behavior, or how state affects the generated plate, so the description adds no parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Generates'), a concrete resource ('Nigerian license plate'), and the synthetic nature of the data. It is clear, though it does not explicitly differentiate itself from related sibling generators such as generate_vehicle_record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to choose this tool over alternatives like generate_vehicle_record or other data generators. Intended usage is only implied by the tool name and resource, not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_marital_statusGenerate marital statusA
Read-only

Generates a synthetic marital status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the useful qualifier 'synthetic', and annotations already indicate read-only, non-destructive, closed-world behavior. It does not describe randomness or independence from other generated attributes, but for a stateless zero-parameter generator this is a minor omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. For a trivial no-parameter generator, this length is appropriate and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero-parameter signature, read-only annotations, and output schema, the description is largely sufficient for an agent to invoke the tool correctly. It could mention available marital-status values, but the structured metadata fills most critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parametersaine and the schema confirms this with 100% coverage. The description correctly implies no inputs are needed, which satisfies the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool 'generates' a 'synthetic marital status', giving a specific verb and resource. It does not explicitly distinguish itself from sibling generators like generate_person that may produce marital status as part of a larger entity, but the core purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as generate_person or generate_consistent_person, nor is there clarification that this produces a single field rather than a full record. Usage context is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_nameGenerate a fake nameB
Read-only

Generates a synthetic Nigerian name.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNo
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds 'synthetic', indicating the name is fake, but it does not disclose whether the generated name is random, independent across calls, or consistent—an important distinction given the generate_consistent_person siblings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, front-loading the verb. It is appropriately short, though it is concise to the point of under-specification because it omits behavioral and parameter context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large sibling family including generate_person, generate_consistent_person, and generate_title, the description is not complete enough for an agent to reliably choose this tool. The output schema may cover return shape, but the description does not provide the behavioral or routing context needed to fully disambiguate it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never mentions the gender or language parameters. The 'Nigerian' qualifier hints that the language enum values correspond to Nigerian languages, but the agent must infer all parameter meaning from the enum labels alone. No defaults, optionality, or combination behavior are described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Generates', and a specific resource, 'synthetic Nigerian name', which clearly distinguishes it from sibling tools like generate_person, generate_people, and generate_title. The 'Nigerian' qualifier narrows the scope further and makes the tool's purpose immediately recognizable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as generate_person, generate_consistent_person, or generate_title. The description does not state whether this is appropriate for standalone random names, consistent names, or full person objects, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_next_of_kinGenerate next of kinB
Read-only

Generates a synthetic next-of-kin record.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNo
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations supply readOnlyHint=true and destructiveHint=false, and the word 'synthetic' adds the important context that the data is fabricated and not real. The description does not elaborate on randomness, optional-parameter effects, or any generation constraints, but for a safe read-only generator this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that wastes no words. It is concise while still containing the key 'synthetic' qualifier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple generator with zero required parameters and an output schema, the description is minimally sufficient to invoke the tool. However, it lacks any guidance on parameter effect or when to choose it over sibling generators, so it is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description says nothing about how gender or language affect the generated next-of-kin record. The parameter names and enum values are self-explanatory, but the description fails to compensate for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Generates') and a distinct resource ('synthetic next-of-kin record'), so an agent can tell this apart from the many person/name generators. It is clear, though it does not explicitly contrast it with siblings such as generate_person or generate_detailed_person.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives, and no conditions for choosing this tool over related generators. An agent gets no help deciding between this and generate_person/consistent_person options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_ninGenerate a fake NINA
Read-only

Generates a synthetic NIN for test data only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds 'synthetic' and 'test data only' but does not describe output characteristics or generation behavior beyond that; the output schema handles return details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the action and resource and ending with the test-data constraint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter generator with annotations and an output schema, the description provides the necessary purpose and usage constraint. No material information an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to add about parameter meanings. The zero-parameter baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('generates') and resource ('a synthetic NIN'), and scopes it clearly to test data. This makes the tool's purpose unambiguous and distinct from the many other generate_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'For test data only' provides clear context and an implicit exclusion of production use. It does not name alternatives or explicit when-not conditions, but the tool is a standalone generator with no obvious competing sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_peopleGenerate fake peopleA
Read-only

Generates an array of basic composite synthetic person records. Accepts an optional positive count and returns 10 records by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoThe number of people to generate

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint, so the description only needs to add behavioral context. It adds useful details: the result is an array, records are basic and composite/synthetic, count is optional, and 10 is the default. This goes beyond the annotation baseline without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, tightly written sentence that front-loads the core behavior and then adds the key default behavior. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single optional parameter, clear annotations, and an output schema present, the description covers the essential calling contract: optional count and default output size. It could name sibling alternatives, but that is more a usage-guidance gap than a completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents count as an integer with a minimum of 1, and schema coverage is 100%. The description adds meaning by stating the count is optional and that the default is 10 records, which the schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource: it generates an array of synthetic person records. The words 'array' and 'basic composite' implicitly distinguish it from singular, detailed, and consistent person generators, though it does not name a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when multiple basic synthetic person records are needed, and the default count of 10 hints at batch generation. However, it gives no explicit guidance about when to choose this over generate_person, generate_consistent_people, or generate_detailed_people.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_personGenerate a fake personA
Read-only

Generates one basic composite person record with identity and contact fields. Use atomic tools when you need only one attribute. Accepts optional language (hausa, igbo, or yoruba) and gender (male or female). Returns one synthetic object.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNoThe person's gender
languageNoThe person's language

Output Schema

ParametersJSON Schema
NameRequiredDescription
emailYes
phoneYes
titleYes
addressYes
fullNameYes
lastNameYes
firstNameYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds that it returns 'one synthetic object' and is a 'composite' record, but doesn't disclose edge cases or any additional behavioral nuances. It adds modest context beyond the annotations, hence a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero fluff; the core function and the key usage caveat are front-loaded. Every clause adds value, and the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (not shown but indicated), so return structure is covered elsewhere. The description covers the purpose, parameters, and usage distinction sufficiently for a basic composite generator. Minor gap: it doesn't hint at the specific identity/contact fields returned, but the output schema fills that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters have enums and descriptions. The description repeats the parameter options ('language (hausa, igbo, or yoruba) and gender (male or female)') without adding new meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('generates') and resource ('one basic composite person record with identity and contact fields'), and explicitly contrasts with atomic tools, distinguishing it from siblings like generate_name or generate_email. It also implies a scope difference from detailed_person via 'basic composite'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit guidance: 'Use atomic tools when you need only one attribute,' which routes the agent away from composite generation. However, it does not explicitly address when to choose this over generate_people or generate_detailed_person, leaving some ambiguity among composite siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_phone_numberGenerate a fake phone numberB
Read-only

Generates a synthetic Nigerian phone number.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the detail that the number is 'Nigerian' and 'synthetic', which is useful context beyond annotations. However, it does not disclose any other behavioral aspects such as randomness, determinism, or output format, but with annotations covering safety, the description adds some value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no fluff. It front-loads the core purpose and is appropriately sized for a tool with a single optional parameter. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and that annotations and an output schema exist, the description is still incomplete. It omits usage guidance and the network parameter semantics, which are critical for correct invocation. An agent cannot fully determine when and how to use this tool based on the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate for explaining the 'network' parameter. It does not mention the parameter at all, leaving the agent to infer from the enum (mtn, glo, airtel, 9mobile) without knowing how it affects the output. The enum is somewhat self-explanatory, but the description fails to connect it to the tool's behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('generates') and a specific resource ('synthetic Nigerian phone number'). It clearly distinguishes from sibling tools that generate people, NINs, vehicle records, etc. However, it doesn't mention the optional network parameter, which is part of the tool's purpose, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of scenarios (e.g., needing a phone number, or when to use generate_consistent_person for correlated data). No exclusions or comparisons are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_salaryGenerate a salary recordB
Read-only

Generates a synthetic salary record.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey read-only, non-destructive behavior, and the description adds the useful fact that the record is synthetic. However, it says nothing about randomness, consistency, or dependencies, so it provides adequate but not rich behavioral context given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the core action and object, with no wasted words. It is as concise as a description can be, though it sacrifices explanatory depth elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional enum parameter) and has an output schema and annotations, so the description is close to sufficient. However, the lack of usage guidance and parameter semantics leaves gaps that an agent must resolve by inference, making this a minimum-viable description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions the 'level' parameter or how it affects the generated salary. The enum values are self-explanatory, but the description adds no meaning beyond the schema and fails to compensate for the missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a clear verb ('generates') and names the resource ('synthetic salary record'), so an agent knows what it produces. It does not explicitly differentiate from sibling generators like generate_work_record, which could also involve salary data, so it falls short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given; the description states only what the tool does. With many sibling generator tools available, there is no mention of alternatives or conditions, so an agent must infer selection from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_statesGenerate Nigerian statesA
Read-only

Returns the available Nigerian states.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns a predefined list of Nigerian states, but it does not say whether the result is exhaustive, ordered, or stable across calls. Since the tool has no parameters and a simple read-only behavior, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that conveys the essential behavior with no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only tool with an output schema, the description is nearly complete: it says what is returned and the domain. It loses one point for not clarifying what 'available' means (e.g., all 36 states plus FCT) or whether the ordering/count is guaranteed, though these are minor given the output schema and lack of parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters, so the schema's empty properties object covers 100% of the parameter surface. The description need not add parameter details, and the baseline for a zero-parameter tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and a specific resource ('available Nigerian states'), making it easily distinguishable from siblings like generate_lgas or generate_person. Even though the title already conveys the topic, the description clarifies that the tool returns the full available set rather than generating a single random value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool instead of sibling generators such as generate_lgas, generate_address, or generate_person. The context is clear, but there are no exclusions, prerequisites, or routing hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_titleGenerate a fake titleB
Read-only

Generates a synthetic Nigerian title.

ParametersJSON Schema
NameRequiredDescriptionDefault
genderNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat those. The description adds the Nigerian cultural context (which is helpful) but doesn't disclose output format or any conditional behavior (e.g., whether gender affects the title). With annotations covering the safety profile, the description adds minimal extra behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and to the point. It provides the core purpose without any fluff, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one optional parameter and an output schema (which likely defines the title format), the description is relatively complete for a simple generation tool. However, it could benefit from specifying the cultural scope (Nigerian) and how gender is used, but the output schema mitigates the need to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one optional parameter 'gender' with enum values, and schema coverage is 0%. The description does not explain that 'gender' controls title variation (e.g., male vs. female titles). While the enum values are self-explanatory, the description fails to clarify how gender affects the generated title, leaving the agent to infer from common knowledge.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Generates a synthetic Nigerian title' clearly states the verb (generates) and resource (Nigerian title), making the tool's purpose clear. It distinguishes from siblings like generate_name, which generates a full name, though it doesn't explicitly contrast with generate_name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like generate_name or generate_person. The description does not mention that generate_title might be used for title-only generation, nor does it note any constraints (e.g., gender-based). Context implies standalone title generation, but no explicit usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_universityGenerate a universityA
Read-only

Generates a synthetic Nigerian university record.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the important context that the record is synthetic and Nigerian-specified, which goes beyond annotations, but it does not disclose details like output structure or possible variability. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that immediately states the tool's purpose with the key qualifying details ('synthetic', 'Nigerian', 'university record'). There is no wasted wording and the structure efficiently front-loads the action and object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless generation tool with an output schema available, this description is fully sufficient. An agent knows what to expect (a synthetic Nigerian university record) and can rely on the output schema for return structure. No additional context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema provides full 100% coverage and there is nothing for the description to clarify. The baseline for no parameters is 4, and the description appropriately focuses on the output rather than any parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generates') and a specific resource ('synthetic Nigerian university record'), making the tool's function unmistakable. It is distinct from siblings like generate_person or generate_education_record by targeting a university entity, even though it does not explicitly name the differentiating sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when a synthetic Nigerian university record is needed, which is clear from the purpose. However, it provides no explicit guidance about when not to use it or how it differs from overlapping siblings such as generate_education_record or generate_company.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_vehicle_recordGenerate a vehicle recordB
Read-only

Generates a synthetic Nigerian vehicle record.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds the key behavioral fact that the record is synthetic and Nigerian. It does not go deeper into randomness, determinism, or state-dependent behavior, but for a simple generator with an output schema this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repeated title words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, an output schema, and safety annotations, the definition is mostly adequate. It is incomplete only in usage guidance and the meaning/effect of the optional state parameter, which prevent it from being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never mentions the only parameter, state. The word 'Nigerian' hints at the domain but does not explain what values state accepts or how it affects the generated record, so the parameter semantics are not compensated outside the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Generates') and resource ('synthetic Nigerian vehicle record'), which is clear and distinct enough from sibling tools like generate_license_plate. It does not explicitly contrast itself with sibling generate_* tools, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied: call this when a synthetic Nigerian vehicle record is needed. However, there is no explicit guidance about when to prefer this over sibling record generators (e.g., generate_education_record, generate_work_record) or what the optional state parameter is for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_work_recordGenerate a work recordA
Read-only

Generates a synthetic work record.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool's safety profile is covered. The description adds the 'synthetic' clarification, which is useful context, but it does not describe the output format, randomness behavior, or relation to other generated entities. With annotations present, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no filler. It front-loads the verb and resource, making the purpose immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter generator with an output schema and safety annotations, the description covers the essentials. It could be slightly more helpful by clarifying what a 'work record' contains or when to use this tool over nearby sibling generators, but the low complexity keeps the gap minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter ambiguity to resolve. The description need not explain parameter meaning; the baseline for a zero-parameter tool is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: generating a synthetic work record. It is specific about verb ('generates') and resource ('work record'), though it does not explicitly differentiate it from sibling record generators like generate_education_record or generate_vehicle_record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus any of the many sibling generators. The description only states what the tool does, with no mention of alternatives, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 29 tool updatesv2.0.0
    • Changedgenerate_address1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Addedgenerate_bank_account
    • Changedgenerate_blood_group1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_bvn1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_company1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_consistent_people8 fields changed
      • addedInput schema / properties / count / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / count / minimum
        Added value: +1
      • changedInput schema / properties / count / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / gender / description
        Previous value: -"The gender of the person data. The accepted gender values are male and female"New value: +"The person's gender"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • changedInput schema / properties / language / description
        Previous value: -"The language of the person data. The available languages are Hausa, Igbo and Yoruba"New value: +"The person's language"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "address": {
        +            "type": "string"
        +          },
        +          "email": {
        +            "type": "string"
        +          },
        +          "firstName": {
        +            "type": "string"
        +          },
        +          "fullName": {
        +            "type": "string"
        +          },
        +          "lastName": {
        +            "type": "string"
        +          },
        +          "lga": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "phone": {
        +            "type": "string"
        +          },
        +          "state": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "firstName",
        +          "lastName",
        +          "fullName",
        +          "email",
        +          "phone",
        +          "address",
        +          "state",
        +          "lga"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_consistent_person5 fields changed
      • changedInput schema / properties / gender / description
        Previous value: -"The gender of the person data. The accepted gender values are male and female"New value: +"The person's gender"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • changedInput schema / properties / language / description
        Previous value: -"The language of the person data. The available languages are Hausa, Igbo and Yoruba"New value: +"The person's language"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "email": {
        +      "type": "string"
        +    },
        +    "firstName": {
        +      "type": "string"
        +    },
        +    "fullName": {
        +      "type": "string"
        +    },
        +    "lastName": {
        +      "type": "string"
        +    },
        +    "lga": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "phone": {
        +      "type": "string"
        +    },
        +    "state": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "firstName",
        +    "lastName",
        +    "fullName",
        +    "email",
        +    "phone",
        +    "address",
        +    "state",
        +    "lga"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_date_of_birth9 fields changed
      • removedInput schema / properties / maxAge / description
        Removed value: -"The maximum age of the date of birth"
      • addedInput schema / properties / maxAge / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / maxAge / minimum
        Added value: +0
      • changedInput schema / properties / maxAge / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / properties / minAge / description
        Removed value: -"The minimum age of the date of birth"
      • addedInput schema / properties / minAge / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / minAge / minimum
        Added value: +0
      • changedInput schema / properties / minAge / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_detailed_people9 fields changed
      • changedInput schema / properties / count / description
        Previous value: -"The number of detailed people to generate"New value: +"The number of people to generate"
      • addedInput schema / properties / count / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / count / minimum
        Added value: +1
      • changedInput schema / properties / count / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / gender / description
        Previous value: -"The gender of the detailed people. The accepted gender values are male and female"New value: +"The person's gender"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • changedInput schema / properties / language / description
        Previous value: -"The language of the detailed people. The available languages are Hausa, Igbo and Yoruba"New value: +"The person's language"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "address": {
        +            "type": "string"
        +          },
        +          "bloodGroup": {
        +            "type": "string"
        +          },
        +          "dateOfBirth": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "age": {
        +                "type": "number"
        +              },
        +              "date": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "date",
        +              "age"
        +            ],
        +            "type": "object"
        +          },
        +          "education": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "abbreviation": {
        +                "type": "string"
        +              },
        +              "course": {
        +                "type": "string"
        +              },
        +              "degree": {
        +                "type": "string"
        +              },
        +              "graduationYear": {
        +                "type": "number"
        +              },
        +              "university": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "university",
        +              "abbreviation",
        +              "degree",
        +              "course",
        +              "graduationYear"
        +            ],
        +            "type": "object"
        +          },
        +          "email": {
        +            "type": "string"
        +          },
        +          "firstName": {
        +            "type": "string"
        +          },
        +          "fullName": {
        +            "type": "string"
        +          },
        +          "genotype": {
        +            "type": "string"
        +          },
        +          "lastName": {
        +            "type": "string"
        +          },
        +          "lga": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "maritalStatus": {
        +            "type": "string"
        +          },
        +          "nextOfKin": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "address": {
        +                "type": "string"
        +              },
        +              "fullName": {
        +                "type": "string"
        +              },
        +              "phone": {
        +                "type": "string"
        +              },
        +              "relationship": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "fullName",
        +              "relationship",
        +              "phone",
        +              "address"
        +            ],
        +            "type": "object"
        +          },
        +          "phone": {
        +            "type": "string"
        +          },
        +          "salary": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "amount": {
        +                "type": "number"
        +              },
        +              "currency": {
        +                "type": "string"
        +              },
        +              "frequency": {
        +                "type": "string"
        +              },
        +              "level": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "amount",
        +              "currency",
        +              "level",
        +              "frequency"
        +            ],
        +            "type": "object"
        +          },
        +          "state": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "vehicle": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "color": {
        +                "type": "string"
        +              },
        +              "licensePlate": {
        +                "type": "string"
        +              },
        +              "make": {
        +                "type": "string"
        +              },
        +              "model": {
        +                "type": "string"
        +              },
        +              "year": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "licensePlate",
        +              "make",
        +              "model",
        +              "year",
        +              "color"
        +            ],
        +            "type": "object"
        +          },
        +          "work": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "company": {
        +                "type": "string"
        +              },
        +              "industry": {
        +                "type": "string"
        +              },
        +              "position": {
        +                "type": "string"
        +              },
        +              "startYear": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "company",
        +              "position",
        +              "industry",
        +              "startYear"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "firstName",
        +          "lastName",
        +          "fullName",
        +          "email",
        +          "phone",
        +          "address",
        +          "state",
        +          "lga",
        +          "dateOfBirth",
        +          "maritalStatus",
        +          "bloodGroup",
        +          "genotype",
        +          "salary",
        +          "nextOfKin",
        +          "education",
        +          "work",
        +          "vehicle"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_detailed_person5 fields changed
      • changedInput schema / properties / gender / description
        Previous value: -"The gender of the detailed person. The accepted gender values are male and female"New value: +"The person's gender"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • changedInput schema / properties / language / description
        Previous value: -"The language of the detailed person. The available languages are Hausa, Igbo and Yoruba"New value: +"The person's language"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "bloodGroup": {
        +      "type": "string"
        +    },
        +    "dateOfBirth": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "age": {
        +          "type": "number"
        +        },
        +        "date": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "date",
        +        "age"
        +      ],
        +      "type": "object"
        +    },
        +    "education": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "abbreviation": {
        +          "type": "string"
        +        },
        +        "course": {
        +          "type": "string"
        +        },
        +        "degree": {
        +          "type": "string"
        +        },
        +        "graduationYear": {
        +          "type": "number"
        +        },
        +        "university": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "university",
        +        "abbreviation",
        +        "degree",
        +        "course",
        +        "graduationYear"
        +      ],
        +      "type": "object"
        +    },
        +    "email": {
        +      "type": "string"
        +    },
        +    "firstName": {
        +      "type": "string"
        +    },
        +    "fullName": {
        +      "type": "string"
        +    },
        +    "genotype": {
        +      "type": "string"
        +    },
        +    "lastName": {
        +      "type": "string"
        +    },
        +    "lga": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "maritalStatus": {
        +      "type": "string"
        +    },
        +    "nextOfKin": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "address": {
        +          "type": "string"
        +        },
        +        "fullName": {
        +          "type": "string"
        +        },
        +        "phone": {
        +          "type": "string"
        +        },
        +        "relationship": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "fullName",
        +        "relationship",
        +        "phone",
        +        "address"
        +      ],
        +      "type": "object"
        +    },
        +    "phone": {
        +      "type": "string"
        +    },
        +    "salary": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "frequency": {
        +          "type": "string"
        +        },
        +        "level": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount",
        +        "currency",
        +        "level",
        +        "frequency"
        +      ],
        +      "type": "object"
        +    },
        +    "state": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "vehicle": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "color": {
        +          "type": "string"
        +        },
        +        "licensePlate": {
        +          "type": "string"
        +        },
        +        "make": {
        +          "type": "string"
        +        },
        +        "model": {
        +          "type": "string"
        +        },
        +        "year": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "licensePlate",
        +        "make",
        +        "model",
        +        "year",
        +        "color"
        +      ],
        +      "type": "object"
        +    },
        +    "work": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "company": {
        +          "type": "string"
        +        },
        +        "industry": {
        +          "type": "string"
        +        },
        +        "position": {
        +          "type": "string"
        +        },
        +        "startYear": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "company",
        +        "position",
        +        "industry",
        +        "startYear"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "firstName",
        +    "lastName",
        +    "fullName",
        +    "email",
        +    "phone",
        +    "address",
        +    "state",
        +    "lga",
        +    "dateOfBirth",
        +    "maritalStatus",
        +    "bloodGroup",
        +    "genotype",
        +    "salary",
        +    "nextOfKin",
        +    "education",
        +    "work",
        +    "vehicle"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_education_record3 fields changed
      • removedInput schema / properties / language / description
        Removed value: -"The language of the education record. The available languages are Hausa, Igbo and Yoruba"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_email2 fields changed
      • removedInput schema / properties / name / description
        Removed value: -"The name of the email data"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_genotype1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_lgas1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_license_plate2 fields changed
      • removedInput schema / properties / state / description
        Removed value: -"The state of the preferred license plate"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_marital_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_name5 fields changed
      • removedInput schema / properties / gender / description
        Removed value: -"The gender of the name data. The accepted gender values are male and female"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • removedInput schema / properties / language / description
        Removed value: -"The language of the name data. The available languages are Hausa, Igbo and Yoruba"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_next_of_kin5 fields changed
      • removedInput schema / properties / gender / description
        Removed value: -"The gender of the next of kin. The accepted gender values are male and female"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • removedInput schema / properties / language / description
        Removed value: -"The language of the next of kin. The available languages are Hausa, Igbo and Yoruba"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_nin1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_people5 fields changed
      • changedInput schema / properties / count / description
        Previous value: -"The number of persons to be generated as part of the people list"New value: +"The number of people to generate"
      • addedInput schema / properties / count / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / count / minimum
        Added value: +1
      • changedInput schema / properties / count / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "address": {
        +            "type": "string"
        +          },
        +          "email": {
        +            "type": "string"
        +          },
        +          "firstName": {
        +            "type": "string"
        +          },
        +          "fullName": {
        +            "type": "string"
        +          },
        +          "lastName": {
        +            "type": "string"
        +          },
        +          "phone": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "firstName",
        +          "lastName",
        +          "fullName",
        +          "email",
        +          "phone",
        +          "address"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_person5 fields changed
      • changedInput schema / properties / gender / description
        Previous value: -"The gender of the person data. The accepted gender values are male and female"New value: +"The person's gender"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • changedInput schema / properties / language / description
        Previous value: -"The language of the person data. The available languages are Hausa, Igbo and Yoruba"New value: +"The person's language"
      • addedInput schema / properties / language / enum
        Added value: +[
        +  "hausa",
        +  "igbo",
        +  "yoruba"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "email": {
        +      "type": "string"
        +    },
        +    "firstName": {
        +      "type": "string"
        +    },
        +    "fullName": {
        +      "type": "string"
        +    },
        +    "lastName": {
        +      "type": "string"
        +    },
        +    "phone": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "firstName",
        +    "lastName",
        +    "fullName",
        +    "email",
        +    "phone",
        +    "address"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_phone_number3 fields changed
      • removedInput schema / properties / network / description
        Removed value: -"The network of the preferred telco. The available networks are MTN, Glo, Airtel and 9mobile"
      • addedInput schema / properties / network / enum
        Added value: +[
        +  "mtn",
        +  "glo",
        +  "airtel",
        +  "9mobile"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_salary3 fields changed
      • removedInput schema / properties / level / description
        Removed value: -"The level of the salary. The accepted level values are entry, mid, executive and senior"
      • addedInput schema / properties / level / enum
        Added value: +[
        +  "entry",
        +  "mid",
        +  "executive",
        +  "senior"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_states1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_title3 fields changed
      • removedInput schema / properties / gender / description
        Removed value: -"The gender of the title data. The accepted gender values are male and female"
      • addedInput schema / properties / gender / enum
        Added value: +[
        +  "male",
        +  "female"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_university1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_vehicle_record2 fields changed
      • removedInput schema / properties / state / description
        Removed value: -"The state of the preferred vehicle"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate_work_record1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {}
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Removedgenereate_bank_account
  2. 28 tool updatesv1.0.1
    • First observedgenerate_address
    • First observedgenerate_blood_group
    • First observedgenerate_bvn
    • First observedgenerate_company
    • First observedgenerate_consistent_people
    • First observedgenerate_consistent_person
    • First observedgenerate_date_of_birth
    • First observedgenerate_detailed_people
    • First observedgenerate_detailed_person
    • First observedgenerate_education_record
    • First observedgenerate_email
    • First observedgenerate_genotype
    • First observedgenerate_lgas
    • First observedgenerate_license_plate
    • First observedgenerate_marital_status
    • First observedgenerate_name
    • First observedgenerate_next_of_kin
    • First observedgenerate_nin
    • First observedgenerate_people
    • First observedgenerate_person
    • First observedgenerate_phone_number
    • First observedgenerate_salary
    • First observedgenerate_states
    • First observedgenerate_title
    • First observedgenerate_university
    • First observedgenerate_vehicle_record
    • First observedgenerate_work_record
    • First observedgenereate_bank_account

TDQS

B3.4/5.0

Scored across 28 tools

Disambiguation4/5

Most tools target a distinct data attribute (e.g., name, BVN, bank account), but there are six person-generation variants (basic, consistent, detailed, and plural forms) that an agent could easily confuse. The descriptions clarify differences, so misselection is possible but not likely with careful reading.

Naming Consistency4/5

All tools follow a consistent generate_* snake_case convention, making the set feel uniform. Minor deviations include generate_states and generate_lgas, which return static lists rather than generating synthetic data, and plural variants like generate_people.

Tool Count3/5

28 tools is on the heavy side and exceeds the typical well-scoped range, but the broad domain of Nigerian synthetic data (identity, health, finance, education, vehicles, geography) justifies the count. The tools are not redundant; each focuses on a different data type.

Completeness4/5

The surface covers a wide range of Nigerian-specific data generation needs, including NIN, BVN, states/LGAs, vehicles, and detailed composite records. Minor gaps exist, such as passport numbers, voter IDs, or religion/ethnicity fields, but core test-data workflows are well supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Nigeria's AI infrastructure server that provides business automation agents including WhatsApp automation, university support, travel management, and legal document processing. Integrates payment processing, text-to-speech capabilities, and webhook handling for Nigerian businesses.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform Nigerian banking operations including account management, payments, and identity verification through the Mono Open Banking API.
    59
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to generate realistic, synthetic test data on demand, including valid PESELs, NIPs, addresses, and more across 27 EU countries, through two tools: list_generators and generate.
    2
    21 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to buy airtime and data, check wallet balance, list data plans, and view transactions for Nigerian mobile networks via an Azabill account.
    6
    146 npm
    MIT