> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # getDataMapTools > Return fully-built SWAIG function dicts (DataMap-style tools). [ref-skillbase]: /docs/server-sdks/reference/typescript/agents/skill-base [ref-datamap]: /docs/server-sdks/reference/typescript/agents/data-map Return fully-built SWAIG function dicts for tools that this skill builds via [`DataMap`][ref-datamap] or any other path that produces a complete SWAIG function object (rather than a `SkillToolDefinition` handled by the default tool pipeline). When a skill is added to an agent, `AgentBase.addSkill()` iterates the result and registers each entry via `registerSwaigFunction`. Default returns `[]`. Skills that only use the declarative `getTools()` path do not need to override this method. ## **Returns** `Record[]` — array of pre-built SWAIG function dicts. ## **Example** ```typescript {6-10} import { SkillBase, DataMap } from '@signalwire/sdk'; class LookupSkill extends SkillBase { static override SKILL_NAME = 'lookup'; static override SKILL_DESCRIPTION = 'Server-side lookup via DataMap'; override getDataMapTools(): Record[] { const dm = new DataMap('do_lookup') .description('Look up a value by id') .parameter('id', 'string', 'Record id', { required: true }) .webhook('GET', 'https://api.example.com/lookup/${args.id}'); return [dm.toSwaigFunction()]; } } ``` > Return fully-built SWAIG function dicts (DataMap-style tools).