Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,558Letters: 14Defects: 1,336counted 3 min ago
teppi

Server definition

Hash
sha256:121215116deb0a7cd6c8ec668b195d51b1c89190092dd262f1ec8c4a7461504a
What it is
What a remote MCP server returned when asked what it offers: 23 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Configure DataMerge API authentication (required before using other tools if DATAMERGE_API_KEY is not set).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "apiKey": { "description": "DataMerge API key. Get one at https://app.datamerge.ai (20 free credits).", "type": "string" }, "baseUrl": { "description": "Optional custom API base URL (default: https://api.datamerge.ai).", "type": "string" } }, "type": "object" }, "name": "configure_datamerge", "outputSchema": null }, { "description": "POST /v1/contact/enrich. Enrich specific contacts by LinkedIn URL or name+domain. Returns a job_id (async, 202).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "contacts": { "description": "Array of contacts: either { linkedin_url } or { firstname, lastname, domain }.", "items": { "additionalProperties": {}, "type": "object" }, "type": "array" }, "enrich_fields": { "description": "Fields to enrich, e.g. [\"contact.emails\", \"contact.phones\"].", "items": { "type": "string" }, "type": "array" } }, "required": [ "contacts", "enrich_fields" ], "type": "object" }, "name": "contact_enrich", "outputSchema": null }, { "description": "POST /v1/contact/search. Search for contacts at specified companies. Returns a job_id (async, 202). enrich_fields required (at least one of contact.emails or contact.phones). Use company_list (slug) instead of domains to search a saved list.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "company_list": { "description": "List slug instead of domains.", "type": "string" }, "domains": { "description": "Company domains to search.", "items": { "type": "string" }, "type": "array" }, "enrich_fields": { "description": "At least one of \"contact.emails\" or \"contact.phones\". Each email costs 1 credit; phone 4 credits.", "items": { "type": "string" }, "type": "array" }, "job_titles": { "additionalProperties": false, "description": "Optional include/exclude job title filters.", "properties": { "exclude": { "items": { "type": "string" }, "type": "array" }, "include": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "Priority-keyed: {\"1\": [\"CEO\"], \"2\": [\"VP Sales\"]} — priority \"1\" is highest.", "type": "object" } }, "type": "object" }, "location": { "additionalProperties": {}, "description": "Location filters: include/exclude with type and value (country, region, city).", "type": "object" }, "max_results_per_company": { "description": "Max contacts per company.", "type": "number" }, "webhook": { "description": "Optional webhook URL to notify when the job completes.", "type": "string" } }, "required": [ "enrich_fields" ], "type": "object" }, "name": "contact_search", "outputSchema": null }, { "description": "POST /v1/contact/search/unenriched. Find contacts without running email/phone enrichment. Returns a job_id; contacts are created in `unconfirmed` status with stable ids. BETA: requires the `contact_search_unenriched` flag on the account.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "company_list": { "description": "Alternative to domains: list slug to search across.", "type": "string" }, "domains": { "description": "Company domains to search.", "items": { "type": "string" }, "type": "array" }, "job_titles": { "additionalProperties": false, "description": "Optional include/exclude job title filters (priority-keyed include).", "properties": { "exclude": { "items": { "type": "string" }, "type": "array" }, "include": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "Priority-keyed: {\"1\": [\"CEO\"], \"2\": [\"VP\"]} — priority \"1\" is highest.", "type": "object" } }, "type": "object" }, "location": { "additionalProperties": {}, "type": "object" }, "max_results_per_company": { "type": "integer" }, "webhook": { "type": "string" } }, "type": "object" }, "name": "contact_search_unenriched", "outputSchema": null }, { "description": "POST /v1/lists. Body: name, object_type (company or contact).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "name": { "description": "Display name for the new list.", "type": "string" }, "object_type": { "description": "Whether the list holds company or contact records.", "enum": [ "company", "contact" ], "type": "string" } }, "required": [ "name", "object_type" ], "type": "object" }, "name": "create_list", "outputSchema": null }, { "description": "DELETE /v1/lists/{object_type}/{list_slug}. System lists cannot be deleted.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "list_slug": { "description": "List slug of the list to delete. System lists cannot be deleted.", "type": "string" }, "object_type": { "description": "Type of list: company or contact.", "enum": [ "company", "contact" ], "type": "string" } }, "required": [ "object_type", "list_slug" ], "type": "object" }, "name": "delete_list", "outputSchema": null }, { "description": "Get a single company record. GET /v1/company/get?datamerge_id={id} or ?record_id={uuid}. Provide either datamerge_id (charges 1 credit) or record_id (free). Not both. Optional: add_to_list — list slug to add the company to (only with datamerge_id).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "add_to_list": { "description": "List slug to add the company to. Only valid when using datamerge_id.", "type": "string" }, "datamerge_id": { "description": "DataMerge company ID. Charges 1 credit.", "type": "string" }, "record_id": { "description": "Your record UUID from a previous enrichment. Does not consume credits.", "type": "string" } }, "type": "object" }, "name": "get_company", "outputSchema": null }, { "description": "GET /v1/company/enrich/{job_id}/status. Poll until status is \"completed\" or \"failed\". Response includes record_ids. Status values: queued · processing · completed · failed.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "job_id": { "description": "The enrichment job ID returned by start_company_enrichment. Poll until status is \"completed\" or \"failed\".", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "get_company_enrichment_result", "outputSchema": null }, { "description": "Get all entities in the same global ultimate hierarchy. GET /v1/company/hierarchy?datamerge_id={id}. Parameters: include_names (bool, charges 1 credit), include_branches (bool), only_subsidiaries (bool), max_level (int), country_code (array), page (int).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "country_code": { "description": "Filter entities by ISO 2-letter country code(s).", "items": { "type": "string" }, "type": "array" }, "datamerge_id": { "description": "DataMerge company ID. Required.", "minLength": 1, "type": "string" }, "include_branches": { "description": "Include branch entities.", "type": "boolean" }, "include_names": { "description": "Include entity names. Charges 1 credit.", "type": "boolean" }, "max_level": { "description": "Maximum hierarchy depth.", "type": "integer" }, "only_subsidiaries": { "description": "Return only subsidiaries.", "type": "boolean" }, "page": { "description": "Page number for paginated results (1-based).", "type": "integer" } }, "required": [ "datamerge_id" ], "type": "object" }, "name": "get_company_hierarchy", "outputSchema": null }, { "description": "GET /v1/contact/get?record_id={uuid}. Retrieve a specific contact by record UUID. Never charges credits.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "record_id": { "description": "Contact record UUID from a previous contact_search or contact_enrich job. Does not consume credits.", "type": "string" } }, "required": [ "record_id" ], "type": "object" }, "name": "get_contact", "outputSchema": null }, { "description": "GET /v1/contact/enrich/{job_id}/status. Poll until status is \"completed\" or \"failed\". Response includes record_ids.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "job_id": { "description": "The contact enrich job ID returned by contact_enrich. Poll until status is \"completed\" or \"failed\".", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "get_contact_enrich_status", "outputSchema": null }, { "description": "GET /v1/contact/search/{job_id}/status. Poll until status is \"completed\" or \"failed\". Response includes record_ids.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "job_id": { "description": "The contact search job ID returned by contact_search. Poll until status is \"completed\" or \"failed\".", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "get_contact_search_status", "outputSchema": null }, { "description": "GET /v1/credits/balance. Returns credits_balance and balances (one_off, recurring, rollover, total).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_": { "description": "This tool takes no required parameters. Call with no arguments.", "type": "string" } }, "type": "object" }, "name": "get_credits_balance", "outputSchema": null }, { "description": "GET /v1/lists/{object_type}/{list_slug}. object_type: company or contact. list_slug: e.g. target-accounts. Parameters: page, page_size (max 100), sort_by, sort_order (asc/desc).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "list_slug": { "description": "URL-safe list identifier (e.g. target-accounts).", "type": "string" }, "object_type": { "description": "Type of list: company or contact.", "enum": [ "company", "contact" ], "type": "string" }, "page": { "description": "Page number for pagination (1-based).", "type": "number" }, "page_size": { "description": "Items per page (max 100).", "type": "number" }, "sort_by": { "description": "Field name to sort by.", "type": "string" }, "sort_order": { "description": "Sort direction: asc or desc.", "enum": [ "asc", "desc" ], "type": "string" } }, "required": [ "object_type", "list_slug" ], "type": "object" }, "name": "get_list_items", "outputSchema": null }, { "description": "Check if the DataMerge API client is configured and can connect. Uses /auth/info.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "_": { "description": "This tool takes no required parameters. Call with no arguments.", "type": "string" } }, "type": "object" }, "name": "health_check", "outputSchema": null }, { "description": "GET /v1/lists. Optional: object_type=company or object_type=contact.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "object_type": { "description": "Filter lists by object type: company or contact.", "enum": [ "company", "contact" ], "type": "string" } }, "type": "object" }, "name": "list_lists", "outputSchema": null }, { "description": "DELETE /v1/lists/{object_type}/{list_slug}/{item_id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "item_id": { "description": "Record UUID of the company or contact to remove from the list.", "type": "string" }, "list_slug": { "description": "List slug containing the item.", "type": "string" }, "object_type": { "description": "Type of list: company or contact.", "enum": [ "company", "contact" ], "type": "string" } }, "required": [ "object_type", "list_slug", "item_id" ], "type": "object" }, "name": "remove_list_item", "outputSchema": null }, { "description": "Agent-friendly company enrichment. On the first call provide enrichment params (domain, domains, company_name, country_code, etc.); the server starts the job and polls internally for up to ~25s. If the job is still running, the response will be {status:\"pending\", continuation_token, attempt, elapsed_seconds}. When you see status \"pending\" you MUST immediately call run_company_enrichment again with only continuation_token set — do not ask the user, do not call any other tool first. Typical jobs finish within 5 attempts (~125s). On completion the response contains record_ids and full company records.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "company_name": { "type": "string" }, "continuation_token": { "description": "Opaque token from a prior pending response. When set, all other params are ignored.", "type": "string" }, "country_code": { "type": "string" }, "domain": { "description": "Company website domain.", "type": "string" }, "domains": { "description": "Batch: multiple domains in one job.", "items": { "type": "string" }, "type": "array" }, "global_ultimate": { "type": "boolean" }, "list": { "description": "List slug to add enriched companies to.", "type": "string" }, "max_wait_seconds": { "description": "Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.", "type": "number" }, "refresh": { "description": "When true, bypass DataMerge dedup: always re-enrich and charge credits even if the domain is already on a list. Use for multi-tenant resellers (e.g. Faro).", "type": "boolean" }, "skip_if_exists": { "type": "boolean" }, "strict_match": { "type": "boolean" }, "webhook_url": { "type": "string" } }, "type": "object" }, "name": "run_company_enrichment", "outputSchema": null }, { "description": "Agent-friendly contact enrichment. On the first call provide contacts and enrich_fields; the server starts the job and polls internally for up to ~25s. If still running, returns {status:\"pending\", continuation_token, attempt, elapsed_seconds} — you MUST immediately call run_contact_enrich again with only continuation_token set. Do not ask the user. Typical jobs finish within 5 attempts. On completion the response contains record_ids and full contact records.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "contacts": { "description": "Array of contacts. Identify each with `linkedin_url` and/or (`firstname`+`lastname`). ALWAYS include `domain` (company website) when you know it — FullEnrich's email accuracy drops sharply without a domain hint.", "items": { "additionalProperties": {}, "type": "object" }, "type": "array" }, "continuation_token": { "description": "Opaque token from a prior pending response. When set, all other params are ignored.", "type": "string" }, "enrich_fields": { "description": "e.g. [\"contact.emails\",\"contact.phones\"].", "items": { "type": "string" }, "type": "array" }, "max_wait_seconds": { "description": "Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.", "type": "number" }, "refresh": { "description": "When true, bypass DataMerge dedup: always re-enrich every contact and charge credits, even if the same contact was enriched in the last 30 days. Use for multi-tenant resellers (e.g. Faro).", "type": "boolean" }, "return_any_domain": { "description": "Set to true to allow enrichment for contacts that have no `domain`. FullEnrich will pick whichever current employer it considers most probable, which may not match what you expect for people with multiple plausible affiliations. Default false: server returns `status: \"domain_required\"` if any contact lacks `domain`.", "type": "boolean" } }, "type": "object" }, "name": "run_contact_enrich", "outputSchema": null }, { "description": "Agent-friendly contact search. On the first call provide domains and enrich_fields; the server starts the job and polls internally for up to ~25s. If still running, returns {status:\"pending\", continuation_token, attempt, elapsed_seconds} — you MUST immediately call run_contact_search again with only continuation_token set. Do not ask the user. On completion the response contains record_ids, full contact records, and credits_consumed.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "company_list": { "description": "Alternative to `domains`: company list slug.", "type": "string" }, "continuation_token": { "description": "Opaque token from a prior pending response. When set, all other params are ignored.", "type": "string" }, "domains": { "description": "Company domains to search for contacts at.", "items": { "type": "string" }, "type": "array" }, "enrich_fields": { "description": "At least one of \"contact.work_emails\", \"contact.emails\", \"contact.phones\".", "items": { "type": "string" }, "type": "array" }, "job_titles": { "additionalProperties": false, "description": "Optional include/exclude job title filters.", "properties": { "exclude": { "items": { "type": "string" }, "type": "array" }, "include": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "type": "object" }, "list": { "description": "Target contact list slug for results.", "type": "string" }, "location": { "additionalProperties": false, "description": "Optional include/exclude location filters.", "properties": { "exclude": { "items": { "additionalProperties": false, "properties": { "type": { "type": "string" }, "value": { "type": "string" } }, "required": [ "type", "value" ], "type": "object" }, "type": "array" }, "include": { "items": { "additionalProperties": false, "properties": { "type": { "type": "string" }, "value": { "type": "string" } }, "required": [ "type", "value" ], "type": "object" }, "type": "array" } }, "type": "object" }, "max_results_per_company": { "description": "Max contacts to return per company.", "type": "integer" }, "max_wait_seconds": { "description": "Server-side wait budget per call. Default 25, hard-capped to stay under 30s timeouts.", "type": "number" }, "refresh": { "description": "When true, downstream enrichment bypasses dedup and always charges credits for each contact. Use for multi-tenant resellers (e.g. Faro).", "type": "boolean" } }, "type": "object" }, "name": "run_contact_search", "outputSchema": null }, { "description": "POST /v1/contact/search/unenriched/sync. Synchronous unenriched contact search — returns contacts inline (no polling). Requires the `contact_search_unenriched` beta flag. Limits: 10 domains and max_results_per_company ≤ 10. Response includes credits_consumed computed as 0.5 × len(contacts).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "domains": { "description": "Up to 10 company domains.", "items": { "type": "string" }, "type": "array" }, "job_titles": { "additionalProperties": false, "description": "Optional include/exclude job title filters.", "properties": { "exclude": { "items": { "type": "string" }, "type": "array" }, "include": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "Priority-keyed: {\"1\": [\"CEO\"], \"2\": [\"VP\"]} — priority \"1\" is highest. The API flattens this to a single array for the sync endpoint.", "type": "object" } }, "type": "object" }, "list": { "description": "Target contact list slug.", "type": "string" }, "location": { "additionalProperties": {}, "description": "Optional include/exclude locations.", "type": "object" }, "max_results_per_company": { "description": "Max contacts per company (1–10).", "type": "integer" } }, "required": [ "domains" ], "type": "object" }, "name": "run_contact_search_unenriched", "outputSchema": null }, { "description": "POST /v1/company/enrich. Enrich one or more companies by domain. Returns a job_id (async). Single: domain. Batch: domains, country_code, global_ultimate, list, skip_if_exists.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "company_name": { "description": "Company name (used when domain is not available).", "type": "string" }, "country_code": { "description": "Optional ISO 2-letter country code to improve matching.", "type": "string" }, "domain": { "description": "Company website domain (e.g. example.com).", "type": "string" }, "domains": { "description": "Batch: multiple domains to enrich.", "items": { "type": "string" }, "type": "array" }, "global_ultimate": { "description": "When true, always return the global ultimate parent.", "type": "boolean" }, "list": { "description": "List slug to add enriched companies to.", "type": "string" }, "skip_if_exists": { "description": "When true, skip domains that are already in the list.", "type": "boolean" }, "strict_match": { "description": "When true, require a strict match for enrichment.", "type": "boolean" }, "webhook_url": { "description": "Optional webhook URL to receive job completion notifications.", "type": "string" } }, "type": "object" }, "name": "start_company_enrichment", "outputSchema": null }, { "description": "POST /v1/company/enrich then poll GET /v1/company/enrich/{job_id}/status until status is \"completed\" or \"failed\" or timeout. Same params as start_company_enrichment plus poll_interval_seconds and timeout_seconds.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "company_name": { "description": "Company name (used when domain is not available).", "type": "string" }, "country_code": { "description": "Optional ISO 2-letter country code to improve matching.", "type": "string" }, "domain": { "description": "Company website domain (e.g. example.com).", "type": "string" }, "domains": { "description": "Batch: multiple domains to enrich in one job.", "items": { "type": "string" }, "type": "array" }, "global_ultimate": { "description": "When true, always return the global ultimate parent.", "type": "boolean" }, "list": { "description": "List slug to add enriched companies to.", "type": "string" }, "poll_interval_seconds": { "description": "How often to poll the job status (in seconds). Defaults to 5 seconds.", "type": "number" }, "skip_if_exists": { "description": "When true, skip domains already in the list.", "type": "boolean" }, "strict_match": { "description": "When true, require a strict match for enrichment.", "type": "boolean" }, "timeout_seconds": { "description": "Maximum time to wait for completion (in seconds). Defaults to 60 seconds.", "type": "number" }, "webhook_url": { "description": "Optional webhook URL to receive job completion notifications.", "type": "string" } }, "type": "object" }, "name": "start_company_enrichment_and_wait", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:121215116deb0a7cd6c8ec668b195d51b1c89190092dd262f1ec8c4a7461504a | sha256sum