Skip to main content
Glama

Marketingburos

submit_rfq

Submit a Request For Quote (RFQ) on behalf of a buyer to 1-3 selected marketing agencies via marketingburos.nl. Input is the v1 wizard profile (specialisms, industry, company size, budget, timeline, ...) plus contact details and selectedAgencySlugs (slugs from search_agencies or find_agency). Nothing is sent to agencies automatically: the RFQ is queued and a human operator releases it. Success returns {rfqId, queuedAgencySlugs, notMatchableSlugs}: a selected agency that is not in the match pool for this buyer profile is skipped (listed in notMatchableSlugs), not an error, unless none remain. Failures return isError with one of: invalid_input (with issues[]), unknown_agency (with slugs[] that do not exist or cannot be contacted), rate_limit_ip / rate_limit_email (resetAt included when raised by this server), invalid / invalid_email / disposable_email (upstream validation), no_selection (no selected agency is in the match pool), upstream_failure.

Input Schema

NameRequiredDescriptionDefault
websiteNoLeave empty. Anti-spam honeypot field.
industryYesBuyer's industry (a value from categories://list doelgroep_options, or 'Anders').
timelineYesWhen the work should start.
agencySizeYesPreferred agency size in employees.
budgetBandYesBuyer's budget in EUR.
companySizeYesBuyer's company size in employees.
contactNameYesBuyer's full name.
culturalFitYesThree 0-10 sliders: [data-driven, specialist, hands-on]. Use [5,5,5] when unknown.
specialismsYes1-5 specialism slugs the buyer needs (see the categories://list resource).
toelichtingNoOptional free-text brief for the agencies (Dutch or English).
contactEmailYesBuyer's business e-mail (no disposable domains).
contactPhoneNoOptional phone number (digits, spaces, +, (), -).
contactCompanyYesBuyer's company name.
industryFreetextNoRequired only when industry is 'Anders': the buyer's industry in their own words.
clientOrientationNoOptional: does the buyer sell b2b, b2c or both.
selectedAgencySlugsYes1-3 agency slugs (as returned by search_agencies or find_agency) the buyer wants to receive this RFQ.
specialistFullServiceSliderYes0 = full-service agency, 10 = niche specialist.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / contactEmail / pattern
      Added value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    • changedInput schema / properties / culturalFit / items
      Previous value: -[
      -  {
      -    "maximum": 10,
      -    "minimum": 0,
      -    "type": "number"
      -  },
      -  {
      -    "maximum": 10,
      -    "minimum": 0,
      -    "type": "number"
      -  },
      -  {
      -    "maximum": 10,
      -    "minimum": 0,
      -    "type": "number"
      -  }
      -]New value: +false
    • addedInput schema / properties / culturalFit / prefixItems
      Added value: +[
      +  {
      +    "maximum": 10,
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "maximum": 10,
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "maximum": 10,
      +    "minimum": 0,
      +    "type": "number"
      +  }
      +]
  2. Changed20 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / agencySize / description
      Added value: +"Preferred agency size in employees."
    • addedInput schema / properties / budgetBand / description
      Added value: +"Buyer's budget in EUR."
    • addedInput schema / properties / clientOrientation / description
      Added value: +"Optional: does the buyer sell b2b, b2c or both."
    • addedInput schema / properties / companySize / description
      Added value: +"Buyer's company size in employees."
    • addedInput schema / properties / contactCompany / description
      Added value: +"Buyer's company name."
    • addedInput schema / properties / contactEmail / description
      Added value: +"Buyer's business e-mail (no disposable domains)."
    • addedInput schema / properties / contactName / description
      Added value: +"Buyer's full name."
    • addedInput schema / properties / contactPhone / description
      Added value: +"Optional phone number (digits, spaces, +, (), -)."
    • addedInput schema / properties / culturalFit / description
      Added value: +"Three 0-10 sliders: [data-driven, specialist, hands-on]. Use [5,5,5] when unknown."
    • addedInput schema / properties / industry / description
      Added value: +"Buyer's industry (a value from categories://list doelgroep_options, or 'Anders')."
    • addedInput schema / properties / industryFreetext / description
      Added value: +"Required only when industry is 'Anders': the buyer's industry in their own words."
    • removedInput schema / properties / selectedAgencyIds
      Removed value: -{
      -  "items": {
      -    "format": "uuid",
      -    "type": "string"
      -  },
      -  "maxItems": 3,
      -  "minItems": 1,
      -  "type": "array"
      -}
    • addedInput schema / properties / selectedAgencySlugs
      Added value: +{
      +  "description": "1-3 agency slugs (as returned by search_agencies or find_agency) the buyer wants to receive this RFQ.",
      +  "items": {
      +    "maxLength": 120,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 3,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / specialisms / description
      Added value: +"1-5 specialism slugs the buyer needs (see the categories://list resource)."
    • addedInput schema / properties / specialistFullServiceSlider / description
      Added value: +"0 = full-service agency, 10 = niche specialist."
    • addedInput schema / properties / timeline / description
      Added value: +"When the work should start."
    • addedInput schema / properties / toelichting / description
      Added value: +"Optional free-text brief for the agencies (Dutch or English)."
    • addedInput schema / properties / website / description
      Added value: +"Leave empty. Anti-spam honeypot field."
    • changedInput schema / required
      Previous value: -[
      -  "specialisms",
      -  "industry",
      -  "companySize",
      -  "agencySize",
      -  "specialistFullServiceSlider",
      -  "culturalFit",
      -  "budgetBand",
      -  "timeline",
      -  "contactEmail",
      -  "contactName",
      -  "contactCompany",
      -  "selectedAgencyIds"
      -]New value: +[
      +  "specialisms",
      +  "industry",
      +  "companySize",
      +  "agencySize",
      +  "specialistFullServiceSlider",
      +  "culturalFit",
      +  "budgetBand",
      +  "timeline",
      +  "contactEmail",
      +  "contactName",
      +  "contactCompany",
      +  "selectedAgencySlugs"
      +]
  3. First observed

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: the key non-obvious trait is disclosed ('Nothing is sent to agencies automatically: the RFQ is queued and a human operator releases it'), along with skip-vs-error semantics and a named error taxonomy including IP/e-mail rate limits with resetAt. Remaining gaps are idempotency/duplicate-submission behavior and what happens to the buyer's contact data, which matter for a 17-param mutation.

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?

One dense paragraph, correctly front-loaded with purpose and the crucial 'not sent automatically' caveat before the return shape and error list. The trailing error-code enumeration is long and includes a slightly loose '...' in the profile listing, but each element conveys actionable information.

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 17-parameter mutation with no output schema and no annotations, the description supplies the missing pieces: the success payload shape ({rfqId, queuedAgencySlugs, notMatchableSlugs}), the partial-success rule, and enumerated failure modes. An agent can call it and interpret the result without further context.

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%, so the schema already documents all 17 parameters, establishing a baseline of 3. The description adds only the wizard-profile grouping and the source of selectedAgencySlugs, plus the cross-field rule that an out-of-pool slug is skipped rather than failing — useful but marginal on top of a fully documented schema.

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 and resource ('Submit a Request For Quote') plus the target (1-3 selected marketing agencies) and the channel (marketingburos.nl). It also implicitly distinguishes itself from the search siblings by naming search_agencies/find_agency as the source of the slugs, so an agent knows this is the terminal action in that workflow.

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?

Clear context: requires slugs produced by search_agencies or find_agency, 1-3 agencies, and it explains the not-matchable fallback ('unless none remain'). It does not, however, say when to prefer this over the sibling match_brief or what to do after success, so there is no explicit exclusion set.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources